An MCP router/gateway that manages multiple upstream MCP connectors (HTTP and stdio), provides policy-based tool access control, handles OAuth authentication, and exposes a unified tool catalog to MCP clients
mcp-gateway exposes 7 tools with basic descriptions but critical gaps in schema completeness and parameter documentation. Tools 1-7 all have descriptions (10-80 chars, mostly under the 194-char baseline), but input schemas are severely incomplete: tools/call and prompts/get show minimal schema detail (only 'name' and 'arguments' with generic descriptions); resources/read has only 'uri' with no type info visible; initialize, tools/list, resources/list, prompts/list lack visible input schemas entirely. No parameter descriptions beyond the tool-level summary. Output schemas are undocumented. Error handling is absent, no recovery guidance, no categorization. Naming is acceptable (verb_noun pattern: list, read, call, get) but generic. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite risk labels in metadata. This is a gateway/router pattern, not a direct tool provider, which limits direct schema visibility, but the HTTP adapter should still expose full schemas to clients.
Initialize MCP session with the gateway, returning protocol version, capabilities, and server info
Get a prompt from a connected connector with optional arguments, enforcing policy-based access control
List all available prompts from connected connectors that are allowed by the client's policy
List all available resources from connected connectors that are allowed by the client's policy
Read a resource from a connected connector, enforcing policy-based access control
Call a tool on a connected connector with the given arguments, enforcing policy-based access control
Input schemas missing or incomplete for 5 of 7 tools (initialize, tools/list, resources/list, prompts/list, and partial for tools/call, resources/read, prompts/get). Only 'name'/'uri'/'arguments' visible with no type constraints, enums, or parameter descriptions.
No output schemas documented for any tool. Clients cannot infer response structure, forcing them to guess field names and types. Breaks tool chaining.
No error handling guidance. Tools lack recovery hints (e.g., 'Tool not found. Call tools/list to discover available tools'). Errors are not categorized as retryable, user-fixable, or fatal.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 49 | 2026-07-28+ | v2 |
List all available tools from connected connectors that are allowed by the client's policy
Tool annotations missing. Risk labels (READ_ONLY, WRITE) exist in metadata but are not exposed as tool annotations (readOnlyHint, destructiveHint, idempotentHint) in the MCP protocol.
Parameter 'arguments' in tools/call and prompts/get is generic object with no schema constraints. LLMs cannot validate argument structure before calling. Should document expected schema per tool or require schema discovery first.