MCP server for document management, editing, and OAuth authentication. Provides tools for upserting, retrieving, comparing, and editing documents with project scoping and tag support. Includes OAuth 2.0 DCR (Dynamic Client Registration) endpoints for client registration, authorization, token exchange, and callback handling.
DevBrain demonstrates solid tool design with clear verb-noun naming (UpsertDocument, GetDocument, etc.) and comprehensive parameter descriptions. All 6 tools have documented schemas with typed inputs and clear descriptions (avg 150+ chars). The preview/apply pattern for edits (PreviewEditDocument + ApplyEditDocument) shows thoughtful composition. However, output schemas are not explicitly documented in the source code provided, parameter descriptions lack format constraints and ranges (e.g., no length limits on 'key' or 'content'), and error handling guidance is absent. No tool annotations (readOnlyHint/destructiveHint) are visible. The server uses HTTP transport (good), but lacks modern MCP features like tool annotations and structured error recovery patterns.
Apply an exact text edit after preview. Fails if the document changed since preview, if the match count differs, or if the edit is ambiguous. Matches literal text only.
Compare candidate content against a stored document without retrieving the full body. Accepts either raw content (hashed server-side) or a precomputed SHA-256 hex hash. Returns whether the stored document matches, plus metadata. Use to decide whether an import or sync is needed.
Retrieve a document by key.
Retrieve document metadata (key, project, tags, updatedAt, updatedBy, contentHash, contentLength) without the content body. Use to check whether a document exists, its size, and whether it has changed — without consuming tokens on the full content.
Preview an exact text edit without writing. Matches literal text only. Returns match count, preview snippets, and the current content hash to pass into ApplyEditDocument.
Output schemas not documented in source code. LLMs cannot plan downstream tool calls or extract required fields without knowing what each tool returns.
Parameter descriptions lack format constraints, ranges, and validation rules. E.g., 'key' has no length limits, 'content' no size bounds, 'expectedOccurrences' no min/max. LLMs cannot self-validate inputs.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) visible in source. Agents cannot distinguish safe reads from destructive writes without explicit hints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 67 | 2026-07-28+ | v2 |
Create or replace a document by key.
Error handling and recovery guidance absent. No indication of what errors are retryable, user-fixable, or fatal. No actionable error messages visible in code.
CompareDocument accepts mutually exclusive parameters (content vs contentHash) but no validation or clear guidance on which to use. LLMs may pass both or neither.