Turn MCP servers into composable CLIs.
mcpx turns MCP tools into shell commands so agents can use standard CLI composition (|, redirection, jq, head) and skill workflows.
mcpx keeps the command contract simple:
mcpxlists serversmcpx <server>lists toolsmcpx <server> <tool>calls a tool
Tool names are used exactly as exposed by each server (no client-side renaming/aliasing).
Utility commands:
mcpx add <source> [--name <server>] [--overwrite]bootstraps a server config from an install link, manifest URL, or local manifest filemcpx completion <bash|zsh|fish>prints shell completion scriptsmcpx skill installinstalls the built-inmcpxskill to~/.agents/skillsand links it for Claude Code (optional flags also link for Codex/Kiro)
It is designed for agent workflows and shell composition:
- schema-aware
--help(inputs + declared outputs) - native flag surface from MCP
inputSchema - standardized exit mapping (
0/1/2/3) - optional response caching with TTL and config overrides
- optional Codex Apps compatibility via virtual per-app servers
- stdio + HTTP transports via a local daemon
- generated shell completions and packaged root man page (
man mcpx)
brew tap lydakis/mcpx
brew install --cask mcpxnpm install -g mcpx-go
mcpx --versionpip install mcpx-go
mcpx --versiongo build ./...
./mcpx --versionWindows users: use WSL2 and run install commands inside your Linux distro shell.
Create ~/.config/mcpx/config.toml:
[servers.github]
command = "npx"
args = ["-y", "@modelcontextprotocol/server-github"]
env = { GITHUB_TOKEN = "${GITHUB_TOKEN}" }
default_cache_ttl = "30s"Run:
mcpx
mcpx --json
mcpx github
mcpx github --json
mcpx github -v
mcpx github search-repositories --help
mcpx github search-repositories --help --json
mcpx github search-repositories --query=mcp
mcpx add "cursor://anysphere.cursor-deeplink/mcp/install?name=postgres&config=..."
mcpx skill installWhen Codex Apps are enabled in local Codex config, mcpx can expose connected apps as normal MCP servers (for example, linear or zillow) through the same command contract:
mcpx linear
mcpx linear <tool> --help
mcpx linear <tool> ...Auth is still managed by Codex. mcpx does not run OAuth flows or store third-party app credentials.
--json applies only to mcpx-owned output surfaces:
mcpxmcpx <server>mcpx <server> <tool> --help
Normal tool-call output (mcpx <server> <tool> ...) is not transformed by --json.
Use these to validate a local MCP quickly:
mcpx <server>
mcpx <server> --json # machine-readable list output
mcpx <server> -v # full tool descriptions
mcpx <server> <tool> --help
mcpx <server> <tool> --help --json
mcpx <server> <tool> -v
echo $? # inspect exit code contractFor your current fallback setup, a working browser-tools entry should use -y:
[servers.browser-tools]
command = "npx"
args = ["-y", "@agentdeskai/browser-tools-mcp@1.1.0"]- Local/dev builds show
mcpx dev. - Tagged release builds show the tag version in
mcpx --version(for examplemcpx v0.1.0) via GoReleaser ldflags.
- Tag pushes
v*run the release workflow. - GoReleaser publishes artifacts and updates
lydakis/homebrew-mcpx. - Notarization uses standard Apple Developer and App Store Connect secrets.
Detailed docs: