A basic MCP server implementation using Express.js with JSON-RPC protocol support
This is a bare-bones demo server with critically inadequate tool definitions. Both tools lack proper parameter schemas, descriptions are minimal, and there is no output schema documentation. The 'initialize' tool is a protocol anti-pattern (stateless MCP requires no explicit initialize call). The 'echo' tool has a trivial implementation with no real functionality. Neither tool provides actionable guidance for LLM use.
Echo tool
Initialize the MCP server and retrieve capabilities
No input parameter schemas defined for either tool. 'echo' accepts a raw 'params' string with no type validation, description, or constraint.
'initialize' tool is an anti-pattern. MCP 2026-07-28 spec mandates stateless operation, each request carries protocol version and capabilities in _meta. Explicit initialize() handshake is removed (was Mcp-Session-Id stateful mode). This tool should not exist.
Tool descriptions are far too short and non-actionable. 'Echo tool' (9 chars) does not explain when an LLM should call it, what it returns, or its purpose. Baseline is 194 chars.
No output schema is documented anywhere. LLMs cannot infer what fields 'initialize' or 'echo' return, forcing them to guess and potentially fail on downstream tool composition.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 21 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 21 | - | v1 |
No error handling or recovery guidance. If a call fails, the JSON-RPC error response (e.g., 'Method not found') provides no actionable next steps for the agent.
The 'echo' parameter is described generically as 'The text to echo back' but the schema shows it accepts any JSON-RPC params object. Ambiguous typing invites invalid input.