- 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>
2.4 KiB
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: repositoryU-C4N/Autocad-MCP, workflowrelease.yml, environmentpypi. (No API token is stored anywhere;release.ymluses OIDC.) - GitHub environment — create the
pypienvironment in the repo settings (Settings → Environments) so the publish job can bind to it. - MCP registry login — install
mcp-publisher, thenmcp-publisher login github(authenticates theio.github.u-c4nnamespace).
Every release
- Bump
pyproject.toml+server.jsonversions, add the CHANGELOG section, update the README snapshot line —tests/test_release_consistency.pyenforces all of it. - Push
main, wait for CI to go green (lint, linux, windows, package, docker, registry-validate). - Tag and push:
git tag v1.4.0 && git push origin v1.4.0.release.ymlruns the test gate, verifies tag == package version, builds, publishes to PyPI via trusted publishing and cuts the GitHub Release. - Verify:
pip install autocad-mcp-pro==<version>in a clean venv;uvx autocad-mcp-pro --help. - Publish the registry manifest:
mcp-publisher publish(validatesserver.json, checks themcp-namemarker 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).