Loading skill
Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Set up MCP Inspector for debugging and testing MCP servers with request logging, response inspection, and protocol validation.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 24% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 47% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 66% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 26% | 0% |
| case-14 | ✗→✓ | ▲ Improved | -43% | 0% |
Set up MCP Inspector for debugging and testing MCP servers.
Invoke this skill when you need to:
| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | serverPath | string | Yes | Path to MCP server entry | | transport | string | No | Transport type (stdio, sse) | | logging | boolean | No | Enable verbose logging |
json{ "mcpServers": { "my-server": { "command": "node", "args": ["dist/index.js"], "env": { "DEBUG": "mcp:*", "NODE_ENV": "development" } } } }
typescript#!/usr/bin/env node import { createServer } from './server'; // Enable debug logging process.env.DEBUG = 'mcp:*'; // Log all stdin/stdout for debugging const originalWrite = process.stdout.write.bind(process.stdout); process.stdout.write = (chunk: any, ...args: any[]) => { if (process.env.MCP_DEBUG_LOG) { const fs = require('fs'); fs.appendFileSync( process.env.MCP_DEBUG_LOG, `[OUT] ${new Date().toISOString()} ${chunk}\n` ); } return originalWrite(chunk, ...args); }; process.stdin.on('data', (chunk) => { if (process.env.MCP_DEBUG_LOG) { const fs = require('fs'); fs.appendFileSync( process.env.MCP_DEBUG_LOG, `[IN] ${new Date().toISOString()} ${chunk}\n` ); } }); // Start server createServer();
json{ "scripts": { "dev": "tsx watch src/index.ts", "debug": "MCP_DEBUG_LOG=./debug.log tsx src/index.ts", "inspect": "npx @anthropic/mcp-inspector node dist/index.js", "test:mcp": "npx @anthropic/mcp-inspector --test node dist/index.js" } }
typescript// tests/mcp-scenarios.ts export const testScenarios = [ { name: 'List Tools', request: { jsonrpc: '2.0', method: 'tools/list', id: 1, }, validate: (response: any) => { return response.result?.tools?.length > 0; }, }, { name: 'Call Tool - search_files', request: { jsonrpc: '2.0', method: 'tools/call', params: { name: 'search_files', arguments: { pattern: '*.ts', path: './src' }, }, id: 2, }, validate: (response: any) => { return !response.error && response.result?.content; }, }, { name: 'List Resources', request: { jsonrpc: '2.0', method: 'resources/list', id: 3, }, validate: (response: any) => { return Array.isArray(response.result?.resources); }, }, ]; // Run test scenarios export async function runScenarios( send: (msg: any) => Promise<any> ): Promise<void> { for (const scenario of testScenarios) { console.log(`Testing: ${scenario.name}`); const response = await send(scenario.request); const passed = scenario.validate(response); console.log(` ${passed ? '✓ PASS' : '✗ FAIL'}`); if (!passed) { console.log(' Response:', JSON.stringify(response, null, 2)); } } }
Other measured skills in the registry, with their headline benchmark lift.