A Python port of the MCP Forge Go project. Provides MCP server with OAuth integration, JWT validation, and configurable tools.
Two tools with minimal but present schemas and descriptions. hello_world has a basic string parameter with description; whoami has no parameters. Both descriptions are short (under 100 chars) and lack context on WHEN to use them, prerequisites, or what the return value contains. No output schemas documented. No error handling guidance. Tool names are verb-based but descriptions do not explain the JWT scope requirements clearly enough for LLM selection. Missing parameter type annotations in visible code (inferred from description text only).
Say hello to someone. Requires tool:user scope (or no JWT in stdio mode).
Expose information about the user from the JWT payload. Requires tool:admin scope (or no JWT in stdio mode).
No output schemas documented for either tool. LLMs cannot plan downstream calls or extract return values without knowing the response structure.
Descriptions lack WHEN/WHY context. 'Say hello to someone' does not explain when to call this vs other tools, or what the return value is. Descriptions should be 50-200 chars and answer: what, when, what does it return?
JWT scope requirements ('tool:user', 'tool:admin') mentioned in descriptions but not enforced or validated in visible tool code. No error handling for permission denial.
whoami tool has zero input parameters but description does not explain what data it returns or how it differs from hello_world. Ambiguous tool selection.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 49 | 2026-07-28+ | v2 |
No error handling guidance. If JWT validation fails or user lacks scope, what error does the LLM receive? How should it recover?