MCP server for any OpenAPI spec. Dynamically generates tools from OpenAPI specifications and allows calling API endpoints through the MCP protocol.
Single tool 'dynamic_openapi_tools' has critical definition gaps. Input schema is declared as empty object with dynamic generation promise, but no actual schema is visible in source code, only a description stating schemas are 'dynamically generated per operation.' Tool description is generic (98 chars) and lacks specificity about what operations are available, when to use this tool, or what it returns. No parameter descriptions visible. No output schema documented. The tool name itself is vague ('dynamic_openapi_tools' vs action verbs like 'call_openapi_operation'). Code shows OperationMeta registry and tool generation logic, but the actual tool registration with MCP is not visible in the provided source, only inference from tool_caller.py.
Dynamically generated tools from OpenAPI specifications. Each tool corresponds to an operation in the OpenAPI spec and is named using the operationId or method_path pattern, optionally prefixed with a service name.
Input schema is declared empty with promise of dynamic generation, but no actual schema is visible in source code.
Tool name 'dynamic_openapi_tools' is generic and does not start with an action verb. Should be 'call_openapi_operation' or 'invoke_api_endpoint' to clarify intent. Current name does not convey what happens when called.
Tool description (98 chars) is too generic: 'Dynamically generated tools from OpenAPI specifications...' Does not explain WHEN to use this tool, what operations are available, or what the response structure is. Lacks LLM-optimized guidance.
No output schema documented. LLMs cannot plan downstream calls or extract data without knowing response structure. Tool returns vary by operation but no documentation of common fields (status, data, error).
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 24 | <=2025-11-25 | v2 |
Tool definition is inferred from code (tool_caller.py registry and generation logic) rather than explicitly visible in MCP tool registration.