Skip to content

Conversation

@alexei-led
Copy link
Owner

Summary

  • Graceful shutdown: Handle SIGTERM properly for clean container termination
  • Package rename: Rename to aws-mcp for simpler uvx aws-mcp usage
  • CI optimization: Reuse build artifacts between jobs, fix PyPI publish step
  • Documentation: Rewrite README with end-user focus

Changes

Core

  • Add signal handler for graceful shutdown on SIGTERM (__main__.py)
  • Rename package from aws-mcp-server to aws-mcp in pyproject.toml

CI/CD

  • Optimize workflows to build once and reuse artifacts
  • Fix uv publish to work without repository checkout (uv publish dist/*)
  • Simplify Dockerfile by using pre-built wheel

Documentation

  • Rewrite README for end-user focus (installation, usage, configuration)
  • Streamline USAGE.md

Test plan

  • CI passes (lint, tests, build)
  • Docker image builds and runs correctly
  • uvx aws-mcp works with new package name
  • Graceful shutdown handles SIGTERM in containers

Rename from alexei-led.aws-mcp-server to aws-mcp so users can run:
uvx aws-mcp

Entry point also renamed to aws-mcp for consistency.
Use os._exit(0) instead of sys.exit(0) in signal handlers.
sys.exit() raises SystemExit which gets caught by asyncio
event loop, preventing clean shutdown.
- Simplify Dockerfile to install pre-built wheel
- Build package once, reuse for Docker and PyPI
- Merge CI jobs for faster execution
- Update to latest GitHub Actions (artifact v5)
- Ensure consistent versioning across package and Docker
- MCP configuration (Claude Code/Desktop) is now front and center
- Removed standalone commands (useless without MCP context)
- Added all environment variables verified from source code
- USAGE.md now focused on tools/resources/prompts only
- Links to README for setup instructions
The publish job downloads only the wheel artifact without checking
out the repository. uv publish without arguments needs pyproject.toml,
so pass dist/* explicitly to publish from artifacts alone.
@codecov
Copy link

codecov bot commented Nov 30, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 91.29%. Comparing base (a8ed2ec) to head (48671b0).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files

Impacted file tree graph

@@           Coverage Diff           @@
##             main      #26   +/-   ##
=======================================
  Coverage   91.29%   91.29%           
=======================================
  Files           8        8           
  Lines         804      804           
=======================================
  Hits          734      734           
  Misses         70       70           
Files with missing lines Coverage Δ
src/aws_mcp_server/__init__.py 100.00% <100.00%> (ø)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

The Dockerfile expects a pre-built wheel from `uv build`. The
.dockerignore was excluding dist/, causing Docker builds to fail.

The pre-built wheel approach works for multi-arch because:
- aws-mcp wheel is pure Python (py3-none-any)
- pip downloads arch-specific deps (cryptography, pydantic-core) from PyPI
- Dockerfile uses --platform=${TARGETPLATFORM} for correct base image

Benefits over building inside Docker:
- Faster builds (no build tools needed in container)
- Correct versioning (setuptools_scm has git history)
- Smaller build context (~32KB wheel vs full source)
@alexei-led alexei-led merged commit c8db24c into main Nov 30, 2025
4 checks passed
@alexei-led alexei-led deleted the fix/graceful-shutdown branch November 30, 2025 18:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants