MCP server for scraping business listings from Google Maps using Playwright
Two tools with basic schemas and descriptions, but significant gaps in parameter documentation, output schema clarity, and error handling. Tool names follow verb_noun convention (scrape_google_maps, scrape_and_save), but descriptions lack actionable context for LLM selection. Parameters have types and defaults but lack detailed constraints and format guidance. No documented output schemas, error recovery guidance, or validation rules. Naming issue: 'scrape_and_save' violates single-responsibility principle, combines scraping and file persistence.
Scrape Google Maps and save results to a file.
Scrape business listings from Google Maps based on a search keyword. Returns a list of businesses with name, contact, rating, category, address, website, and link.
Tool 'scrape_and_save' violates single-responsibility principle by combining scraping and file persistence. Should split into separate tools: scrape_google_maps (already exists) and save_results_to_file.
No documented output schemas. Both tools return data but LLM cannot predict structure (list of dicts with fields: name, contact, rating, category, address, website, link). Must document return type and field descriptions.
Parameter descriptions lack actionable constraints. 'data_count' has no min/max bounds (unbounded integers invite absurd values). 'format' enum is present but description does not explain when to use xlsx vs csv.
No error handling or recovery guidance. Code catches exceptions and logs them, but tool responses do not guide LLM on retry strategy, user-fixable errors, or next steps on failure.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 42 | <=2025-11-25 | v2 |
Tool descriptions lack WHEN/WHY context. 'Scrape business listings from Google Maps' does not explain when to call this vs scrape_and_save, what prerequisites exist (e.g., Playwright browser setup), or what the LLM should do with results.