Local MCP server for reading Nacos 3.0.x configuration settings
Four tools with complete input schemas and descriptions. Naming follows verb_noun pattern (get_, list_, search_). Descriptions are adequate (100-200 chars) but lack actionable context for LLM selection. Parameters have types and descriptions, but lack constraints (enums, ranges). Output is unstructured JSON strings rather than typed objects. No error recovery guidance. Missing tool annotations (readOnlyHint). Baseline: 549 production tools average 18-char names, 194-char descriptions, 72-char param annotations, this server meets naming and description length but lacks depth and structure.
Fetch a Nacos configuration by dataId and group. Returns full detail: content, type, md5, appName, createTime, createUser, etc.
List configurations in a namespace with optional fuzzy search. Returns a paginated list of config metadata (dataId, group, type, md5…).
List all namespaces available on the Nacos server. Returns namespace ID, name, config count, and quota.
Search configs by their content (full-text or blur match).
Output is unstructured JSON string, not typed object. LLMs must parse free-text JSON to extract fields, wasting tokens and risking parse errors. All tools return `str` instead of structured dicts with typed fields.
Parameters lack enum constraints and range limits. 'search' param accepts 'blur' or 'accurate' but no enum declared. 'page_size' unbounded (capped at 500 in code, not schema). 'page_no' has no minimum. LLMs will hallucinate invalid values.
No error recovery guidance. Tools return 'Nacos error {code}: {message}' but do not tell LLM what to do next (retry? check credentials? contact admin?). Errors are not categorized as retryable vs fatal.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 66 | <=2025-11-25 | v2 |
Tool annotations missing. All tools are read-only but lack readOnlyHint annotation. Agents cannot infer safety without explicit hints.
Descriptions lack dependency hints and selection context. 'List configurations' does not explain when to call this vs search_configs. No guidance on prerequisites (e.g., 'Call list_namespaces first to discover available namespaces').