mcporter
Use mcporter to work with MCP servers directly.
In OpenClaw, treat mcporter as the execution substrate for MCP-backed
skills. When a user wants to keep an MCP capability for future work, prefer
creating or updating a skill that describes when to use the capability and
stores the repeatable mcporter command path. Do not create a separate runtime
registry when a skill can carry the durable behavior.
Skill-first MCP shape
SKILL.md: triggers, workflow, constraints, examples, and recovery steps.
mcp.json: mcporter-native server config when the skill needs a dedicated
server definition.
references/: schemas, API notes, or longer operation guides.
scripts/: wrappers for fragile multi-step calls or post-processing.
Credential handling
- Keep shared, bundled, published, or repo-tracked skills free of raw secrets.
Reference environment variables, token helper commands, OAuth login state,
runtime config, or platform-managed credentials instead.
- If the user explicitly provides a complete private MCP config or a
credential-bearing endpoint and asks to keep or use it, save it in a local
private config file such as skill-local
mcp.json in a writable
user-managed skill root, or a dedicated user-managed private mcporter config
file. Keep it non-shared and excluded from source control and packaging. Set
file permissions to 0600 when possible. Do not ask the user to re-enter the
same value as an environment variable, and do not edit shell startup or
trusted env files just to persist it. Do not echo the secret value back in
CLI output, logs, or errors; redact or omit token and secret fields from
displayed tool results.
- For bot-global OpenClaw MCP capabilities, prefer a local skill plus
skill-local
mcp.json. Use mcporter --config path/to/skill/mcp.json ...
as the durable command path. Treat ~/.mcporter/mcporter.json as an
interoperability copy when useful, not as the capability boundary. The
credential-bearing source of truth for a durable skill run is the explicit
--config file you pass.
For a durable MCP skill, first inspect the server schema:
mcporter --config path/to/skill/mcp.json list <server> --schema --output json
Then call the selected tool with explicit arguments:
mcporter --config path/to/skill/mcp.json call <server.tool> key=value
Quick start
mcporter list
mcporter list <server> --schema
mcporter call <server.tool> key=value
Call tools
- Selector:
mcporter call linear.list_issues team=ENG limit:5
- Function syntax:
mcporter call "linear.create_issue(title: \"Bug\")"
- Full URL:
mcporter call https://api.example.com/mcp.fetch url:https://example.com
- Stdio:
mcporter call --stdio "bun run ./server.ts" scrape url=https://example.com
- JSON payload:
mcporter call <server.tool> --args '{"limit":5}'
Auth + config
- OAuth:
mcporter auth <server | url> [--reset]
- Config:
mcporter config list|get|add|remove|import|login|logout
Daemon
mcporter daemon start|status|stop|restart
Codegen
- CLI:
mcporter generate-cli --server <name> or --command <url>
- Inspect:
mcporter inspect-cli <path> [--json]
- TS:
mcporter emit-ts <server> --mode client|types
Notes
- Prefer explicit
--config for skills. mcporter can also use its default
project or user config paths for local ad-hoc CLI work, but shared or
packaged skills and automation should always pass an explicit --config.
- Prefer
--output json for machine-readable results.
1---2name: mcporter3description: Use the mcporter CLI to list, configure, auth, and call MCP servers/tools directly (HTTP or stdio), including ad-hoc servers, config edits, CLI/type generation, and MCP-backed skills that need a durable command path.4homepage: http://mcporter.dev5metadata:6 {7 "openclaw":8 {9 "emoji": "📦",10 "requires": { "bins": ["mcporter"] },11 "install":12 [13 {14 "id": "node",15 "kind": "node",16 "package": "mcporter",17 "bins": ["mcporter"],18 "label": "Install mcporter (node)",19 },20 ],21 },22 }23---2425# mcporter2627Use `mcporter` to work with MCP servers directly.2829In OpenClaw, treat `mcporter` as the execution substrate for MCP-backed30skills. When a user wants to keep an MCP capability for future work, prefer31creating or updating a skill that describes when to use the capability and32stores the repeatable mcporter command path. Do not create a separate runtime33registry when a skill can carry the durable behavior.3435Skill-first MCP shape3637- `SKILL.md`: triggers, workflow, constraints, examples, and recovery steps.38- `mcp.json`: mcporter-native server config when the skill needs a dedicated39 server definition.40- `references/`: schemas, API notes, or longer operation guides.41- `scripts/`: wrappers for fragile multi-step calls or post-processing.4243Credential handling4445- Keep shared, bundled, published, or repo-tracked skills free of raw secrets.46 Reference environment variables, token helper commands, OAuth login state,47 runtime config, or platform-managed credentials instead.48- If the user explicitly provides a complete private MCP config or a49 credential-bearing endpoint and asks to keep or use it, save it in a local50 private config file such as skill-local `mcp.json` in a writable51 user-managed skill root, or a dedicated user-managed private mcporter config52 file. Keep it non-shared and excluded from source control and packaging. Set53 file permissions to `0600` when possible. Do not ask the user to re-enter the54 same value as an environment variable, and do not edit shell startup or55 trusted env files just to persist it. Do not echo the secret value back in56 CLI output, logs, or errors; redact or omit token and secret fields from57 displayed tool results.58- For bot-global OpenClaw MCP capabilities, prefer a local skill plus59 skill-local `mcp.json`. Use `mcporter --config path/to/skill/mcp.json ...`60 as the durable command path. Treat `~/.mcporter/mcporter.json` as an61 interoperability copy when useful, not as the capability boundary. The62 credential-bearing source of truth for a durable skill run is the explicit63 `--config` file you pass.6465For a durable MCP skill, first inspect the server schema:6667```bash68mcporter --config path/to/skill/mcp.json list <server> --schema --output json69```7071Then call the selected tool with explicit arguments:7273```bash74mcporter --config path/to/skill/mcp.json call <server.tool> key=value75```7677Quick start7879- `mcporter list`80- `mcporter list <server> --schema`81- `mcporter call <server.tool> key=value`8283Call tools8485- Selector: `mcporter call linear.list_issues team=ENG limit:5`86- Function syntax: `mcporter call "linear.create_issue(title: \"Bug\")"`87- Full URL: `mcporter call https://api.example.com/mcp.fetch url:https://example.com`88- Stdio: `mcporter call --stdio "bun run ./server.ts" scrape url=https://example.com`89- JSON payload: `mcporter call <server.tool> --args '{"limit":5}'`9091Auth + config9293- OAuth: `mcporter auth <server | url> [--reset]`94- Config: `mcporter config list|get|add|remove|import|login|logout`9596Daemon9798- `mcporter daemon start|status|stop|restart`99100Codegen101102- CLI: `mcporter generate-cli --server <name>` or `--command <url>`103- Inspect: `mcporter inspect-cli <path> [--json]`104- TS: `mcporter emit-ts <server> --mode client|types`105106Notes107108- Prefer explicit `--config` for skills. mcporter can also use its default109 project or user config paths for local ad-hoc CLI work, but shared or110 packaged skills and automation should always pass an explicit `--config`.111- Prefer `--output json` for machine-readable results.