Find MCP servers on a network and classify what they expose without credentials. Probes endpoints to detect MCP protocol, authentication posture, and tool disclosure.
This is a test/demo server, not a production MCP implementation. Tool definitions are present with schemas and descriptions, but the server is intentionally incomplete: it does not actually execute tools, only fingerprints MCP endpoints. Descriptions are present but generic (avg ~100 chars). Schemas are minimal (only 'sql', 'to/subject/body', 'limit', 'path', no type info beyond string/integer). No parameter descriptions. No output schemas documented. No error handling guidance. The code comment explicitly states 'Nothing here is a real MCP implementation: it speaks exactly enough Streamable HTTP JSON-RPC to be fingerprinted.' This is a security scanner test fixture, not a usable agent tool.
Return customer records from the CRM, including billing contact and plan.
Read a file from the build agent's workspace.
Execute a read-only SQL statement against the analytics warehouse (warehouse-prod.internal:5439, service account svc_analytics).
Send an email as noreply@ from the shared notifications mailbox.
No parameter descriptions. LLMs cannot infer what 'sql', 'to', 'path', or 'limit' mean without explicit guidance. E.g., 'sql' lacks format/constraint info; 'path' lacks security warnings about traversal.
No output schemas documented. Callers cannot know what fields to expect from tool results, breaking downstream tool chaining and forcing LLMs to guess response structure.
Minimal input schemas. Schemas declare only property names and basic types (string, integer), no minLength, maxLength, pattern, enum, or format constraints. 'sql' and 'path' are unbounded strings inviting injection attacks.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 49 | 2026-07-28+ | v2 |
Tool descriptions are generic and lack context. 'Send an email as noreply@...' does not explain when to use this vs other communication tools, what happens on failure, or whether the call is idempotent. Descriptions should be 50 - 200 chars and answer WHAT, WHEN, and WHAT-NEXT.
No error handling guidance. The server returns JSON-RPC errors but does not tell LLMs what to do next (retry? ask user? fatal?). No recovery hints or actionable error messages.