About mcporter
mcporter is a CLI for discovering MCP servers and invoking their tools from a shell. It is intended for developers who want to inspect tool signatures before calling them, and can also connect to ad hoc endpoints.
Key features
- 01Discover configured MCP servers
- 02Inspect tool signatures and parameters
- 03Call tools in multiple formats
- 04View JSON schemas and metadata
- 05Connect directly to ad hoc endpoints
Use cases
- 01Check server health and available tools
- 02Invoke tools from a shell using their signatures
- 03Try MCP endpoints without adding them to config
MCP support
mcporter discovers MCP servers from configuration or editor imports, then connects to list and call their tools. It can also target an endpoint or stdio command directly.
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ zlliang/ skills --skill mcporterAfter installing, type/mcporterin Claude Code to confirm it loaded.
Details
From the project READMEMCPorter (mcporter)
MCPorter is a CLI for working with MCP servers. Use it to discover configured servers, read their tool signatures, and call tools directly from the shell.
The two commands that matter most are list (discover and inspect) and call (invoke). Always list before you call so arguments match the real schema.
For exact flags, run mcporter <command> --help. MCPorter discovers servers from its config — the global config at ~/.mcporter/mcporter.json, a project config at ./config/mcporter.json, or an explicit --config <path> — plus editor imports (Cursor, Claude Code, Codex, etc.). Use mcporter config list or mcporter list --verbose to see where each server comes from.
Workflow
# 1. See configured servers and their health
mcporter list
# 2. Read one server's tools as TypeScript-like signatures
mcporter list <server>
# 3. Call a tool using the signature from step 2
mcporter call '<server>.<tool>(arg: "value", count: 5)'
list — discover and inspect
mcporter list # All servers, with live status
mcporter list <server> # Tools for one server, as signatures
mcporter list <server> --schema # Raw JSON schema for each tool
mcporter list <server> --json # Machine-readable, full tool metadata
mcporter list <server> --all-parameters # Reveal hidden optional params
Single-server output reads like a TypeScript header: a doc comment per tool, a function name(...) signature with required params first and optional ones marked ?, plus an Examples: block written in the function-call syntax below. Optional params beyond the first few are hidden unless you pass --all-parameters or --schema.
function web_search_exa(query: string, numResults?: number);
call — invoke a tool
Recommended: function-call syntax. It mirrors the signature from mcporter list, is self-documenting, handles nested objects/arrays, and avoids shell-flag ambiguity. Wrap the whole argument in single quotes.
mcporter call 'exa.web_search_exa(query: "best React state libraries", numResults: 5)'
mcporter call 'linear.create_comment(issueId: "ENG-123", body: "Looks good!")'
- Named arguments are preferred; unlabeled values map to schema order.
- Use
--output jsonfor structured results; connection/auth/offline/http failures emit a{ server, tool, issue }envelope for scripting.
mcporter call 'exa.web_search_exa(query: "...")' --output json
Other argument styles (when the recommended one is awkward)
# Shell-friendly key/value pairs (good in scripts)
mcporter call linear.list_issues team=ENG limit:5
# Prebuilt JSON payload (or `--json -` to read from stdin)
mcporter call linear.create_issue --json '{"title":"Bug","team":"ENG"}'
# Read a long string argument from a file
mcporter call linear.create_comment issueId=LNR-123 [email protected]
Ad-hoc servers (not in config)
Point list/call at an endpoint directly, no config edit needed:
mcporter list https://mcp.linear.app/mcp
mcporter call 'https://www.shadcn.io/api/mcp.getComponent(component: "vortex")'
mcporter list --stdio "bun run ./server.ts" --env TOKEN=xyz
Bare domains assume https://; plain http:// needs --allow-http. Persist a tried endpoint with --persist <config> to make its short name reusable.
Notes
- Pass secrets via environment variables, e.g.
LINEAR_API_KEY=… mcporter call 'linear.search_documentation(query: "automations")'. - Other commands exist (
auth,config,resource,daemon,generate-cli,emit-ts); runmcporter --helpwhen you need them.