Turn MCP servers into composable CLIs.
mcpx # list servers
mcpx <server> # list tools
mcpx <server> <tool> ... # call a toolTool names match exactly what each server exposes. Tool-call output passes through unchanged (text or JSON), so you can pipe, redirect, or parse with jq.
brew tap lydakis/mcpx
brew install --cask mcpxInstall the general mcpx skill for your agent (recommended on day one):
mcpx skill installAdd extra links as needed:
mcpx skill install --claude-link
mcpx skill install --kiro-link
mcpx skill install --openclaw-linkOptionally write/update a managed mcpx guidance block in your global AGENTS file:
mcpx skill install --guidance
mcpx skill install --guidance --claude-link
mcpx skill install --guidance --kiro-link
mcpx skill install --guidance --openclaw-link
mcpx skill install --guidance --guidance-text "Prefer mcpx when MCP work benefits from CLI composition."If you already use MCP in Cursor, Claude Code, Cline, Codex, or Kiro, mcpx auto-discovers those server configs.
mcpx github search-repositories --query=mcp | jq -r '.items[:3][].full_name'No existing configs? Point mcpx at any MCP endpoint and start calling tools immediately:
mcpx https://docs.mcp.cloudflare.com/mcp
mcpx https://docs.mcp.cloudflare.com/mcp search_cloudflare_documentation --query="durable objects alarms"Every tool gets schema-aware --help for free:
mcpx https://docs.mcp.cloudflare.com/mcp search_cloudflare_documentation --helpmcpx add bootstraps config from install links, manifest URLs, direct MCP endpoints, or local manifest files:
mcpx add https://mcp.deepwiki.com/mcp
mcpx deepwiki read_wiki_structure --repoName=modelcontextprotocol/specificationAdded servers persist in ~/.config/mcpx/config.toml. You can also write entries by hand:
[servers.github]
command = "npx"
args = ["-y", "@modelcontextprotocol/server-github"]
env = { GITHUB_TOKEN = "${GITHUB_TOKEN}" }
default_cache_ttl = "30s"Any source you pass directly (without mcpx add) runs ephemerally for the daemon's lifetime: no config written, nothing to clean up.
mcpx <source>
mcpx <source> <tool> --help
mcpx <source> <tool> ...Cache tool responses with --cache=<duration>, or force fresh calls with --no-cache:
mcpx deepwiki read_wiki_structure --repoName=modelcontextprotocol/specification --cache=5m
mcpx deepwiki read_wiki_structure --repoName=modelcontextprotocol/specification --no-cacheSet per-server defaults with default_cache_ttl in config.
Install a local passthrough so <server> works as a standalone command:
mcpx shim install github
github search-repositories --query=mcp | jq -r '.items[:3][].full_name'Shims land in $XDG_BIN_HOME or ~/.local/bin. Install is collision-safe: it fails if that name already resolves elsewhere in PATH.
mcpx shim install github --skill # also generate a server skill
mcpx shim list
mcpx shim remove githubWhen you want tighter, server-specific instructions, generate a skill file for one server (written to ~/.agents/skills/mcpx-<server> by default):
mcpx skill install github
mcpx skill install github --openclaw-linkWhen Codex Apps are enabled and authenticated locally, mcpx exposes connected apps as regular servers:
mcpx linear
mcpx linear <tool> --help
mcpx linear <tool> ...Auth stays with Codex. mcpx does not run OAuth flows or store third-party credentials.
npm:
npm install -g mcpx-goPyPI:
pip install mcpx-goSource:
go build ./...
./mcpx --versionWindows: use WSL2 and run install commands inside your Linux distro shell.
| Command | Purpose |
|---|---|
mcpx add <source> |
Bootstrap a server config from a source |
mcpx shim install <server> |
Install a local passthrough shim |
mcpx shim remove <server> |
Remove a shim |
mcpx shim list |
List installed shims |
mcpx completion <shell> |
Print shell completions (bash/zsh/fish) |
mcpx skill install [<server>] |
Install built-in or server-specific skill |
mcpx add accepts --name, --header KEY=VALUE, and --overwrite. mcpx shim install accepts --skill and --skill-strict. mcpx skill install accepts --guidance, --guidance-file, and --guidance-text (--guidance follows a single --claude-link/--kiro-link/--openclaw-link target when provided).
--json applies to mcpx-owned surfaces only (mcpx, mcpx <server>, mcpx <server> <tool> --help). Tool-call output passes through unmodified.
Use -v to include per-server origin metadata. Combine with --json for machine-readable output including config paths.
| Code | Meaning |
|---|---|
| 0 | Success |
| 1 | Tool error (MCP isError) |
| 2 | Usage error |
| 3 | Internal error |
Validate any server quickly:
mcpx <server> # list tools
mcpx <server> --json # machine-readable
mcpx <server> -v # full descriptions
mcpx <server> <tool> --help # inspect schema
mcpx <server> <tool> --help --json
echo $? # check exit codemcpx --json
mcpx github --json
mcpx github -v
mcpx github search-repositories --help --json
mcpx add "cursor://anysphere.cursor-deeplink/mcp/install?name=postgres&config=..."
mcpx add https://mcp.deepwiki.com/mcp
mcpx https://mcp.deepwiki.com/mcp
mcpx https://mcp.deepwiki.com/mcp read_wiki_structure --repoName=modelcontextprotocol/specification
mcpx add https://mcp.devin.ai/mcp --name deepwiki --header "Authorization=Bearer \${DEEPWIKI_API_KEY}"
mcpx skill installIf auto-discovery finds nothing, create ~/.config/mcpx/config.toml directly. For fallback setups, include -y for npx:
[servers.browser-tools]
command = "npx"
args = ["-y", "@agentdeskai/browser-tools-mcp@1.1.0"]make check # test + vet + build
make qa-core # Go gates + core smoke/integration matrix
make qa-extended # CLI contract + wrapper packaging checks
make qa # full QA matrix (core + extended)Benchmarks are manual (not part of CI):
make perf
./scripts/perf_bench.sh <git-ref> # compare against baseline
make perf-loop # warm CLI throughput (500 calls)
./scripts/perf_cli_loop.sh <git-ref>For summarized comparisons: go install golang.org/x/perf/cmd/benchstat@latest
Local builds show mcpx dev. Tagged releases show the tag (for example mcpx v0.1.0) via GoReleaser ldflags.
Tag pushes matching v* trigger the release workflow. GoReleaser publishes artifacts and updates lydakis/homebrew-mcpx. Notarization uses standard Apple Developer and App Store Connect secrets.