Skip to main content

mcp-install

A reusable, app-agnostic installer for registering stdio MCP servers with Claude Desktop, Claude Code, Codex, and Grok Build.

This package has no knowledge of any specific MCP server. Every app-specific detail — server name, entrypoint command, which env vars to forward into the registered entry, the PyPI distribution name used for uvx --from inference, the env var a standalone binary uses to identify itself — is read from a small JSON manifest (install.config.json) that each consuming project ships on its own. Point mcp_install.Install at your manifest and it needs no code changes.

Installing

pip install mcp-install
# or, for local development against a sibling checkout:
pip install -e ../mcp-install

Wiring it into your own MCP server project

  1. Add mcp-install as a dependency of your project.

  2. Add your own install console-script entry point in your pyproject.toml:

    [project.scripts]
    install = "mcp_install.Install:main"
    
  3. Ship an install.config.json manifest at your project root:

    {
      "serverName": "my-server",
      "entrypoint": "my-mcp",
      "distributionName": "my-mcp",
      "binaryEnvVar": "MY_MCP_BINARY",
      "envKeys": ["MY_SERVER_TOKEN"],
      "defaultEnvValues": {},
      "envWarnings": {
        "MY_SERVER_TOKEN": "MY_SERVER_TOKEN is not set."
      }
    }
    
    Key Required Meaning
    serverName yes Default key the server is registered under in each client's config (overridable with --server-name).
    entrypoint yes Command run via uvx <entrypoint> (overridable with --entrypoint).
    distributionName no PyPI/installed distribution name used to infer a uvx --from <git-url> source from the running install's metadata.
    binaryEnvVar no Env var name checked for a pre-built standalone binary path; when set, install registers that binary directly instead of a uvx command.
    envKeys no Which env vars get forwarded into the registered MCP entry's env block, from --env/--env-file/the process environment.
    defaultEnvValues no Values applied to envKeys that end up unset after collection.
    envWarnings no Printed once per key still unset after defaults are applied — use this for security-relevant env vars you want to nudge users toward setting.
  4. If you also ship a standalone binary (e.g. via PyApp), bundle install.config.json into it too, and pass --app-config <path> (resolved relative to your own binary/module, not cwd) before dispatching into mcp_install.Install:main — see ffl-mcp's src/Entrypoint.py for a worked example.

CLI

install --print                                    # preview the entry, no writes
install --target claude-desktop,claude-code,codex,grok-build
install --env ALLOWED_BASE_DIR=~/Downloads          # repeatable KEY=VALUE
install --env-file .env.install                     # KEY=VALUE per line
install --overwrite
install --config /path/to/claude_desktop_config.json
install --codex-config /path/to/codex/config.toml
install --grok-config /path/to/grok/config.toml
install --uninstall --target claude-code
install --app-config /path/to/install.config.json   # override manifest lookup

install.config.json is auto-discovered from the current working directory; override its location with --app-config or the INSTALL_APP_CONFIG env var.

--target accepts all (default), claude-desktop, claude-code, codex, grok-build. Legacy aliases claude-cli, codex-cli, codex-desktop, and grok are accepted and normalized. claude-code registers via the Claude Code CLI (claude mcp add-json); claude-desktop writes JSON; codex/ grok-build write TOML. Every write is preceded by a timestamped backup of the existing config file.

Package layout

mcp-install/
├── src/
│   └── mcp_install/
│       ├── Install.py       # CLI entry point (main()), AppConfig, uvx-source inference
│       └── backends/
│           ├── Base.py      # ConfigBackend, JsonMcpBackend, TomlMcpBackend, TOML/file helpers
│           ├── Claude.py    # ClaudeDesktopBackend, ClaudeCliBackend
│           ├── Codex.py     # CodexBackend
│           └── Grok.py      # GrokBackend
└── tests/                   # unittest-based tests

Testing

python -m unittest discover -s tests -p "*Test.py" -v

Metadata

Release files for mcp-install 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mcp-install 0.1.0
File Size Uploaded Provenance
mcp_install-0.1.0.tar.gz 14.4 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for mcp-install 0.1.0
File Interpreter ABI Platform
mcp_install-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 34.7 kB

Release files / mcp_install-0.1.0.tar.gz

Download URL mcp_install-0.1.0.tar.gz
Size 14.4 kB
Tags Source
SHA-256 checksum
How to use checksums
4778c832d335c432d5ad777b3309f644fe2ed5adee90dc5617115bcc3f6c57f8
BLAKE2b-256 checksum
How to use checksums
35f8c6ee65ee49baa5d992a89dd40461d271138f0d01e5b4d2d55f1b76f4cc15
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 19, 2026.

Transparency log

Release files / mcp_install-0.1.0-py3-none-any.whl

Download URL mcp_install-0.1.0-py3-none-any.whl
Size 20.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4dc797cf5576b928c16427a84944751700e0bc15c7f7dcf9c511e3dca2948ff9
BLAKE2b-256 checksum
How to use checksums
cf3854684ac966ff83841fee4fd06b6d839a7e6d16c401c1c9e7877b9c90f4cd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 19, 2026.

Transparency log

Security for mcp-install 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for mcp_install-0.1.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 19, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page