GeminiMCP defines a single tool 'gemini_ask' with a well-structured schema and comprehensive parameter descriptions. The tool uses proper mcp-go framework with tool annotations (readOnlyHint, destructiveHint, idempotentHint, openWorldHint) and supports task execution. Schema is strict (additionalProperties: false) with input validation enabled. However, the tool combines multiple responsibilities (query + GitHub context enrichment) and lacks explicit output schema documentation in the provided code. Parameter descriptions are clear and detailed (10-100 chars each, within baseline range), but the overall tool tries to do too much, querying an LLM with optional GitHub context should arguably be two separate tools (gemini_ask + gemini_ask_with_context). The server implements proper error handling infrastructure via mcp-go, but specific error recovery guidance is not visible in the tool definition itself.
gemini_ask sends a prompt to the configured LLM provider, optionally enriched with GitHub repository context (files, PRs, commits, diffs). All github_* parameters are independent and combinable. Returns the model's answer as Markdown text.
Tool 'gemini_ask' combines two distinct responsibilities: sending a query to an LLM AND enriching it with GitHub repository context (files, PRs, commits, diffs). According to pattern:tool, each tool should do exactly one thing. The github_* parameters form an optional enrichment layer that could be a separate tool or resource type.
Output schema is not explicitly documented in the source code. The tool description states 'Returns the model's answer as Markdown text' but there is no structured output schema visible (e.g., {type: 'object', properties: {answer: {type: 'string'}, metadata: {...}}}). LLMs need to know the exact response structure to plan downstream operations.
github_repo parameter is marked as optional in the schema (no mcp.Required() call) but the description states 'Required. Must be always provided when any github_* context parameter is used!' This creates a conditional requirement that LLMs may not understand without explicit validation. Either make it required (mcp.Required()) or implement conditional schema validation.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-21 | C | 62 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 57 | - | v1 |
No explicit error handling guidance visible in tool definition. The tool description does not explain what happens on failure (invalid GitHub ref, API rate limits, malformed queries, authentication failures). Agents need recovery paths, 'If GitHub API rate-limited, try again in 60 seconds' or 'If ref not found, call list_github_branches first'.