You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: v0.4.0 — packaging pipeline and rhino3dm-mcp PyPI debut
YAK packaging pipeline
----------------------
`scripts/publish-yak.sh` is added so that the C# bridge plugin ships as
a Yak package alongside the raw `.rhp`. The script stages the built
plugin under `rhino_plugin/csharp/yak-stage/{win,mac}/` together with a
platform-specific `manifest.yml` and the shared `rhino-mcp.png` icon,
then drives `yak.exe build` to produce the `.yak` file. The release
workflow gains a `build-yak` job that runs the script on a Windows
runner with the Rhino 8 Yak CLI when present and attaches the
`.yak` files to the GitHub Release.
Version sync and docs
---------------------
`pyproject.toml`, `src/rhino_mcp/__init__.py`,
`rhino_plugin/csharp/manifest.yml`, and the staged
`rhino_plugin/csharp/yak-stage/{win,mac}/manifest.yml` are all bumped
to `0.4.0` together so that the YAK package and the PyPI wheel ship as
a matched pair. `pip install` / `uvx` snippets in `README.md`,
`README.ko.md`, and `docs/{en,ko}/{installation,configuration}.md`
swap to the new distribution name; the `rhino-mcp` CLI command stays.
The legacy `assets/rhino-logo.png` is replaced with
`assets/rhino-mcp.png` so the README header and the YAK plugin icon
share one asset. `CHANGELOG.md` gains a `[0.4.0]` entry covering
the packaging pipeline and the PyPI rename in both English and
Korean.
One-shot Claude Desktop wiring
------------------------------
A new `rhino-mcp install` sub-command writes (or updates) the
`mcpServers.rhino-mcp` entry inside `claude_desktop_config.json` so
end users no longer have to edit the JSON by hand after `pip install`.
The command auto-detects the platform-specific config path on macOS,
Windows, and Linux, preserves any other registered MCP servers, writes
a timestamped `.bak.*` copy of the previous file, and is idempotent on
re-run. Flags: `--mode {auto,standalone,bridge}`,
`--transport {stdio,http}`, `--name`, `--launcher
{auto,uvx,rhino-mcp,python}`, `--config-path`, `--force`,
`--no-backup`, `--dry-run`. The implementation lives in
`src/rhino_mcp/install.py` and is wired into `server.py` as an argparse
sub-command so existing invocations like `uvx rhino3dm-mcp` (no
sub-command) still launch the server unchanged.
Operational notes (one-time)
----------------------------
* PyPI Pending Publisher needs to be re-created with project name
`rhino3dm-mcp`, owner `EaseHee`, repository `rhino-mcp`, workflow
`release.yml`, environment empty.
* Tagging `v0.4.0` triggers PyPI publish (Trusted Publishing) plus
`.rhp` and `.yak` artefact upload to the GitHub Release.
Verification
------------
* `uv build` — `dist/rhino3dm_mcp-0.4.0-py3-none-any.whl` METADATA
shows `Name: rhino3dm-mcp`, `Version: 0.4.0`, and entry_points.txt
lists both `rhino-mcp` and `rhino3dm-mcp` console scripts.
* `uv run pytest tests/ -q` — 237 passed (213 prior + 24 new install
tests covering OS path detection, idempotent merge, backup creation,
dry-run, force overwrite, and CLI integration).