You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Docbank now exposes a bounded, daemon-first MCP 2026-07-28 server through the official Go SDK v1.7.0. Stdio is the default; stateless loopback Streamable HTTP is opt-in.
The fixed read catalog covers vault info, live document browsing, source-fenced search, exact document and version reads, rendition windows, processing plans, job status, and processing coverage. Results carry bounded cursors, exact source fences, and canonical rendition resource links.
--allow-processing adds one guarded start_processing tool. It requires the exact reviewed plan fingerprint and existing operator consent, cannot grant consent, and never blindly replays an ambiguous start.
HTTP uses a separate bearer credential and refuses to reuse the daemon API key. Host, origin, authentication, request size, concurrency, response size, and deadline checks all happen at the local transport boundary.
Why
The CLI works for operators, but agents need a typed document surface that does not bypass daemon ownership or turn the vault into an unbounded file reader. MCP keeps the same source, consent, and version authority while making browsing, retrieval, and bounded rendition reads directly usable from local agent clients.
Usage
Start the stdio server:
docbank mcp
For loopback HTTP, configure a separate process credential:
Verdict: Three medium-severity issues require attention.
Medium
internal/store/search.go:663-718 — Semantic eligibility is filtered only by vector_space_id, allowing results from another profile, binding, or input kind that shares the vector space. Filter by profile fingerprint, binding ID, and input kind, and add shared-vector-space coverage tests.
internal/store/embedding_reconcile.go:90-114 — Reconciliation treats every direct-file generation in a profile as valid for every executable original_file binding. This can enqueue duplicate cross-binding jobs and publish sets referencing the wrong generation authority. Validate generations against the binding-specific input fingerprint/identity.
document/pymupdf/provider.go:201-215 — PyMuPDF executes a configured native parser directly on untrusted PDF bytes without network isolation or process-tree containment. Use the same fail-closed isolated runner as Trafilatura, including network denial, executable verification, and process-tree cleanup.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changed
2026-07-28server through the official Go SDK v1.7.0. Stdio is the default; stateless loopback Streamable HTTP is opt-in.--allow-processingadds one guardedstart_processingtool. It requires the exact reviewed plan fingerprint and existing operator consent, cannot grant consent, and never blindly replays an ambiguous start.Why
The CLI works for operators, but agents need a typed document surface that does not bypass daemon ownership or turn the vault into an unbounded file reader. MCP keeps the same source, consent, and version authority while making browsing, retrieval, and bounded rendition reads directly usable from local agent clients.
Usage
Start the stdio server:
For loopback HTTP, configure a separate process credential:
Then start the listener:
Add the guarded processing tool only when the MCP client is allowed to enqueue work that the operator already reviewed and consented to:
Part of #176 (S9). Stacks on #238.