Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use the mcporter CLI to list, configure, auth, and call MCP servers/tools directly (HTTP or stdio), including ad-hoc servers, config edits, and CLI/type generation.
.claude/skills/graniet-mcporter/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-17 | ✗→✓ | ▲ Improved | -44% | 0% |
| case-04 | ✗→✓ | ▲ Improved | -32% | 0% |
| case-11 | ✗→✓ | ▲ Improved | -30% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 20% | 0% |
| case-08 | ✗→✓ | ▲ Improved | -42% | 0% |
This skill is repo-local and stays inactive until explicitly activated.
When the original instructions refer to legacy tool names, use these Kheish mappings:
terminal => bashweb_extract => web_fetch, plus web_search when discovery is neededsearch_files => grep_search and glob_searchbrowser_* tools require a browser-capable surfaced tool or MCP; if none is available, use the closest available surface and say so explicitlyWhen the instructions mention local helper files, resolve them from ${KHEISH_SKILL_DIR}.
Use mcporter to discover, call, and manage MCP (Model Context Protocol) servers and tools directly from the terminal.
Requires Node.js:
bash# No install needed (runs via npx) npx mcporter list # Or install globally npm install -g mcporter
bash# List MCP servers already configured on this machine mcporter list # List tools for a specific server with schema details mcporter list <server> --schema # Call a tool mcporter call <server.tool> key=value
mcporter auto-discovers servers configured by other MCP clients (Claude Desktop, Cursor, etc.) on the machine. To find new servers to use, browse registries like mcpfinder.dev or mcp.so, then connect ad-hoc:
bash# Connect to any MCP server by URL (no config needed) mcporter list --http-url https://some-mcp-server.com --name my_server # Or run a stdio server on the fly mcporter list --stdio "npx -y @modelcontextprotocol/server-filesystem" --name fs
bash# Key=value syntax mcporter call linear.list_issues team=ENG limit:5 # Function syntax mcporter call "linear.create_issue(title: \"Bug fix needed\")" # Ad-hoc HTTP server (no config needed) mcporter call https://api.example.com/mcp.fetch url=https://example.com # Ad-hoc stdio server mcporter call --stdio "bun run ./server.ts" scrape url=https://example.com # JSON payload mcporter call <server.tool> --args '{"limit": 5}' # Machine-readable output (recommended for Kheish) mcporter call <server.tool> key=value --output json
bash# OAuth login for a server mcporter auth <server | url> [--reset] # Manage config mcporter config list mcporter config get <key> mcporter config add <server> mcporter config remove <server> mcporter config import <path>
Config file location: ./config/mcporter.json (override with --config).
For persistent server connections:
bashmcporter daemon start mcporter daemon status mcporter daemon stop mcporter daemon restart
bash# Generate a CLI wrapper for an MCP server mcporter generate-cli --server <name> mcporter generate-cli --command <url> # Inspect a generated CLI mcporter inspect-cli <path> [--json] # Generate TypeScript types/client mcporter emit-ts <server> --mode client mcporter emit-ts <server> --mode types
--output json for structured output that's easier to parse--stdio command) work without any config — useful for one-off callsterminal(command="mcporter auth <server>", pty=true) if needed| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-17 | fail→pass | 12,204 | 1,543 | -87% | 1 | 1 | 0% | 2,040 | 1,146 | -44% | 0 | 0 | — |
case-01 | fail→fail | 11,246 | 20,426 | +82% | 1 | 1 | 0% | 2,342 | 1,129 | -52% | 0 | 0 | — |
case-02 | fail→fail | 3,979 | 5,652 | +42% | 1 | 1 | 0% | 602 | 1,238 | +106% | 0 | 0 | — |
case-03 | fail→fail | 12,281 | 5,034 | -59% | 1 | 1 | 0% | 2,723 | 1,072 | -61% | 0 | 0 | — |
case-04 | fail→pass | 8,751 | 1,439 | -84% | 1 | 1 | 0% | 1,550 | 1,057 | -32% | 0 | 0 | — |
case-05 | pass→pass | 6,750 | 2,129 | -68% | 1 | 1 | 0% | 1,151 | 1,253 | +9% | 0 | 0 | — |
case-11 | fail→pass | 10,326 | 2,545 | -75% | 1 | 1 | 0% | 1,746 | 1,220 | -30% | 0 | 0 | — |
case-06 | pass→pass | 9,821 | 3,068 | -69% | 1 | 1 | 0% | 1,702 | 1,172 | -31% | 0 | 0 | — |
case-07 | fail→pass | 6,141 | 1,846 | -70% | 1 | 1 | 0% | 1,014 | 1,214 | +20% | 0 | 0 | — |
case-08 | fail→pass | 11,568 | 2,490 | -78% | 1 | 1 | 0% | 2,247 | 1,296 | -42% | 0 | 0 | — |
case-09 | fail→pass | 13,070 | 2,794 | -79% | 1 | 1 | 0% | 2,481 | 1,393 | -44% | 0 | 0 | — |
case-10 | fail→pass | 8,409 | 2,375 | -72% | 1 | 1 | 0% | 1,528 | 1,312 | -14% | 0 | 0 | — |
case-12 | fail→pass | 11,767 | 2,670 | -77% | 1 | 1 | 0% | 1,963 | 1,254 | -36% | 0 | 0 | — |
case-13 | fail→pass | 10,281 | 1,653 | -84% | 1 | 1 | 0% | 1,970 | 1,152 | -42% | 0 | 0 | — |
case-14 | fail→fail | 9,013 | 2,114 | -77% | 1 | 1 | 0% | 1,740 | 1,056 | -39% | 0 | 0 | — |
case-15 | fail→pass | 9,021 | 2,068 | -77% | 1 | 1 | 0% | 1,737 | 1,183 | -32% | 0 | 0 | — |
case-16 | fail→pass | 13,469 | 1,977 | -85% | 1 | 1 | 0% | 2,596 | 1,203 | -54% | 0 | 0 | — |
case-18 | fail→pass | 12,717 | 2,186 | -83% | 1 | 1 | 0% | 2,636 | 1,209 | -54% | 0 | 0 | — |
case-19 | fail→pass | 6,943 | 2,043 | -71% | 1 | 1 | 0% | 1,240 | 1,214 | -2% | 0 | 0 | — |
case-20 | fail→fail | 12,349 | 9,617 | -22% | 1 | 1 | 0% | 2,583 | 2,983 | +15% | 0 | 0 | — |
case-21 | pass→pass | 6,902 | 4,701 | -32% | 1 | 1 | 0% | 1,450 | 1,787 | +23% | 0 | 0 | — |
case-22 | pass→pass | 11,983 | 7,686 | -36% | 1 | 1 | 0% | 2,520 | 2,435 | -3% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 19 counted toward the lift figure. The other 3 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +59 percentage points is the difference between those two pass rates over the 19 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.