Section-level doc search for .md, .rst, .adoc, .ipynb, .html, .yaml, .json, and OpenAPI specs.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
jDocMunch is an MCP server for coding agents that retrieves the exact documentation section a task needs, without loading whole files into the context window.
Index a documentation set once by heading hierarchy, then fetch a single section, a heading subtree, or a ranked search result β extracted byte-precisely from the original file.
Install Β· Quickstart Β· Benchmarks Β· Commercial licensing
Free for personal use. Commercial use requires a paid license β terms below.
The problem. An agent asked "how do I configure authentication?" opens a documentation file, skims hundreds of paragraphs it does not need, opens another, and repeats. Large context windows do not fix this. They just make the waste affordable enough to ignore until the bill arrives, and they crowd out the context the model actually needed.
The mechanism. jDocMunch parses a documentation set into a section tree keyed by heading hierarchy, stores each section's byte offsets into the original file, and exposes retrieval over MCP. Sections keep durable identities across re-indexing as long as path, heading text, and heading level are unchanged.
The outcome. The unit of access changes from file to section. An agent retrieves the installation section, one configuration block, or a specific heading subtree β and nothing else.
Search and retrieve documentation by section, not just file path or keyword match.
Full content is pulled on demand from exact byte offsets into the original file.
Sections retain durable identities across re-indexing when path, heading text, and heading level remain unchanged.
Four benchmarks against public documentation corpora, each with the corpus, date, and per-query results recorded in benchmarks/.
| Corpus | Scale | Indexed in | Result |
|---|---|---|---|
Kubernetes (kubernetes/website, 2026-03-04) | 1,569 .md files, 4,355 sections, 16 MB | 3,352 ms | 27,285 tokens saved on a single node-affinity query; 100 ms latency |
| SciPy | 10,402 sections, ~855,000 corpus tokens | 2,247 ms | 135β152 ms per query across sparse-solver, FFT, and optimization lookups |
| LangChain (MDX) | 5,973 sections | 5,204 ms | MDX-aware sectioning found 754% more sections than the naive pass |
| Wiki | 7,449-token corpus | β | Search returns ranked metadata in ~190 tokens against a 7,449-token whole-corpus read |
Read these as per-corpus results, not as a single headline multiple. Savings depend on how large the containing file is relative to the section you needed: a small file with one heading saves almost nothing, and the Kubernetes corpus saves a great deal. The benchmark files record the queries that did poorly alongside the ones that did well.
A separate, measured result from the v1.121.0 projection work, on this repository's own docs at max_results=10: a search row went 1,989 chars β 319 with compact=true (β84%), or 431 with snippet_bytes=200 (β78%) while removing the follow-up get_section call entirely.
Retrieval quality is gated, not assumed. Every release runs a replay fixture over a frozen golden set and fails below nDCG 0.95. That gate has failed builds and blocked releases; it is not decorative.
Requirements: Python 3.10+, any MCP-compatible client.
No virtualenv to manage, nothing written into system Python, and it works as-is on PEP 668 distros (Ubuntu 24.04+, Debian 12+) where bare pip install is refused. Don't have uv yet?
init detects your MCP clients, writes their config entries, installs the doc-exploration prompt policy so your agent actually reaches for the tools, and optionally installs hooks and indexes your docs.
| Command | Use it when |
|---|---|
uvx jdocmunch-mcp | Zero install. Runs from an ephemeral environment β nothing lands on disk permanently. The client entries init writes already invoke the server this way, so for most setups this is all that ever runs. β Hooks are the exception: they're spawned by a minimal-PATH subshell and resolve the executable by name, so they need uv tool install (or pipx/pip) to work. |
pipx install jdocmunch-mcp | You already standardise on pipx |
pip install jdocmunch-mcp | Inside a virtualenv you manage yourself |
Verify:
Manual Claude Code setup:
No install step β uvx fetches and runs the server on demand. Prefer it on your PATH (and required for hooks)? uv tool install jdocmunch-mcp, then claude mcp add -s user jdocmunch jdocmunch-mcp.
Installing the server makes the tools available; it does not break an agent's habit of brute-reading files. One line in your CLAUDE.md does that:
Assumes: jDocMunch installed and registered with your client, and a folder of documentation.
Index a local documentation folder:
It prints JSON naming the corpus and what it found:
section_count greater than file_count is the whole point: the index addresses headings, not files.
Then, inside your agent:
Using jdocmunch, search the docs for "authentication configuration" and show me that section.
The agent should call search_sections, then get_section on the top hit β returning one section rather than a file. _meta.tokens_saved on the response reports what that cost versus reading the containing document.
Next step: get_toc_tree for a structural view of the whole corpus, or index_repo to index documentation straight from a GitHub repository.
get_section and get_sections pull byte-precise content from the original file; get_section_excerpt narrows further.search_sections fuses BM25 with semantic cosine when an embedding provider is configured. compact=true, fields=[...], and snippet_bytes=N cut the response further.get_toc, get_toc_tree, get_section_path, get_section_descendants, and section_neighbors traverse the heading tree without reading content.get_doc_coverage, get_undocumented_symbols, get_stale_pages, get_orphan_sections, get_broken_links, and doc_health_radar.find_endpoint, list_endpoints_by_tag, find_operations_using_schema, and get_schema_graph treat OpenAPI documents as first-class.check_section_delete_safe and get_section_blast_radius before you remove or restructure._meta.freshness, _meta.verdict, and which source layer answered.64 tools in total. The full reference is in USER_GUIDE.md.
Everything runs locally. Indexes live under your home directory; no hosted service is required for indexing or retrieval.
[office] extra β PDF, DOCX, PPTX, and EPUB.INDEX_VERSION = 3) that auto-migrates on first load. A 1.x release never forces a reindex.Deeper detail: ARCHITECTURE.md and SPEC.md.
Local-first by design. Your documentation is parsed and stored on your machine, and the base package's only default network behavior is an anonymous savings counter β a random ID plus aggregate token counts, no content, no paths, no PII.
Opt out completely:
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/jdocmunch-mcp)<a href="https://allmcps.com/mcp/jdocmunch-mcp"><img src="https://allmcps.com/api/badge/jdocmunch-mcp?style=directory" alt="JDocmunch MCP on AllMCPs" /></a>