en-quire-monorepo

development MCP Server

Structured markdown editing for agent systems, with governance. An MCP server.

Verified
developmentdevelopment
4 views0 stars0 forksMIT

Why This Matters

Discovered via github-topic:mcp and last synced 3mo ago.

Verified
Source
github-topic:mcp
Stars
0
Last synced
3mo ago
Install
Check source

Install

Install instructions not detected yet

Check the source repository for the latest setup steps.

View source instructions
7
Tools
0
Resources
0
Prompts
Standard I/O
Transport

Available Tools (7)

Language

TypeScript

Package

Role

Component

Choice

warn

info

Runtime

Node.js 22 (LTS)

Example

Use when

enscribe

Keep the two binaries distinct: auto-detecting headings belongs in en-quire; byte- and line-offset ops belong in en-scribe. Both share en-core's reliability guarantees so etag and proposal semantics can't drift. --- ## The Problem Agent systems increasingly depend on markdown files as operational infrastructure. But existing tooling falls short: - **Filesystem MCP** — no document awareness, no governance, no search. Agents can clobber files freely. - **Knowledge-graph MCPs** — impose opinionated schemas, designed for conversational memory rather than operational documents. - **Search-only MCPs** — read-only. No write or edit capability. - **None of them** have RBAC or approval flows. Every caller is fully trusted. en-quire fills this gap: a server that understands document structure, supports surgical section-level editing, and treats governance as a first-class concern. ## Key Features - **Multi-format support** — pluggable parser architecture handles markdown (`.md`, `.mdx`) and YAML (`.yaml`, `.yml`). Both produce the same section tree; all tools work uniformly across formats. - **Section-addressable editing** — read and write at the heading/key level, not the file level. Address sections by heading text (`## Checks`), breadcrumb path (`Procedures > Checks > Daily`), positional index (`[0, 1]`), or YAML dot-path (`services.api.environment.PORT`). - **Multi-root document management** — configure multiple named document roots with independent git repos, permissions, and search indices. Paths are prefixed by root name (`docs/sops/runbook.md`, `config/docker-compose.yaml`). - **Git-native governance** — edits from unprivileged callers land on branches, not main. Approval is a merge. Rejection is branch deletion. The audit trail is commit history. - **RBAC inside the MCP** — caller identity and permissions are resolved at the MCP layer. Different agents get different capabilities on different document sets. - **Full-text search** — SQLite FTS5 out of the box, with structural ranking (heading match boost, depth penalty, breadcrumb relevance). - **Semantic search** (optional) — local embeddings via sqlite-vec. No external API keys required. - **Git-optional mode** — full functionality without git for evaluation and local setups; governance features require git. - **Write validation** — output is validated before writing. Invalid YAML syntax is blocked; warnings are surfaced to the calling agent. - **Language-agnostic** — section addressing and search operate on document structure, not language. SOPs in Japanese, skill files in German, runbooks in Portuguese — en-quire works with any language that markdown supports. ## MCP Tools ### Document Reading `doc_outline` · `doc_read_section` · `doc_read` · `doc_list` ### Document Editing `doc_replace_section` · `doc_insert_section` · `doc_append_section` · `doc_delete_section` · `doc_set_value` · `doc_create` · `doc_find_replace` · `doc_rename` · `doc_generate_toc` · `doc_status` ### Search `doc_search` · `doc_list` ### Governance `doc_proposals_list` · `doc_proposal_diff` · `doc_proposal_approve` · `doc_proposal_reject` ### Admin `doc_exec` — escape hatch for feature discovery, with full audit logging. ## Quick Start ### Docker (recommended) ```bash docker run -i --rm \ -v /path/to/your/docs:/data/docs:rw \ -v /path/to/config:/app/config:ro \ ghcr.io/nullproof-studio/en-quire:latest ``` ### MCP Client Configuration Add en-quire to your MCP client (Claude Desktop, Cursor, etc.): ```json { "mcpServers": { "en-quire": { "command": "docker", "args": [ "run", "-i", "--rm", "-v", "/home/user/docs:/data/docs:rw", "-v", "/home/user/.config/en-quire:/app/config:ro", "ghcr.io/nullproof-studio/en-quire:latest" ] } } } ``` ## Usage Once connected, an agent (or you through an MCP client) can use en-quire's tools to navigate, search, and edit markdown documents. Here's a typical workflow. ### 1. Discover documents ``` doc_list({ scope: "sops/" }) → { files: [{ path: "sops/deployment.md", size: 4820, modified: "2026-03-17T..." }] } ``` ### 2. Explore structure ``` doc_outline({ file: "sops/deployment.md", max_depth: 2 }) → { headings: [ { level: 1, text: "Deployment Procedures", has_children: true, char_count: 4200 }, { level: 2, text: "1. Pre-deployment", has_children: true, char_count: 980 }, { level: 2, text: "2. Deployment Steps", has_children: true, char_count: 1640 }, { level: 2, text: "3. Post-deployment", has_children: true, char_count: 720 } ]} ``` ### 3. Read a specific section ``` doc_read_section({ file: "sops/deployment.md", section: "2. Deployment Steps" }) → { content: "## 2. Deployment Steps\n\n...", heading: "2. Deployment Steps", path: "Deployment Procedures > 2. Deployment Steps", prev_sibling: "1. Pre-deployment", next_sibling: "3. Post-deployment" } ``` Sections can be addressed in multiple ways: