Files
autocad-mcp-pro/docs/RELEASE-DISTRIBUTION.md
Umutcan EdizsalanandCursor 2f56a73093 feat(release): CI matrix, PyPI trusted-publishing pipeline, registry manifest, Docker fix
- ci.yml: ruff lint/format, Linux 3.11/3.12 tests + coverage, Windows mocked-COM leg, package build + clean-venv wheel smoke, Docker smoke, server.json schema validation
- release.yml: tag -> test gate -> tag/version check -> build -> PyPI trusted publishing (OIDC) -> GitHub Release
- pyproject: SPDX license, authors, keywords, classifiers, project URLs, autocad-mcp-pro console alias; version 1.4.0
- Dockerfile: ship engineering/ + version.py (image previously missed both -> engineering tools failed in containers); healthcheck imports engineering
- server.json: MCP registry manifest (io.github.u-c4n/autocad-mcp, pypi package)
- docs/RELEASE-DISTRIBUTION.md: one-time owner actions (PyPI trusted publisher, mcp-publisher login) + directory submissions runbook

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 15:15:07 +03:00

2.4 KiB

Release & Distribution Runbook (v1.4.0+)

The code side of a release is fully automated; three account-bound steps need a human once, plus the directory submissions. Track them here.

One-time setup (owner action)

  • PyPI trusted publisher — on https://pypi.org/manage/account/publishing/ add a pending publisher for project autocad-mcp-pro: repository U-C4N/Autocad-MCP, workflow release.yml, environment pypi. (No API token is stored anywhere; release.yml uses OIDC.)
  • GitHub environment — create the pypi environment in the repo settings (Settings → Environments) so the publish job can bind to it.
  • MCP registry login — install mcp-publisher, then mcp-publisher login github (authenticates the io.github.u-c4n namespace).

Every release

  1. Bump pyproject.toml + server.json versions, add the CHANGELOG section, update the README snapshot line — tests/test_release_consistency.py enforces all of it.
  2. Push main, wait for CI to go green (lint, linux, windows, package, docker, registry-validate).
  3. Tag and push: git tag v1.4.0 && git push origin v1.4.0. release.yml runs the test gate, verifies tag == package version, builds, publishes to PyPI via trusted publishing and cuts the GitHub Release.
  4. Verify: pip install autocad-mcp-pro==<version> in a clean venv; uvx autocad-mcp-pro --help.
  5. Publish the registry manifest: mcp-publisher publish (validates server.json, checks the mcp-name marker in the PyPI README).

Directory listings (submit once, then keep fresh)

  • Glama — https://glama.ai/mcp/servers (auto-indexes GitHub; claim the server page and verify metadata).
  • mcpservers.org — submit via their GitHub repo PR flow.
  • awesome-mcp-servers — PR adding the server under CAD/engineering.
  • Smithery — optional; requires a smithery.yaml (evaluate demand first).

Benchmark refresh (per release)

python -m benchmarks.run_competitors --server autocad-mcp-pro --backend ezdxf
python -m benchmarks.run_competitors --server puran-water-autocad-mcp --backend ezdxf
python -m benchmarks.run_competitors --server beiming183-autocad-mcp --backend ezdxf
# sanitize + copy reports into benchmarks/results/published/, then:
python -m benchmarks.render_live_chart

Bump the competitor pins in benchmarks/competitors.yaml deliberately (new SHA = re-read their tool contracts before trusting the mappings).