A small, clean MCP server for the Google Gemini API (generate, chat, vision, embed, tokens, models).
Server provides 6 tools with complete input schemas and descriptions. Tool names follow verb_noun convention (gemini_generate, gemini_chat, gemini_vision, gemini_embed, gemini_count_tokens, gemini_list_models). Descriptions are present and contextual (avg ~120 chars), exceeding the 10-char minimum but below the 50-200 char LLM-optimized range. All parameters have type definitions and descriptions. However, output schemas are not documented, responses are described only in prose. Error handling is present but generic (maps HTTP status codes without recovery guidance). No pagination support despite tools that could return large results (gemini_list_models, gemini_embed). Pydantic models enforce input validation, but error messages returned to LLM are not actionable enough to guide self-correction.
Multi-turn chat with Gemini. Maintains conversation history and supports system instructions.
Count tokens in text for a given model. Useful for estimating costs and managing prompt length.
Generate embeddings for texts using Google's embedding models. Useful for semantic search, clustering, and similarity analysis.
Generate text using Google Gemini. Supports system instructions, temperature control, and JSON output mode. Use for single-turn text generation: creative writing, code generation, analysis, translation, summarization, question answering, and more.
List all available Gemini models with their capabilities and pricing information.
Multimodal understanding: analyze images with text prompts. Supports PNG, JPEG, WebP, and GIF.
Output schemas not documented. LLMs cannot plan downstream calls or extract structured data from responses. gemini_generate, gemini_chat, gemini_vision return text; gemini_embed returns embeddings array; gemini_list_models returns model list, none have formal schema definitions.
Error messages are generic HTTP status mappings without recovery guidance. 'Error: Model not found. Use gemini_list_models to see available models.' is good, but most errors (400, 401, 403, 500) lack actionable next steps. LLM cannot self-correct without explicit guidance.
gemini_embed accepts up to 100 texts but no pagination or limit enforcement in response. If API returns all 100 embeddings as dense vectors, response token count could exceed context window. No guidance on result limits or chunking strategy.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | 2026-07-28+ | v2 |
gemini_list_models returns all available models without pagination or limit. Description does not state how many models are returned or if results are truncated. Large result sets waste tokens and degrade LLM reasoning.
Tool descriptions lack WHEN-to-use guidance. 'Generate text using Google Gemini' does not explain when to choose gemini_generate vs gemini_chat. LLMs must infer intent from context alone, increasing misselection risk.