Lint and health-check any Model Context Protocol (MCP) server over stdio. Handshake, tools/list, JSON Schema validation, latency, and safe round-trips.
mcp-probe is a linter/diagnostic tool, not a production MCP server. The example echo-server.js demonstrates three trivial tools with complete schemas and basic descriptions. However, descriptions are minimal (10-50 chars, below the 194-char baseline), parameters lack depth, and error handling is absent. The tools are read-only stubs designed for testing, not real-world use. No tool annotations present despite the feature flag claiming support.
Add two numbers and return the sum.
Return the provided text unchanged.
Health check that returns "pong". Takes no parameters.
Descriptions are too brief (10-50 chars vs. 194-char baseline). 'Return the provided text unchanged' and 'Add two numbers and return the sum' lack context for LLM selection, dependency hints, or use-case guidance.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite feature flag claiming toolAnnotations=true. All three tools are read-only but lack explicit annotation.
No error handling or recovery guidance. The example server silently ignores malformed input and returns generic -32602/-32601 errors without actionable context for LLMs.
Parameter descriptions are minimal or absent. 'text', 'a', 'b' parameters have 1-line descriptions; no format constraints, ranges, or dependency hints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 49 | 2026-07-28+ | v2 |
Output schema not documented. Tools return {content: [{type: 'text', text: ...}]} but LLMs cannot infer this structure from tool definitions alone.