MCP server that exposes Google Maps lead generation and scraping capabilities through the MCP interface
Single tool 'scrape_google_maps' has a descriptive summary but lacks critical schema details and parameter validation guidance. The tool description is adequate (172 chars, within baseline 34-392), but input schema is incomplete: 'query' and 'max_results' parameters have basic type declarations but lack constraints, validation rules, and format guidance. No output schema is documented. Error handling is not visible in the provided code. The tool does one job (scrape Google Maps) but the interface is underspecified for LLM safety and clarity. Tool registration via FastMCP is present but lacks toolAnnotations (readOnlyHint, idempotentHint, etc.) despite being a READ_ONLY operation.
Scrape business leads from Google Maps. Extracts comprehensive business information including name, address, phone, website, rating, and review count. Results are automatically validated and scored for lead quality.
Input schema lacks validation constraints. 'query' is a free-form string with no length limits, character restrictions, or format guidance; 'max_results' is an integer with stated 'default: 100, max: 500' in description but no schema-level min/max declarations. LLMs cannot parse textual constraints, they require formal JSON Schema minLength, pattern, minimum, maximum fields.
No output schema documented. The tool description mentions returning 'comprehensive business information including name, address, phone, website, rating, and review count' but no formal response structure (JSON Schema, field types, nesting) is visible. LLMs cannot plan downstream operations or extract fields without a documented output schema.
No tool annotations present. The tool is READ_ONLY (non-destructive) but lacks an explicit readOnlyHint annotation in the schema. This forces the LLM to infer safety from the description alone, risking misclassification in agentic planning.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 48 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 38 | 2025-11-25+ | v1 |
Parameter 'query' lacks guidance on expected format and scope. No hint that 'coffee shops in Seattle' is a valid format, or what happens if the query is empty, too broad (e.g. 'retail'), or malformed (e.g. special characters). Description should state 'A location-based search term (e.g., business type + city), 5-100 characters, alphanumeric + spaces.'
No error handling or recovery guidance visible in source. If Google Maps is unreachable, query returns 0 results, or rate limits are hit, what does the tool return? Description must address: 'Returns error with guidance if scraping fails (e.g., "Google Maps temporarily unavailable. Retry in 5 minutes.")' Error responses should categorize as retryable vs. user-fixable.
STDIO transport only. Server is not remotely accessible and cannot be used by hosted MCP clients (Claude, non-local deployments). Hard cap of 50 on protocolReadiness applies.