MCP server for getting second opinions on code using Gemini AI, enhanced with Perplexity insights and Stack Overflow references
The server defines a single tool 'get_second_opinion' with a clear action verb and reasonable description. The input schema is present and includes proper JSON Schema structure with types and descriptions for all parameters. However, there are significant gaps in parameter descriptions (some are minimal), no output schema documentation, and missing structured error guidance. The tool follows basic composition principles but lacks the depth expected of production-grade implementations.
Get a second opinion on a coding problem using Google's Gemini AI, enhanced with Perplexity insights and Stack Overflow references
No output schema documentation. The tool returns a text response with an optional markdown file path, but LLMs cannot determine what fields to expect or how to parse the response for downstream operations.
Parameter descriptions are minimal and lack actionable guidance. 'What the developer is trying to accomplish' and 'Any error messages they're seeing' do not explain constraints, expected format, or dependencies. No indication of what happens when parameters are omitted or how they interact.
Error handling returns raw API errors ('Gemini API error: ...' without recovery guidance). LLMs cannot determine if the error is retryable, whether to ask the user, or what alternative action to take.
Tool makes external API calls (Gemini, Perplexity, Stack Overflow) with no explicit timeout configuration or partial failure handling. If Perplexity or Stack Overflow fails, the entire operation fails rather than gracefully degrading.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 69 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 48 | - | v1 |
API keys (GEMINI_API_KEY, PERPLEXITY_API_KEY) are required environment variables, which is correct, but there is no validation that they are set before the server starts. If an API key is missing, the server will crash ungracefully.
The 'filePath' parameter accepts arbitrary file paths. There is no documented sandboxing or path traversal protection. An LLM could potentially be tricked into reading sensitive files outside the intended scope.