working-with-mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited working-with-mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
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:
Examples of what you're looking for:
mcp__MCPProxy__retrieve_tools
mcp__MCPProxy__call_tool
mcp__MCPProxy__upstream_serversDecision:
If 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-tools*Missing `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__executeCodeWhen MCPProxy is NOT connected:
Available tools:
- Bash
- Read
- Write
- mcp__ide__getDiagnostics
- mcp__ide__executeCode
← No mcp__MCPProxy__* tools = Connection issueKey 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_tools<br>If no: Suggest /mcp |
| Call a tool | Are mcp__MCPProxy__* in tool list? | If yes: call_tool<br>If 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 /mcp command 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 errorKey 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 available#### "the input device is not a TTY" (Docker servers) Fix: Add "isolation": {"enabled": false} to the Docker-based server config.
#### "unexpected argument found" (uvx/npx servers) Fix: Put package name as first arg: ["mcp-server-name", "--arg", "value"]
#### "Invalid or missing API key" after restart Fix: Check echo $MCPPROXY_API_KEY - environment variable overrides config file.
pkill mcpproxy
sleep 2
open /Applications/mcpproxy.app # macOS
# OR
mcpproxy & # Linux/headlessThe 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.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.