Companion code for 'From SSE to Streamable HTTP' — MCP Dev Summit Bengaluru 2026. Demonstrates three transport implementations (stdio, deprecated dual-endpoint HTTP+SSE, and current Streamable HTTP) for the same MCP tool.
Single tool with clear naming (github_repo_stats) and adequate schema. Description is concise (97 chars, within 10-1024 range). Input schema properly defined with Zod, both parameters typed and described. However, output schema is not formally documented in the tool definition, only visible in the implementation. No error handling guidance, no parameter constraints (e.g., owner/repo format validation), and no mention of rate limits or prerequisites. Follows basic pattern:tool but lacks depth in error recovery and output documentation expected of production tools.
Fetches public statistics (stars, forks, issues, language) for a GitHub repository.
Output schema not documented in tool definition. Only visible in implementation (githubRepoStats function returns object with repo, description, stars, forks, open_issues, primary_language, last_updated, url). LLMs cannot plan downstream operations without knowing return structure.
No error handling guidance. Tool throws generic 'GitHub API {status}: {statusText}' on failure. LLM receives no recovery path (e.g., 'Try with a different owner/repo name' or 'Rate limited, retry in 60s'). Violates pattern:recovery-guide.
No input validation or constraint documentation. Parameters 'owner' and 'repo' are bare strings with no length limits, format patterns, or examples of valid values. LLM may pass invalid GitHub identifiers without guidance.
Rate limit not mentioned in description. GitHub API allows 60 req/hr per IP without auth. Tool description omits this prerequisite, risking agent exhaustion of quota without awareness.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
Tool is read-only but lacks explicit idempotentHint annotation. While safe to retry, LLM cannot infer this from schema alone. Missing tool annotation per current MCP spec (2026-07-28).