MCP server that multiplexes and proxies requests to multiple downstream MCP servers
This multiplexer server exposes 6 tools that proxy calls to downstream MCP servers. While tool names follow verb_noun convention (list_*, get_*, read_*, call_*), descriptions are minimal (10-50 chars, well below the 194-char baseline). Critical gaps: no input parameter descriptions (e.g., 'arguments' param in handle_get_prompt lacks guidance on expected structure), no output schemas documented, no error handling guidance, and no validation rules. The handle_call_tool tool accepts arbitrary 'arguments' as an untyped object with no constraints or examples. Tool definitions are visible in source but lack the depth needed for reliable LLM selection and parameter binding.
Calls a tool on connected downstream MCP servers
Retrieves a specific prompt from connected downstream MCP servers
Lists all prompts from connected downstream MCP servers
Lists all resources from connected downstream MCP servers
Lists all tools from connected downstream MCP servers
Reads a specific resource from connected downstream MCP servers
Parameter descriptions missing. 'arguments' param in handle_get_prompt and handle_call_tool lacks guidance on expected structure, type constraints, or examples. LLMs cannot infer valid argument shapes.
No output schemas documented. Tools return types.Prompt, types.Tool, types.TextContent, etc., but no schema is exposed describing fields, structure, or required vs optional properties. Agents cannot plan downstream calls.
No error handling or recovery guidance. If a downstream server is unreachable or returns an error, the tool provides no actionable message. Agents cannot distinguish retryable vs fatal failures.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 43 | 2026-07-28+ | v2 |
Tool descriptions are 10 - 50 characters, well below the 194-char baseline. Descriptions lack context on WHEN to use each tool, WHAT it returns, and HOW it differs from similar tools.
handle_call_tool accepts arbitrary 'arguments' object with no type constraints, validation, or examples. LLMs may pass invalid argument structures that fail silently on downstream servers.