MCP server for location-based business recommendation using geospatial analysis and LLM-driven demographic targeting
Single tool 'recommend_location' has a complete JSON Schema with proper types and required fields, but suffers from critical naming and description issues. The tool name does not start with a clear action verb (recommend is weak; suggest_location or find_location would be stronger). Description is in Korean, making it inaccessible to English-speaking LLMs and violating the principle that descriptions should be LLM-optimized. Parameter descriptions are present but also in Korean. No output schema is documented, the tool returns a complex JSON object (answer, target, center, recommendations, statistics, nearby_places) but LLMs have no formal specification of these fields. Error handling returns plain text errors without recovery guidance. The tool is READ_ONLY (good), but lacks idempotent/destructive annotations.
업종 타깃 인구통계로 지역 내 입지를 조회한다
Tool description and all parameter descriptions are in Korean, not English. LLMs trained primarily on English will not understand the intent or constraints. Descriptions must be in English for cross-LLM compatibility.
No output schema documented. The tool returns a complex object with fields (answer, target, center, recommendations, statistics, nearby_places) but LLMs have no formal specification of these fields' types or structure. This forces LLMs to guess how to parse and use the response.
Tool name 'recommend_location' is weak. It does not clearly signal the action. Stronger names like 'find_location_by_demographics' or 'search_locations_by_target_audience' would better convey intent and help LLMs select the tool correctly.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 46 | <=2025-11-25 | v2 |
Error handling returns plain text ('Tool error: ' + message) without recovery guidance. Per pattern:recovery-guide, errors should tell the LLM what to do next (e.g., 'Invalid region. Try searching with a broader area or check spelling.').
No tool annotations (readOnlyHint, idempotentHint). Although the tool is READ_ONLY, this is not formally declared in the schema, forcing LLMs to infer safety from the description (which is in Korean and thus unreadable).