A Model Context Protocol (MCP) server for the ELIZA chatbot, a classic chatbot that simulates a Rogerian psychotherapist
The server defines 4 tools with explicit schemas and descriptions visible in src/index.ts. Tool names follow verb_noun convention (eliza_chat, eliza_reset, eliza_get_initial, eliza_get_final). Descriptions are present but generic (avg ~100 chars, baseline is 194). Input schemas are present with proper JSON Schema structure. However, parameter descriptions are missing, the 'message' parameter in eliza_chat has a description, but eliza_reset, eliza_get_initial, and eliza_get_final have empty properties with no constraints documented. Output schema is undocumented, responses are returned as text/JSON strings with no formal schema declaration. Error handling exists (try-catch with error messages) but lacks recovery guidance. No parameter validation constraints (enums, ranges, patterns). Tool composition is reasonable (each does one thing) but overall the definitions lack the rigor expected of production tools.
Send a message to ELIZA chatbot and receive a response. ELIZA is a classic chatbot that simulates a Rogerian psychotherapist.
Get ELIZA's farewell message when ending the conversation.
Get ELIZA's initial greeting message to start a new conversation.
Reset the ELIZA conversation, clearing all memory and starting fresh.
Empty inputSchema for three tools (eliza_reset, eliza_get_initial, eliza_get_final). While technically valid, the lack of explicit parameter documentation or constraints violates pattern:constrained-input. Tools with no parameters should still document what they return and any side effects.
Tool descriptions are generic and lack WHEN-to-use guidance. 'Send a message to ELIZA chatbot and receive a response' does not tell an LLM when to prefer eliza_chat over other tools or what the response format is. Descriptions should be 50-200 chars and action-oriented (baseline avg 194 chars).
No output schema documentation. Tools return text-wrapped JSON or plaintext, but the agent does not know the structure in advance. A formal outputSchema (or documented response format) is required per pattern:tool. Example: eliza_chat returns {response: string, quit: boolean}, this should be declared.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | 2026-07-28+ | v2 |
Error responses lack recovery guidance. A bare 'Error: Message is required' or 'Unknown tool' does not tell the LLM what to do next. Per pattern:recovery-guide, errors should suggest: 'Message is required, pass a non-empty string in the message parameter.'
No parameter constraints or validation rules. The 'message' parameter in eliza_chat accepts any string with no documented length limits, format, or content restrictions. Per pattern:constrained-input, enums and length constraints should be explicit.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). While 'risk' metadata is provided in the evaluation briefing (READ_ONLY, REVERSIBLE), these should be declared in the MCP tool schema itself to guide agent safety decisions.