A FastAPI-based proxy server that connects to MCP (Model Context Protocol) servers and exposes their tools through HTTP endpoints, integrating with Claude AI for intelligent tool invocation
This MCP server exposes 3 tools via HTTP+FastAPI. While the transport is current (HTTP), the tool definitions have critical gaps. Tools have brief descriptions but lack parameter type definitions in visible schemas, lack input validation guidance, and lack output schema documentation. The 'query' tool attempts complex multi-turn reasoning with Claude but does not expose this complexity in its interface. Parameter descriptions are minimal. No error handling guidance is provided to LLMs. The server acts as a proxy/orchestration layer rather than exposing discrete, composable operations, a violation of single-responsibility tool design.
Returns the name of the connected MCP server
Returns a list of all available tools from the connected MCP server
Process a user query through Claude AI with access to available tools from the connected MCP server
query tool has no visible input schema defining parameter types. The code shows a Pydantic BaseModel with a 'query' field, but no JSON Schema is registered or returned to MCP clients. Cannot verify parameter type definitions.
No output schemas documented for any tool. LLMs cannot plan downstream operations or parse responses without knowing the structure of returned data. The 'query' tool returns a dict with 'response' key, but this is not formally documented in the tool definition.
query tool description (42 chars) is below the 50-char baseline and lacks WHEN guidance. It does not explain that this tool internally orchestrates Claude + MCP server interaction, which is a critical design detail affecting agent planning.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-21 | F | 44 | 2025-06-18+ | v2 |
| 2026-03-09 | F | 22 | - | v1 |
get_server_name tool always returns a hardcoded string 'Algolia-MCP'. This is not a query of the connected server, it is a static value. Either the implementation should read the actual server name, or the tool should be removed as redundant.
get_tools description (39 chars) is minimal and does not explain that it returns tool names only (not full schemas). LLMs need to know whether they can call tools or only discover names.
No error handling guidance in any tool description. If the query tool fails (MCP server down, Claude API error, invalid tool call), the LLM receives no recovery hints. This violates the recovery-guide pattern.
Composition violation: the query tool combines three concerns, (1) orchestrating multi-turn reasoning, (2) calling downstream MCP server tools, (3) integrating Claude API. This should be decomposed into separate discovery, execution, and reasoning tools so the agent can compose them.