MCP server implementation of Google Custom Search Engine (CSE) API
Single tool with well-structured schema and clear descriptions. The google_search tool has a properly defined JSON Schema with all parameters typed, described, and constrained. Tool name is action-oriented (search_) and unambiguous. Descriptions are adequate but could be more concise (current tool description is 130 chars, well within 10-1024 range; parameter descriptions average ~90 chars, above the 72-char baseline). Error handling is present but generic. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite being a read-only operation. Output schema is documented in the description but not formally in the response structure.
Performs a Google Programmable Search (CSE) query. Returns a JSON list of results, each containing a URL, title, snippet, and pagemap.
Tool lacks readOnlyHint annotation despite being a safe, read-only operation
Output schema not formally documented, response structure inferred from description text
Error responses are generic McpError objects; lack actionable recovery guidance
API key exposed as SecretStr in Pydantic model but correctly injected via environment; good practice but worth documenting in tool description
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | <=2025-11-25 | v2 |