Model Context Protocol (MCP) server for FalkorDB — lets AI assistants explore a live graph database
FalkorDB MCP demonstrates solid definition quality with all 6 tools having clear descriptions (50-200 chars range) and complete input schemas using schemars JsonSchema. Tool names follow verb_noun convention (list_graphs, get_schema, query_read, query_write, explain, profile). Parameters are well-typed with descriptions. However, output schemas are not documented, responses are returned as JSON but the structure is not formally specified. Error handling exists but lacks recovery guidance. No tool annotations (readOnlyHint/destructiveHint) despite clear risk stratification. Parameter descriptions could be more prescriptive about constraints (e.g., cypher parameter lacks guidance on query size limits or syntax validation).
Return the query plan for a Cypher query WITHOUT executing it (GRAPH.EXPLAIN). Use it to spot full label scans and missing indexes.
Get a graph's schema (labels, relationship types, property keys, indexes, constraints). Call this before writing a query so you use the real names.
List the names of all graphs on the FalkorDB server.
EXECUTE a Cypher query and return its profiled plan (GRAPH.PROFILE) with per-operation row counts. This RUNS the query, so it is write-gated.
Run a READ-ONLY Cypher query and return rows as JSON. Writes are rejected by the server. Results are capped; include a LIMIT for large graphs.
Run a WRITE Cypher query (CREATE/MERGE/SET/DELETE) and return rows as JSON. Only available when the server is started with writes enabled. Results are capped; add a LIMIT to large RETURNs.
Output schemas not documented. Tools return JSON results but the structure (fields, types, nested objects) is not formally specified. LLMs cannot reliably extract data or plan downstream calls without knowing response shape.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Tools are marked with Risk metadata in comments but MCP protocol does not expose these hints. query_write and profile are destructive but lack formal annotation.
Cypher parameter descriptions lack constraint guidance. No mention of query size limits, syntax validation, or what constitutes a 'read-only' query. LLMs may pass invalid or oversized queries.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | <=2025-11-25 | v2 |
Error responses lack recovery guidance. The code returns McpError::invalid_request for write-disabled scenarios, but does not suggest next steps (e.g., 'Enable writes on the server or use query_read instead').
Limit parameter lacks bounds documentation. No mention of minimum/maximum values or server-side caps. LLMs may pass unreasonable limits (0, negative, or millions).