PyPI
The PyPI project arcane-mcp is six platform wheels, one per release binary, the way ruff and uv ship theirs: the installer picks the wheel for your system and puts the binary on the environment’s scripts path as the arcane-mcp command. That command is the release binary itself, byte for byte; no Python runs between your client and the server. Nothing is published until the first release; see Installation.
Requirements
Section titled “Requirements”Python 3.9 or later, with uv for uvx (or pipx, or pip).
| Wheel | For |
|---|---|
manylinux_2_17_x86_64 / musllinux_1_1_x86_64 (one wheel), and the aarch64 twin | Linux on x86-64 or arm64, glibc or musl (Alpine) |
macosx_13_0_x86_64, macosx_13_0_arm64 | macOS 13 or later, Intel or Apple Silicon |
win_amd64, win_arm64 | Windows on x64 or arm64 |
There is no source distribution: building one would mean building the Go binary, which a Python installer cannot do.
Run or install
Section titled “Run or install”ARCANE_URL=https://arcane.example.com ARCANE_API_KEY=… uvx arcane-mcpor install it once, which puts an arcane-mcp command on your PATH:
uv tool install arcane-mcp # or: pipx install arcane-mcparcane-mcp --versionpip install arcane-mcp into a virtual environment works too, and python -m arcane_mcp runs the same binary (the wheel’s small arcane_mcp module also has find_binary(), which returns the binary’s path).
Configure your client
Section titled “Configure your client”{ "mcpServers": { "arcane": { "command": "uvx", "args": ["arcane-mcp==X.Y.Z"], "env": { "ARCANE_URL": "https://arcane.example.com", "ARCANE_API_KEY": "<your Arcane API key>" } } }}After uv tool install or pipx install, the command can be arcane-mcp, by its absolute path (uv tool dir --bin or pipx environment --value PIPX_BIN_DIR shows the directory) if the client does not see your shell’s PATH. Every client’s entry is on Client setup.
Pin a version
Section titled “Pin a version”Name the version, arcane-mcp==X.Y.Z, as the entry above does (uv tool install arcane-mcp==X.Y.Z and pipx install arcane-mcp==X.Y.Z for an installed tool). PyPI has no dist-tags: an unpinned install takes the highest version, and a backport never displaces the newest release.
Verify it
Section titled “Verify it”The command a wheel installs is the release binary listed in the signed checksums.txt, so GitHub’s build provenance for that asset verifies it:
# uv tool install, pipx or pip: the command on your PATH is the binarygh attestation verify "$(command -v arcane-mcp)" -R jmrplens/arcane-mcp \ --signer-workflow jmrplens/arcane-mcp/.github/workflows/release.yml
# uvx: the binary sits in uv's cache, and the package says wheregh attestation verify "$(uvx --from arcane-mcp python -c 'import arcane_mcp; print(arcane_mcp.find_binary())')" \ -R jmrplens/arcane-mcp --signer-workflow jmrplens/arcane-mcp/.github/workflows/release.ymlEach file on PyPI also carries PyPI’s own publish attestation (PEP 740), shown on its page. The rest is under Verifying a release.
Update and uninstall
Section titled “Update and uninstall”The server never updates itself.
uv tool upgrade arcane-mcp # or: pipx upgrade arcane-mcp, pip install -U arcane-mcpuv tool uninstall arcane-mcp # or: pipx uninstall arcane-mcp, pip uninstall arcane-mcpWith uvx, change the version in the client’s entry; uv cache clean arcane-mcp removes the cached copies.