EdgeDB MCP server - provides EdgeDB database service via MCP protocol
This EdgeDB MCP server has significant gaps in definition quality. While tool names follow verb-noun conventions (connectEdgeDB, listDatabases, executeEdgeQL), descriptions are generic and parameter documentation is incomplete. Most tools lack comprehensive schema details, and there is no visible output schema documentation. Only 12 tools registered; examined source shows tool registration but limited parameter validation guidance. Descriptions average ~40-50 characters, well below the 194-char production baseline. No parameter constraints (enums, ranges) visible in parameter definitions. Error handling is minimal, no recovery guidance or actionable error messages documented. Security concerns: database connection parameters (dsn, instanceName) are exposed in tool inputs rather than injected server-side.
Compare schema structure of two types
Connect to EdgeDB database tool
Create a new database
Get current database name
Describe type tool
Execute EdgeQL query tool
Execute EdgeQL query with parameters tool
Credential exposure via tool parameters. connectEdgeDB accepts dsn and instanceName as direct parameters rather than using server-side secret injection. Connection credentials should never appear in tool parameters, they will be logged in traces and prompt history.
Missing output schema documentation. No tool has a documented return type or output structure. LLMs cannot plan downstream tool calls without knowing what fields to expect.
Insufficient parameter descriptions. Parameters like 'query' (executeEdgeQL, executeEdgeQLWithParams) lack format guidance. No indication of expected EdgeQL syntax, query complexity limits, or timeout behavior. Parameters like 'filter', 'fields', 'orderBy' in findOne/findMany use example-based descriptions instead of formal constraints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 43 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 38 | - | v1 |
Query multiple records tool
Query single record tool
List all accessible databases
List types tool
Switch to a specific database
Missing enum constraints. Parameters like 'fields' and 'filter' accept free-form strings, inviting hallucinated or malformed values. No validation of EdgeQL syntax constraints documented.
Generic, short descriptions. Most tool descriptions are 35-50 characters (e.g., 'Connect to EdgeDB database tool', 'List all accessible databases'). Production baseline is 194 characters. Descriptions lack WHEN to use the tool, prerequisites, or side effects.
No destructive operation safeguards. createDatabase and executeEdgeQL (with INSERT/UPDATE/DELETE) lack confirmation patterns or dry-run capability. An agent could accidentally create unwanted databases or execute destructive queries without confirmation.
No error recovery guidance. Tool descriptions do not explain what to do on failure. E.g., executeEdgeQL may fail with syntax errors, connection errors, or permission errors, but no guidance is provided for LLM recovery.
SQL/EdgeQL injection risk in query tools. executeEdgeQL, executeEdgeQLWithParams, findOne, and findMany accept user-provided query strings and filter conditions. No sanitization or parameterization guidance documented. LLMs can be tricked via prompt injection into passing malicious payloads.
Missing permission checks and audit trail. No documentation of what permissions each tool requires (e.g., 'read:database', 'write:schema'). No audit logging mentioned for who called what tool, when, and what happened.
Parameter naming inconsistency. 'instanceName' is camelCase; other parameters are camelCase too, but context is unclear. Parameters like 'type' (in findOne, findMany, listTypes) are ambiguous, 'type' could mean type name, type category, or type definition. Should be 'typeName' for clarity.