Iggy Docs MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Iggy Docs MCP search the Rust API docs for IggyClient methods"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Iggy Docs MCP
MCP server for answering questions from the Apache Iggy documentation.
Serves two corpora to any MCP client, so an AI assistant answers Iggy questions from the project's own current material rather than from training data:
the guides — the
content/docstree of apache/iggy-website, around seventy-five pages covering the server, every SDK, connectors, clustering, the CLI and the web UI. Keyed by site path (server/docker), linked to iggy.apache.org.the Rust API — the inline
///doc comments of the SDK and core crates in apache/iggy, read from rustdoc's JSON output. Keyed underapi/(api/iggy/clients/client/IggyClient), linked to docs.rs.
The two answer different questions — the guides say how Iggy is meant to be used, the Rust API says what is actually callable — so results are labelled with the half they came from, and list_docs and search_docs take a source argument (all, website, rust-api) to restrict to one.
Search is chunked BM25, with a small vocabulary bridge (container → docker, typescript → node, ssl → tls). Code blocks are first-class content: an SDK answer usually is the code block.
Each half is ranked on its own. BM25 normalises against average chunk length, and generated API items are uniformly shorter than prose, so one pooled average would penalise every guide chunk and flatter every API one. The two lists are then interleaved 2:1 in favour of prose — an explanation usually answers the question and a signature confirms it. A query that matches one half alone returns that half in full.
Distinct from the MCP server the Iggy project itself ships, which speaks the broker protocol to a running server. This one serves documentation and needs no server running.
Modelled on PolicyMCP, an MCP server for ASF policy documents: same layout, same tool surface, same conventions.
Corpus sources
Guides (apache/iggy-website)
Two modes, checked in this order:
Local checkout, when
IGGY_DOCS_ROOTpoints at an iggy-website checkout (either the repo root orcontent/docsdirectly; the repo root resolves tocontent/docs, so blog posts andnode_modulesare never indexed). Files are read fresh on every call, sogit pullis the refresh.GitHub, otherwise: the docs tree is discovered via the GitHub API and fetched from raw files, cached in
~/.cache/iggy-doc-mcp/for seven days.
Rust API (apache/iggy)
A second local root, IGGY_RUST_ROOT, pointing at an apache/iggy checkout. There is no GitHub mode: unlike the guides, these files are generated, and generating them needs the source tree.
Only the public API of the SDK and core crates is indexed — iggy, iggy_common, iggy_binary_protocol, overridable with IGGY_RUST_CRATES. That keeps the index in the hundreds of items rather than the tens of thousands a whole-workspace private-item index would produce, which matters because every extra short item competes with the guides in search.
Doc comments are read from rustdoc's JSON, which cargo writes to target/doc/<crate>.json:
cargo +nightly rustdoc -p iggy --lib -- -Z unstable-options --output-format jsonBuilding is never implicit — a search must not trigger a Rust build — so:
when the JSON is present it is parsed fresh on every call, exactly like the website checkout, and re-running
cargo rustdocis the refresh;refresh_docsruns the build explicitly, once per configured crate;when the JSON is absent the Rust corpus is simply empty and the guides answer alone. A configured
IGGY_RUST_ROOTwith nothing built under it says so rather than returning silently.
IGGY_RUST_DOC_JSON overrides where the <crate>.json files are looked for, if they are not under <root>/target/doc.
One wrinkle on the first build: it takes minutes, and some MCP clients cut a tool call off after 60 seconds, so refresh_docs may report a timeout while cargo carries on and finishes normally. Call list_docs afterwards to confirm — if the item count is in the hundreds, the build landed. Later refreshes return promptly, because cargo has nothing to redo.
Two caveats worth knowing. rustdoc's JSON format is explicitly unstable and renumbers on breaking changes; the parser handles both the current and previous spellings of the shapes it uses and warns when it meets a format_version outside its checked range, rather than silently rendering signatures as _. And --output-format json is nightly-only, though a stable toolchain will emit it under RUSTC_BOOTSTRAP=1 if you would rather not install one.
Related MCP server: Documentation Fetcher & RAG Search
Install
python3 -m venv .venv
. .venv/bin/activate
pip install -e .Run
iggy-doc-mcpFor local development:
python -m iggy_doc_mcp.serverTest
pip install -e ".[dev]"
make checkConfigure with Claude Desktop or Codex
On macOS the Claude Desktop config lives at
~/Library/Application Support/Claude/claude_desktop_config.json; create it if
it is not there. Add the server, then quit and reopen Claude Desktop.
{
"mcpServers": {
"iggy-docs": {
"command": "<path to IggyDocMCP>/.venv/bin/python",
"args": ["-m", "iggy_doc_mcp.server"],
"env": {
"IGGY_DOCS_ROOT": "<path to iggy-website>",
"IGGY_RUST_ROOT": "<path to iggy>"
}
}
}
}Omit IGGY_DOCS_ROOT to use the GitHub-fetched guides instead of a local checkout. Omit IGGY_RUST_ROOT to serve the guides alone.
Tools
list_docs— every documentation page, organised by section, with word counts and corpus source;sourcerestricts to one half.get_doc— full text of one page by key (e.g.server/docker,sdk/python/intro); unambiguous partial keys resolve automatically.search_docs— ranked keyword search across both halves, returning excerpts with their code blocks, each labelled Guide or Rust API and linked to iggy.apache.org or docs.rs;sourcerestricts to one half.find_examples— search fenced code examples by topic and language, with source doc keys, headings and URLs.extract_code_snippets— inventory code fences for snippet verification work, filtered by language or doc key.get_related_docs— find pages related to a doc key using links, backlinks, shared section and shared terms.explain_doc_map— guided overview of the documentation sections, likely entry points for an audience or goal, and obvious top-level gaps.find_broken_links— local-checkout link scan for broken internal docs links and optional external URL checks.refresh_docs— re-fetch the GitHub guides, bypassing the seven-day cache (reporting git pull as the path when a local checkout is in use), and rebuild the Rust API corpus withcargo rustdoc.
Example questions
What flags does the Iggy server need under Docker?
How do I create a consumer group from Python?
What is the exact signature of
send_messageson the Rust client?Which errors can
IggyClient::connectreturn?How do I enable TLS?
How is message retention configured?
Show me a TypeScript producer example.
Licence
Apache License 2.0. See LICENSE.
Disclaimer
This is an independent, third-party tool. It is not a release of, endorsed by, or affiliated with the Apache Software Foundation or the Apache Iggy project. Apache, Apache Iggy and Iggy are trademarks of the Apache Software Foundation.
Available Tools
9 toolsexplain_doc_mapA
Explain how the Iggy documentation is organised and where to start.
This is a guided map, not a keyword search. Use it when a user asks where docs live, what reading path fits a goal, or which documentation areas look thin from the indexed corpus.
Inputs: goal, audience. Returns: result
extract_code_snippetsB
Return an inventory of fenced code snippets from the documentation.
The result includes the doc key, title, heading, language, line number, source URL, and code. Use this for snippet verification and docs CI design.
Inputs: key, language, max_snippets. Returns: result
find_broken_linksA
Find broken links in a local Iggy documentation checkout.
Internal docs links are checked against the indexed local corpus and heading anchors. External URLs are counted but skipped unless check_external is true.
Inputs: check_external. Returns: result
find_examplesA
Find code examples in the Iggy documentation by topic and language.
Use this when a user asks for runnable examples, SDK examples, producer or consumer samples, Docker commands, or source material for tutorials.
Inputs: query, language, max_results. Returns: result
get_docA
Retrieve the full text of one Iggy documentation page.
Use list_docs to discover valid keys such as 'server/docker', 'sdk/python/intro' or 'introduction/getting-started'.
Inputs: key (required). Returns: result
list_docsA
List every Apache Iggy documentation page, organised by section.
The corpus has two halves. 'website' is the hand-written prose from apache/iggy-website, keyed by site path (server/docker). 'rust-api' is the inline Rust doc comments from apache/iggy, keyed under api/ and linked to docs.rs. Pass source to see one half alone; the default lists both.
Inputs: source. Returns: result
refresh_docsA
Re-fetch the documentation corpus, bypassing the seven-day cache.
When IGGY_DOCS_ROOT points at a local iggy-website checkout this is a no-op, since local files are always read fresh; run git pull there instead.
Inputs: no named parameters. Returns: result
search_docsA
Search the Apache Iggy documentation for a term or phrase.
Searches both halves of the corpus: the hand-written guides on iggy.apache.org and the inline Rust doc comments from apache/iggy, whose results link to docs.rs. Each result says which half it came from, because the guides say how Iggy is meant to be used and the Rust API says what is actually callable, and those can disagree. Set source to 'website' or 'rust-api' to search one half alone.
Prefer this over answering Iggy questions from memory: the SDKs and server move quickly and the docs are the current truth.
Inputs: query (required), source, max_results. Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 9 tools
Each tool has a clearly distinct purpose: listing, fetching, searching, finding examples, extracting snippets, getting related docs, explaining structure, checking links, and refreshing. Even search_docs and find_examples are well-separated by their focus on general search versus example discovery.
All tool names follow a consistent verb_noun pattern (list_docs, get_doc, search_docs, find_examples, extract_code_snippets, get_related_docs, explain_doc_map, find_broken_links, refresh_docs). The pattern is predictable and easy to infer.
Nine tools is well-scoped for a documentation server. Each tool covers a distinct aspect of doc navigation, search, extraction, and maintenance without unnecessary redundancy.
The tool surface covers the full lifecycle of documentation access: discover, retrieve, search, extract examples, find related content, understand structure, validate links, and refresh data. No obvious gaps for a read-only docs MCP.
Maintenance
Related MCP Connectors
Search and read Rust documentation for the standard library and any crate on crates.io
Get authoritative answers about Redpanda documentation and search API references.
Tailor Platform for AI assistants: search, list and read the platform documentation.
Access and search Branch's official API documentation directly within any AI agent or client.
Related MCP Servers
- AlicenseAqualityDmaintenanceProvides tools for retrieving and processing documentation through vector search, enabling AI assistants to augment their responses with relevant documentation context.722 npm1MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to fetch, index, and perform semantic RAG-based searches on API documentation from various sources. It provides tools for hybrid search and collection management, allowing users to access up-to-date documentation from projects like Gemini and FastMCP.-
- FlicenseNot gradedqualityCmaintenanceEnables developers to ask natural-language questions and receive grounded answers sourced from official AI and Python library documentation, with automatic search, extraction, and source preservation.-
- FlicenseNot gradedqualityAmaintenanceEnables AI models to search and retrieve up-to-date technical documentation for popular agent frameworks such as LangChain, LlamaIndex, AutoGen, Agno, OpenAI Agents SDK, MCP, Camel AI, and CrewAI via stdio or SSE transports.-