Command-line interface for interacting with Model Context Protocol servers
This MCP server exposes a CLI-like interface to interact with remote MCP servers. While tool names follow verb_noun conventions and basic schemas are present, there are significant gaps in descriptions, parameter documentation, and output schema clarity. Most tools have minimal or trivial descriptions (under 50 chars), parameters lack descriptions entirely, and return types are undocumented. The server conflates MCP protocol operations (initialize, notifications/initialized) with actual user-facing tools, which violates single-responsibility and composition principles. Error handling is absent from tool definitions. The codebase shows HTTP transport implementation with SSE fallback, but tool definitions are inferred from method calls rather than explicitly registered with full metadata.
Initialize the MCP client connection with the server
Notify the MCP server that the client has initialized
Get a specific prompt by name with optional arguments
List all available prompts from the MCP server
List all available resources from the MCP server
Read the contents of a specific resource by URI
List all available resource templates from the MCP server
Tool descriptions are trivial (10-40 chars), 'List all available tools' provides no context for when/why an LLM should call this tool vs another discovery method. Rubric requires 10 - 1024 chars with clear WHAT/WHEN/WHY guidance.
Parameter descriptions are completely absent. 'prompts/get' accepts 'arguments' (type: object) with no explanation of expected structure, required keys, or nesting. LLMs cannot infer what to pass.
Output schemas are undocumented. Methods like list_tools(), call_tool(), get_resource() return data structures (tools array, content array, contents list) but tool definitions do not declare what fields/types the LLM should expect.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 47 | <=2025-11-25 | v2 |
Call a specific tool on the MCP server with given arguments
List all available tools from the MCP server
Protocol operations (initialize, notifications/initialized) are exposed as tools. These are lifecycle/handshake methods, not user-facing capabilities. Mixing protocol machinery with business tools violates single-responsibility (pattern:tool) and confuses LLM reasoning about when to call them.
No error handling or recovery guidance in tool definitions. Code shows error checking (ValueError, -32601 for unsupported methods) but tool descriptions do not explain retryability, what to do on failure, or expected error conditions.
prompts/get parameter 'arguments' is type: object with no constraints, enum, or schema. LLMs will guess at structure. Should specify required keys, acceptable value types, or provide examples via description.
resources/read 'uri' parameter lacks validation rules (format, length, allowed characters). Description does not explain URI scheme expectations (e.g., 'file://', 'custom://', etc.) or what happens on invalid URIs.
tools/call parameter 'arguments' is type: object with no guidance on structure. Should document that it is arbitrary JSON matching the called tool's schema, or provide format constraints.