Auto-generate Model Context Protocol (MCP) servers from OpenAPI specifications
MCPForge provides 11 tools across calculator, GitHub, and weather domains. All tools have descriptions (10-200 chars, within baseline range) and input schemas with typed parameters. However, schemas lack depth: no enums for constrained values (e.g., 'sort' and 'state' params accept free-form strings), no output schemas documented, and error handling is absent. Parameter descriptions are present but minimal (avg ~40 chars vs baseline 72 chars). No tool annotations (readOnlyHint, destructiveHint). Tools are well-named with action verbs (add, subtract, list, get, search) and single responsibilities. Composition is sound, tools chain naturally (e.g., search_repos → get_repo). Missing: pagination guidance in list_repos/list_issues, output field documentation, and recovery hints in error cases.
Add two numbers together.
Safely evaluate a mathematical expression string. Supports: +, -, *, /, //, **, %, and functions: abs, round, sqrt, ceil, floor, log, log2, log10, sin, cos, tan. Constants: pi, e, inf.
Divide a by b.
Get a multi-day weather forecast for a city.
Get detailed information about a specific GitHub repository.
Get current weather conditions for a city.
List issues for a GitHub repository.
No output schemas documented. LLMs cannot infer what fields to expect from tool responses, forcing them to guess at downstream field names and risk broken tool chains.
Constrained parameters lack enums. 'sort' (list_repos, search_repos), 'state' (list_issues), and 'units' (get_weather, get_forecast) accept free-form strings instead of declared enums, inviting hallucinated invalid values.
No error handling or recovery guidance. Tools do not document what happens on failure (e.g., divide by zero, invalid GitHub user, API rate limit, network timeout) or how the LLM should respond.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
List public repositories for a GitHub user or organisation.
Multiply two numbers.
Search GitHub repositories by keyword, language, or other qualifiers.
Subtract b from a.
No tool annotations. Tools lack readOnlyHint, destructiveHint, or idempotentHint metadata, preventing clients from applying safety policies or caching strategies.
Pagination not documented. list_repos, search_repos, and list_issues accept per_page but do not document total count, next_cursor, or how to iterate large result sets.