MCP server providing AI assistants with direct access to Cisco Meraki network management capabilities via Cloudflare Workers
The server defines 10 read-only tools with consistent naming (all start with verb 'meraki_get_'). Tool names follow verb_noun pattern and are appropriately specific. However, descriptions are uniformly minimal (9 - 38 characters), falling well below the 50 - 200 char baseline for LLM-optimized tooling. Parameter descriptions exist but are sparse. Input schemas are present and properly structured with JSON Schema, but most lack constraints (enums, patterns, min/max) beyond basic type and description. No output schemas are documented, making it unclear what fields downstream tools should expect. All tools are read-only (no state mutation), but descriptions do not explicitly state this, missing an opportunity to signal safety to agents. Error handling and recovery guidance are absent from the codebase excerpts. Pagination is mentioned in some descriptions (perPage, timespan) but limits are not enforced in the observable schema.
Get clients connected to a network
Get details for a specific device
Get device statuses for an organization
Get all devices in a network
Get details for a specific network
Get recent network events
Get network traffic statistics
Tool descriptions are critically short (9 - 38 chars, baseline 50 - 200). Example: 'Get all Meraki organizations' lacks context on when to use, what it returns, or why an agent would choose it over alternatives.
Output schemas are not documented. Tools return data but the codebase does not specify which fields to expect, forcing LLMs to guess downstream field names and preventing tool chaining.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 59 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 44 | - | v1 |
Get all networks in an organization
Get details for a specific organization
Get all Meraki organizations
Parameter descriptions lack actionable constraints. 'timespan' is described as 'Time span in seconds (default 86400)' but does not specify valid range, min, or max values. LLMs may pass invalid values (negative, zero, excessive).
No error handling or recovery guidance. Code does not show how failed API calls are handled or what guidance is returned to agents (e.g., 'Network not found. Try meraki_get_networks() to list available networks.').
Pagination not consistently supported with limit parameters. 'meraki_get_network_events' accepts 'perPage' but other list tools (meraki_get_organizations, meraki_get_networks, meraki_get_devices, meraki_get_clients) do not expose limit/offset, risking context window overflow.
Parameter names are not clearly typed. 'organizationId' and 'networkId' use camelCase but lack guidance on format or required pattern. Are they UUIDs? Numeric IDs? Human-readable names?