From mcpproxy
Detects MCPProxy connection by checking for mcp__MCPProxy__* tools, suggests /mcp reconnect if missing, and guides MCP tools usage over HTTP API for debugging.
How this skill is triggered — by the user, by Claude, or both
Slash command
/mcpproxy:working-with-mcpThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
MCPProxy can be accessed two ways:
MCPProxy can be accessed two ways:
mcp__MCPProxy__*) - When MCPProxy is configured as an MCP server in Claude Codecurl http://localhost:8080/...) - For debugging MCPProxy itselfThis skill is for #1. For debugging MCPProxy itself, use HTTP API approach sparingly.
When user mentions MCPProxy or MCP tools:
YOU MUST IMMEDIATELY:
mcp__MCPProxy__Examples of what you're looking for:
mcp__MCPProxy__retrieve_tools
mcp__MCPProxy__call_tool
mcp__MCPProxy__upstream_servers
Decision:
mcp__MCPProxy__* tools? → MCPProxy is connected, use themmcp__MCPProxy__* tools? → MCPProxy MCP server not connectedIf tools are missing, IMMEDIATELY tell user:
"MCPProxy MCP tools aren't available in this session. The MCPProxy MCP server isn't connected.
Try the
/mcpcommand and select MCPProxy to reconnect. Once reconnected, you'll have access to themcp__MCPProxy__*tools."
DO NOT:
claude mcp list or mcpproxy list-toolsMissing mcp__MCPProxy__* tools = MCPProxy MCP server not connected = Suggest /mcp reconnect. That's it.
This is passive observation - look at tools you already have, don't run commands.
Look at your available tools (the tool list in this session)
↓
Do you see ANY tools starting with mcp__MCPProxy__*?
│
├─ YES → MCPProxy is connected
│ ├─ Discover: mcp__MCPProxy__retrieve_tools
│ └─ Call: mcp__MCPProxy__call_tool
│
└─ NO → MCPProxy MCP server not connected
└─ Tell user: "Try /mcp command to reconnect"
Key points:
claude mcp list or any bash commandUse when:
Do NOT use when:
When MCPProxy IS connected, your tool list includes:
Available tools:
- Bash
- Read
- Write
- mcp__MCPProxy__retrieve_tools ← Look for these
- mcp__MCPProxy__call_tool ← Look for these
- mcp__MCPProxy__upstream_servers ← Look for these
- mcp__ide__getDiagnostics
- mcp__ide__executeCode
When MCPProxy is NOT connected:
Available tools:
- Bash
- Read
- Write
- mcp__ide__getDiagnostics
- mcp__ide__executeCode
← No mcp__MCPProxy__* tools = Connection issue
Key distinction:
mcp__ide__* = Different MCP server (IDE integration)mcp__MCPProxy__* = MCPProxy tools for upstream serversmcp__MCPProxy__* tools indicate MCPProxy connection// 1. Search for relevant tools
mcp__MCPProxy__retrieve_tools({
query: "keywords describing what you need",
limit: 10
});
// 2. Examine tool schemas in results
// Look at inputSchema to understand parameters
// 3. Call the tool
mcp__MCPProxy__call_tool({
name: "server:tool-name", // From search results
args_json: JSON.stringify({ // MUST be JSON string
param1: "value",
param2: "value"
})
});
Critical: args_json must be a JSON string (use JSON.stringify()), not a plain object.
mcp__MCPProxy__retrieve_tools - Search for tools across all upstream serversmcp__MCPProxy__call_tool - Execute a discovered toolmcp__MCPProxy__upstream_servers - Manage server configurationmcp__MCPProxy__list_registries - List available MCP registriesmcp__MCPProxy__search_servers - Find new servers in registriesmcp__MCPProxy__read_cache - Read paginated resultsmcp__MCPProxy__quarantine_security - Manage quarantined servers| Task | Check This First | Then Use |
|---|---|---|
| Discover tools | Are mcp__MCPProxy__* in tool list? | If yes: retrieve_toolsIf no: Suggest /mcp |
| Call a tool | Are mcp__MCPProxy__* in tool list? | If yes: call_toolIf no: Suggest /mcp |
| Debug MCPProxy | N/A | Use HTTP API sparingly |
When mcp__MCPProxy__* tools are not in your tool list:
Tell the user:
"MCPProxy MCP tools aren't available in this session. Try the
/mcpcommand and select MCPProxy to reconnect."
Do NOT:
Reality: The tools exist when MCP connection is established. Missing tools = connection issue.
# ❌ WRONG - MCP tools are not bash commands
mcp__MCPProxy__retrieve_tools --query "slack tools"
// ✅ CORRECT - Call as MCP tool (function)
mcp__MCPProxy__retrieve_tools({
query: "slack tools"
})
How to tell the difference:
mcp__server__tool pattern → MCP tool (function call)mcpproxy, docker → Bash command (via Bash tool)# ❌ WRONG - Don't do this when MCP tools should work
curl http://127.0.0.1:8080/api/v1/tools?apikey=...
// ✅ CORRECT - Use MCP tools
mcp__MCPProxy__retrieve_tools({query: "search query"})
HTTP API is only for debugging MCPProxy itself.
Agent tries: mcp__MCPProxy__call_tool(...)
Gets error: "No such tool available"
Agent makes:
1. curl attempt with python parsing
2. curl attempt with json.tool
3. curl attempt with grep
4. Python script wrapping curl
5. Different parsing strategy...
STOP! Multiple curl attempts = you're avoiding the real problem: MCP not connected. Suggest /mcp instead.
If you think any of these thoughts, STOP:
mcp__MCPProxy__retrieve_tools as a bash command"mcp__MCPProxy__* tools don't exist, I'll use curl"Reality:
mcp__MCPProxy__* tools exist when MCP connection is establishedWhen an MCP tool call returns an error, check for these patterns. If matched, STOP - retrying won't help.
Unrecoverable errors - STOP and tell the user:
| Error Pattern | What It Means | Tell User |
|---|---|---|
authentication failed, OAuth/token authentication required, authorization required | Upstream server needs re-auth | "Server '{name}' needs re-authentication. Run mcpproxy auth login --server={name} or use the MCPProxy system tray to re-authenticate." |
is not connected, is disabled | Server offline/disabled | "Server '{name}' isn't connected. Check MCPProxy status with mcp__MCPProxy__upstream_servers(operation='list')." |
access_denied, insufficient_scope | Missing permissions | "Server '{name}' lacks permissions for this operation. May need to re-authorize with additional scopes." |
Why retrying won't help:
These errors require user action outside of Claude:
Don't:
If MCPProxy itself isn't working properly (servers won't connect, Docker issues, etc.), you can use these quick checks:
# 1. Is mcpproxy running?
ps aux | grep mcpproxy | grep -v grep
# 2. Get API key
grep '"api_key"' ~/.mcpproxy/mcp_config.json
# 3. Check server status
curl -s "http://127.0.0.1:8080/api/v1/servers?apikey=YOUR_KEY" | python3 -m json.tool
# 4. Check for recent errors
tail -50 ~/Library/Logs/mcpproxy/main.log | grep -i error
Key status fields to check:
connected: Boolean - is the server connected?status: String - current state (connecting, ready, error)last_error: String - most recent error messagetool_count: Number - how many tools availableFix: Add "isolation": {"enabled": false} to the Docker-based server config.
Fix: Put package name as first arg: ["mcp-server-name", "--arg", "value"]
Fix: Check echo $MCPPROXY_API_KEY - environment variable overrides config file.
pkill mcpproxy
sleep 2
open /Applications/mcpproxy.app # macOS
# OR
mcpproxy & # Linux/headless
The capability: Use MCPProxy's tool discovery to find and call tools across all upstream MCP servers.
The pattern:
mcp__MCPProxy__* tools exist/mcp reconnectResult: Fast tool usage with clear error handling.
npx claudepluginhub technicalpickles/pickled-claude-plugins --plugin mcpproxyTests and debugs MCP servers: lists tools, calls with params, interactive shell, web UI via mcptools CLI. For diagnosing tool responses and connectivity.
List tools and invoke calls on MCP servers using fastmcp CLI. Handles HTTP/Python files/configs/stdio targets, schemas, JSON output, auth, and discovery for workflows.
Discovers, analyzes, and executes MCP server tools/prompts/resources. Use for MCP integration, capability discovery, tool filtering, and multi-server management.