@@ -379,12 +379,96 @@ export LOG_LEVEL=DEBUG
379379uv run mcp_proxy_for_aws/server.py < endpoint>
380380```
381381
382+ ## Releasing to PyPI
383+
384+ The project uses automated PyPI publishing through GitHub Actions. Releases are triggered by creating a GitHub Release.
385+
386+ ### Release Process
387+
388+ 1 . ** Ensure all changes are merged to main branch**
389+ ``` bash
390+ git checkout main
391+ git pull origin main
392+ ```
393+
394+ 2 . ** Create GitHub Release**
395+
396+ Go to the [ Releases page] ( https://github.com/aws/mcp-proxy-for-aws/releases ) and click "Draft a new release", then fill in:
397+
398+ - ** Tag** : ` v1.10.0 ` (must start with 'v' and follow semantic versioning)
399+ - ** Target** : ` main `
400+ - ** Title** : ` v1.10.0 `
401+ - ** Description** : Click "Generate release notes" for auto-generated notes
402+
403+ Click ** "Publish release"** (not "Save draft")
404+
405+ 3 . ** Automated Publishing**
406+
407+ Once the release is published, GitHub Actions will automatically:
408+ - Run all tests and linting checks
409+ - Build distribution packages (wheel and source)
410+ - Publish to PyPI using Trusted Publishing
411+
412+ Monitor the workflow at: [ Actions tab] ( https://github.com/aws/mcp-proxy-for-aws/actions )
413+
414+ ### Version Numbering
415+
416+ Follow [ Semantic Versioning] ( https://semver.org/ ) :
417+ - ** MAJOR** (v2.0.0): Breaking changes
418+ - ** MINOR** (v1.10.0): New features, backward compatible
419+ - ** PATCH** (v1.10.1): Bug fixes, backward compatible
420+
421+ Version is managed in ` pyproject.toml ` : ` version = "1.10.0" `
422+
423+ Use Commitizen to bump versions automatically:
424+ ``` bash
425+ # Bump version based on conventional commits
426+ uv run cz bump
427+
428+ # This will update both files and create a git tag
429+ ```
430+
431+ ### Testing Releases
432+
433+ Before creating a production release, you can test with TestPyPI:
434+
435+ ``` bash
436+ # Create a test tag
437+ git tag v1.10.0-beta
438+ git push origin v1.10.0-beta
439+
440+ # This triggers the TestPyPI workflow
441+ # Monitor at: https://github.com/aws/mcp-proxy-for-aws/actions
442+ ```
443+
444+ ### Troubleshooting Releases
445+
446+ ** Release workflow failed:**
447+ - Check the Actions tab for error details
448+ - Ensure all tests pass locally: ` uv run pytest `
449+ - Verify the tag follows semantic versioning format
450+
451+ ** Version already exists on PyPI:**
452+ - PyPI doesn't allow re-uploading the same version
453+ - Create a new patch version (e.g., v1.10.1)
454+ - Delete and recreate the tag if needed:
455+ ``` bash
456+ git tag -d v1.10.0
457+ git push origin --delete v1.10.0
458+ ```
459+
460+ ** Trusted Publishing authentication failed:**
461+ - Verify PyPI Trusted Publisher is configured correctly
462+ - Check that the workflow file name matches the PyPI configuration
463+ - Ensure the environment name is set to ` pypi `
464+
382465## Additional Resources
383466
384467- [ MCP Specification] ( https://spec.modelcontextprotocol.io/ )
385468- [ FastMCP Documentation] ( https://fastmcp.readthedocs.io/ )
386469- [ AWS SDK for Python (Boto3)] ( https://boto3.amazonaws.com/v1/documentation/api/latest/index.html )
387470- [ Project README] ( README.md )
471+ - [ PyPI Publishing Guide] ( https://packaging.python.org/en/latest/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows/ )
388472
389473---
390474
0 commit comments