MCP Server: 台灣都市計畫與土地使用分區 (Taiwan Urban Planning and Land Use Zoning)
Server has 5 tools with complete schemas and descriptions in both Zod and JSON-RPC formats. Tool names follow verb_noun pattern (query_*, list_*). Descriptions are present (avg ~80 chars) but lack actionable context for LLM selection. Parameters have types and descriptions, but lack enums for constrained values (e.g., zone_type, facility_type, status accept free-form strings instead of enums). No output schemas documented. Error handling exists but lacks recovery guidance. Missing tool annotations (readOnlyHint). Composition is sound, each tool has one responsibility.
列出城市內所有都市計畫分區類型與統計資料
查詢國土利用現況分類(103 種分類)
查詢附近公共設施用地(公園/學校/道路等)
查詢都市更新與重劃區資訊
查詢指定座標的都市計畫使用分區(住宅/商業/工業等)
Parameters accept free-form strings instead of enums. zone_type, facility_type, and status should declare allowed values as enums (e.g., zone_type: ['residential', 'commercial', 'industrial']) to prevent LLM hallucination.
No output schemas documented. LLMs cannot plan downstream calls or extract fields without knowing response structure. Document what fields each tool returns (e.g., zoning_type, area_sqm, status).
Tool descriptions lack actionable context. Descriptions state WHAT but not WHEN to use or what distinguishes this tool from similar ones. E.g., query_zoning_by_location vs query_land_use_classification, when should an LLM pick one over the other?
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | 2026-07-28+ | v2 |
No tool annotations (readOnlyHint). All tools are read-only but lack explicit annotation. Add readOnlyHint: true to tool definitions so agents know these are safe to retry.
Error responses lack recovery guidance. toMcpResult() returns isError flag but no actionable message. When a query fails (e.g., invalid coordinates), the LLM needs guidance: 'Coordinates out of Taiwan bounds. Try: [lat 21.9, lon 120.9]'.