From ai-coding-config
Tests and debugs MCP servers: lists tools, calls with params, interactive shell, web UI via mcptools CLI. For diagnosing tool responses and connectivity.
npx claudepluginhub technickai/ai-coding-config --plugin ai-coding-configThis skill uses the workspace's default tool permissions.
<objective>
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.
Manages MCP servers by discovering, analyzing, and executing tools/prompts/resources via CLI scripts. Use for integrations, capability discovery, tool filtering, and context bloat resolution.
Discover tools, resources, and prompts from MCP servers and invoke them on-demand via mcp CLI without permanent integration or context pollution.
Share bugs, ideas, or general feedback.
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.
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
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
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"
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 .