MCP server for GeoLink (geolink-eg.com) — geocoding, place search, routing, distance matrix, nearest-branch ranking, and grid-based area coverage sweeps for AI agents.
geolink-mcp defines 7 geolocation tools with consistent naming (verb_noun pattern: geolink_geocode, geolink_search_places, etc.) and reasonable descriptions (80 - 180 chars). All tools have input schemas with typed parameters and descriptions. However, output schemas are not documented in the visible code, only inferred from descriptions. Parameter descriptions lack detail on constraints (e.g., coordinate format, language codes, grid spacing units). Error handling is minimal; no recovery guidance or actionable error messages visible. Tool composition is sound (each does one thing), but descriptions could better explain when to use each tool vs. alternatives. Baseline: avg tool description ~120 chars (within 10 - 1024 range), all params typed, but output structure undocumented.
Calculate travel times and distances between multiple origins and destinations.
Find the nearest location(s) to an origin by road travel time or distance.
Convert an address or place name to coordinates and bounds.
Get directions and routing information between two locations.
Convert coordinates to an address and place name.
Search for places of a specific type near a location.
Output schemas not documented. Tool descriptions state what is returned (e.g., 'coordinates and bounds') but do not specify the JSON structure, field names, or types. LLMs cannot plan downstream tool calls or extract data reliably without knowing response shape.
Parameter constraints underspecified. 'language' accepts 'en', 'ar' but no enum declared; 'response_format' defaults to 'json' but alternatives not listed; coordinate format ('lat,lng') mentioned in descriptions but not formalized as regex or pattern. LLMs may pass invalid values.
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2025-06-18+ | v2 |
Comprehensively search for places across an entire area using a grid-based sweep.
geolink_sweep_area has complex nested 'area' parameter (object with conditional properties: bounds, place, center+radius, governorate). No clear guidance on which properties are mutually exclusive or required. LLMs may pass invalid combinations.
No error handling guidance visible. Tool descriptions do not explain failure modes, recovery steps, or when to retry. E.g., if geocoding fails for an ambiguous address, should the LLM call search_places or ask the user?
Tool selection guidance weak. Descriptions explain what each tool does but not when to prefer one over another. E.g., when should an LLM use geolink_find_nearest vs geolink_search_places? The server instructions mention this but tool descriptions do not.