A collection of 10 FastAPI-based MCP servers demonstrating OWASP MCP security patterns: credential isolation, HITL authorization, content sanitization, supply chain verification, triage gates, OAuth agent identity, session recording, tool registry allowlists, and context scoping.
This server demonstrates a security-focused educational design but suffers from severe definition quality issues. Tool duplication is rampant (check_device_compliance appears 4 times with inconsistent descriptions; apply_firmware_update appears 3 times). Parameter descriptions are minimal or absent, most tools have only a device_id with no explanation of format or constraints. Output schemas are not documented anywhere in the visible code. The server exposes 15 tool entries but only ~5 unique tools, creating confusion for LLM tool selection. Descriptions vary wildly in quality (some 10 chars, some 100+), violating consistency baselines. No error handling guidance, no pagination support, no output field documentation. While the security patterns (credential isolation, tool registry, triage gate) are conceptually sound, the tool interface itself is poorly specified for agent consumption.
Factory-resets a device, wiping its configuration. Destructive.
Submit a natural-language request for the agent to act on. Routed through the triage gate first.
WRITE — schedules a firmware update. Requires human approval.
Schedules a firmware update for one device.
WRITE — schedules a firmware update. Requires a valid AAuth-signed request.
Read-only device compliance check.
Read-only device compliance check. Executes immediately.
Massive tool duplication: check_device_compliance registered 4 times with inconsistent descriptions (10 - 100 chars); apply_firmware_update 3 times. LLMs cannot disambiguate identical names with slightly different docstrings. Consolidate into single canonical tools.
No output schemas documented. Tools return results but LLMs have no visibility into response structure (fields, types, required vs optional). Agents cannot plan downstream calls or extract data reliably.
Parameter descriptions missing or trivial. Most tools accept device_id with no format guidance (e.g., 'D-1042' format not documented). LLMs cannot validate input or understand constraints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 44 | 2026-07-28+ | v2 |
Read-only device compliance check
Check device firmware compliance status. Returns compliance verdict and current firmware version.
Read-only device compliance check. Requires a valid AAuth-signed request.
Check device compliance status
Shadow tool — bulk-exports EVERY device's data in one call. Not meant to be reachable by routine fleet agents.
Validate firmware version for a device
Read-only device status/uptime lookup.
Retrieve a document by ID
No error handling guidance. Tools do not document what happens on failure (device not found, API timeout, permission denied). LLMs receive raw errors with no recovery path.
Destructive tools (export_all_device_data, admin_reset_device) lack confirmation/dry-run support. No mechanism to prevent accidental data loss. Agents can trigger irreversible operations without safeguards.