Claude-skill-registry-data mcp-tester
Test MCP server connectivity and tool execution. Use when adding new MCP servers, debugging tool integration, or verifying tool availability. Supports stdio, http, and sse server types.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry-data
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry-data "$T" && mkdir -p ~/.claude/skills && cp -r "$T/data/mcp-tester" ~/.claude/skills/majiayu000-claude-skill-registry-data-mcp-tester && rm -rf "$T"
manifest:
data/mcp-tester/SKILL.mdsource content
MCP Server Testing
Test and debug MCP (Model Context Protocol) server connections.
Server Types
| Type | Transport | Use Case |
|---|---|---|
| Standard I/O | Local processes, CLI tools |
| HTTP/HTTPS | Remote APIs, cloud services |
| Server-Sent Events | Streaming endpoints |
Test Categories
1. Connection Test
Verify server is reachable and initializes correctly.
# Test stdio server npx -y @modelcontextprotocol/inspector stdio -- npx -y @modelcontextprotocol/server-filesystem /tmp # Test HTTP server curl -X POST https://mcp.service.com/initialize \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","method":"initialize","params":{},"id":1}'
2. Tool Discovery
List available tools from a connected server.
# Using MCP inspector npx -y @modelcontextprotocol/inspector stdio -- python ./mcp_servers/my_server.py # Check tool listing curl -X POST https://mcp.service.com/tools/list \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","method":"tools/list","params":{},"id":2}'
3. Tool Execution
Test individual tool invocation.
# Python test script import asyncio from mcp import ClientSession, StdioServerParameters from mcp.client.stdio import stdio_client async def test_tool(): server_params = StdioServerParameters( command="npx", args=["-y", "@modelcontextprotocol/server-filesystem", "/tmp"] ) async with stdio_client(server_params) as (read, write): async with ClientSession(read, write) as session: await session.initialize() # List tools tools = await session.list_tools() print(f"Available tools: {[t.name for t in tools.tools]}") # Execute tool result = await session.call_tool( "read_file", {"path": "/tmp/test.txt"} ) print(f"Result: {result.content}") asyncio.run(test_tool())
4. Error Handling
Verify graceful error handling.
# Test invalid tool call try: result = await session.call_tool("nonexistent_tool", {}) except Exception as e: print(f"Expected error: {e}") # Test invalid parameters try: result = await session.call_tool("read_file", {"invalid": "param"}) except Exception as e: print(f"Expected error: {e}")
Configuration Validation
.mcp.json Schema
{ "mcpServers": { "server-name": { "type": "stdio | http | sse", "command": "string (for stdio)", "args": ["array", "of", "args"], "env": { "VAR": "value or ${ENV_VAR}" }, "url": "string (for http/sse)", "headers": { "Authorization": "Bearer ${TOKEN}" } } } }
Environment Variable Expansion
{ "env": { "API_KEY": "${MY_API_KEY}", "BASE_URL": "${BASE_URL:-http://localhost:8080}" } }
Debugging Commands
# Check if server process starts npx -y @modelcontextprotocol/server-filesystem /tmp # Verbose mode for debugging DEBUG=mcp:* npx -y @modelcontextprotocol/inspector stdio -- ./my_server # Check environment variables env | grep -E 'API_KEY|TOKEN|URL' # Test HTTP endpoint curl -v https://mcp.service.com/health
Common Issues
| Issue | Cause | Solution |
|---|---|---|
| Connection refused | Server not running | Start server process |
| Tool not found | Wrong tool name | Check response |
| Auth error | Missing/invalid token | Set environment variable |
| Timeout | Server slow/hanging | Check server logs |
| Parse error | Invalid JSON-RPC | Validate request format |
Health Check Endpoint
@app.get("/health") async def health_check(): """MCP server health check.""" return {"status": "healthy", "version": "1.0.0"}