Couchbase MCP Server - The Developer Data Platform for Critical Applications in Our AI World
Server has 6 tools with basic schemas and descriptions, but significant gaps limit production readiness. All tools have descriptions (10-100 chars, mostly adequate) and input schemas with type definitions. However, output schemas are undocumented, LLMs cannot predict return structures. Parameter descriptions are minimal (1-2 words). No error handling guidance, no recovery paths, no pagination for list results. Tool naming is clear (verb_noun pattern), but composition issues exist: run_sql_plus_plus_query is overly generic and accepts arbitrary SQL, creating security and validation risks. Missing idempotency guarantees, rate limiting, and permission gates for destructive operations (delete_document_by_id, upsert_document_by_id).
Delete a document by its ID. Returns True on success, False on failure.
Get a document by its ID from the specified scope and collection.
Get the schema for a collection in the specified scope. Returns a dictionary with the schema returned by running INFER on the Couchbase collection.
Get the names of all scopes and collections in the bucket. Returns a dictionary with scope names as keys and lists of collection names as values.
Run a SQL++ query on a scope and return the results as a list of JSON objects.
Insert or update a document by its ID. Returns True on success, False on failure.
Output schemas undocumented. LLMs cannot predict return structures for any tool. get_scopes_and_collections_in_bucket returns dict[str, list[str]], but this is inferred from code, not declared in tool metadata. get_document_by_id returns dict[str, Any], LLM has no idea what fields to expect.
run_sql_plus_plus_query accepts arbitrary SQL++ queries with no validation, injection protection, or result limits. Description says 'Run a SQL++ query' but does not explain when to use it vs. other tools, what queries are safe, or how results are capped. Violates pattern:constrained-input and pattern:tool-gateway.
Destructive operations (delete_document_by_id, upsert_document_by_id) lack confirmation/dry-run support and error recovery guidance. No indication of idempotency. Agents cannot safely retry on ambiguous failures. Violates pattern:confirmation-request and pattern:idempotent-operation.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | <=2025-11-25 | v2 |
Parameter descriptions are minimal (1-2 words: 'Name of the scope', 'ID of the document'). No format constraints, no examples of valid input, no guidance on dependencies. Baseline for A+ tools is 72 chars per param; these average ~30 chars. Violates pattern:tool-description.
No error handling guidance. Code raises generic exceptions with logger.error() but does not return actionable error messages to LLM. E.g., 'Error getting scopes and collections: {e}' tells agent nothing about recovery. Violates pattern:recovery-guide.