A Go implementation of the Model Context Protocol (MCP) server with support for tools, resources, and prompts
mcp-go provides a framework for building MCP servers but the two example tools are severely underdeveloped. Tool 1 (make_authenticated_request) has a minimal description and only one parameter with a generic type string and no description. Tool 2 (echo) lacks any description entirely and has a parameter with no description. Neither tool documents output schemas, error handling, or recovery guidance. The framework itself supports tool annotations (readOnlyHint, destructiveHint, idempotentHint, openWorldHint) but the examples do not leverage them meaningfully. No pagination, no structured output documentation, no error classification.
Makes an authenticated request
Tool 'echo' has NO description. LLMs cannot determine when or why to select this tool.
Parameter 'message' in both tools lacks descriptions. LLMs cannot infer what 'message' means, is it a request body, a log entry, a chat message? Descriptions are mandatory.
No output schemas documented for either tool. LLMs need to know what fields to expect in responses to plan downstream calls and extract data correctly.
No error handling or recovery guidance. Tools do not indicate what errors are retryable, user-fixable, or fatal, or how to recover.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 34 | <=2025-11-25 | v2 |
Tool 'make_authenticated_request' description is only 26 characters ('Makes an authenticated request'). This one barely exceeds the threshold but lacks WHAT it authenticates, WHEN to use it, and WHAT it returns.