plugins/core/skills/mcp-debug/SKILL.md
Use when testing MCP servers, debugging MCP tool responses, exploring MCP capabilities, or diagnosing why an MCP tool returns unexpected data
npx skillsauth add technickai/ai-coding-config mcp-debugInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Before using MCP debug commands, ensure mcptools is installed:
# Check if installed
which mcp || which mcpt
# Install via Homebrew (macOS)
brew tap f/mcptools && brew install mcp
# Or via Go
go install github.com/f/mcptools/cmd/mcptools@latest
If mcptools is not found, install it first before proceeding. </prerequisites>
<config-discovery> MCP server configs can come from multiple sources:~/.config/claude/claude_desktop_config.jsonhttp://localhost:9900 with optional authmcp alias addTo find available servers:
# Scan all known config locations
mcp configs scan
# List saved aliases
mcp alias list
</config-discovery>
<commands>
See what tools/operations an MCP server provides:
# HTTP server with bearer auth
mcp tools http://localhost:9900 --headers "Authorization=Bearer $AUTH_TOKEN"
# Using an alias
mcp tools server-alias
# Pretty JSON output
mcp tools --format pretty http://localhost:9900
Execute an MCP tool directly with parameters:
# Call with JSON params
mcp call describe --params '{"action":"describe"}' http://localhost:9900 \
--headers "Authorization=Bearer $AUTH_TOKEN"
# Gateway-style (single tool with action param)
mcp call server-tool --params '{"action":"messages_recent","params":{"limit":5}}' \
http://localhost:9900 --headers "Authorization=Bearer $AUTH_TOKEN"
# Format output as pretty JSON
mcp call tool_name --params '{}' --format pretty http://localhost:9900
Open persistent connection for multiple commands:
mcp shell http://localhost:9900 --headers "Authorization=Bearer $AUTH_TOKEN"
# Then in shell:
# mcp> tools
# mcp> call describe --params '{"action":"describe"}'
Visual debugging in browser:
mcp web http://localhost:9900 --headers "Authorization=Bearer $AUTH_TOKEN"
# Opens http://localhost:41999
</commands>
<example-server>
Many MCP servers use a gateway pattern - a single tool with an action parameter for
progressive disclosure:
# List all operations
mcp call server-tool --params '{"action":"describe"}' http://localhost:9900 \
--headers "Authorization=Bearer $AUTH_TOKEN"
# Call specific operation
mcp call server-tool --params '{"action":"resource_list","params":{"limit":5}}' \
http://localhost:9900 --headers "Authorization=Bearer $AUTH_TOKEN"
# Check if server is responding
curl -s http://localhost:9900/health
# List all tools via mcptools
mcp tools http://localhost:9900 --headers "Authorization=Bearer $AUTH_TOKEN"
# Get operation descriptions
mcp call server-tool --params '{"action":"describe"}' --format pretty \
http://localhost:9900 --headers "Authorization=Bearer $AUTH_TOKEN"
# Test a specific operation
mcp call server-tool --params '{"action":"resource_list","params":{"limit":3}}' \
--format pretty http://localhost:9900 --headers "Authorization=Bearer $AUTH_TOKEN"
</example-server>
<troubleshooting>
Connection refused
curl http://localhost:9900/healthps aux | grep mcp-server)tail -20 /path/to/server/logs/error.log401 Unauthorized
echo $AUTH_TOKENAuthorization=Bearer (mcptools uses =, HTTP uses
:)Tool not found
action paramEmpty/error results
mcptools not found
brew tap f/mcptools && brew install mcpgo install github.com/f/mcptools/cmd/mcptools@latestVerify connectivity
curl -s http://localhost:9900/health
List available tools
mcp tools http://localhost:9900 --headers "Authorization=Bearer $AUTH_TOKEN"
Get operation descriptions
mcp call server-tool --params '{"action":"describe"}' --format pretty \
http://localhost:9900 --headers "Authorization=Bearer $AUTH_TOKEN"
Test specific operation
mcp call server-tool --params '{"action":"resource_list","params":{"limit":3}}' \
--format pretty http://localhost:9900 --headers "Authorization=Bearer $AUTH_TOKEN"
If issues, check logs
tail -50 /path/to/server/logs/error.log
MCP tools return JSON with this structure:
{
"content": [
{
"type": "text",
"text": "{ ... actual result as JSON string ... }"
}
]
}
The inner text field contains the actual result, often as a JSON string that needs
parsing. Use jq to extract:
mcp call server-tool --params '...' --format json http://localhost:9900 \
--headers "Authorization=Bearer $AUTH_TOKEN" \
| jq -r '.content[0].text' | jq .
</output-interpretation>research
Use when analyzing YouTube videos, extracting insights from tutorials, researching video content, or learning from talks and presentations
tools
Use when writing prompts, agent instructions, SKILL.md, commands, system prompts, Task tool prompts, prompt engineering, or LLM-to-LLM content
development
Use when writing, reviewing, or refactoring React or Next.js code, optimizing React performance, fixing re-render issues, reducing bundle size, eliminating waterfalls, or improving data fetching patterns
development
Use when debugging bugs, test failures, unexpected behavior, or needing to find root cause before fixing