ceph-doc-kb
Provides a version-aware, component-scoped knowledge base for Ceph documentation, enabling search of docs, examples, command lookup, and topic listing across Ceph components like rados, rbd, rgw, cephfs, and cephadm.
Click on "Install 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., "@ceph-doc-kbfind docs for ceph osd pool create"
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.
ceph-doc-kb
Version-aware, component-scoped Ceph documentation knowledge base. Indexes upstream RST and IBM Storage Ceph HTML into per-component FAISS indices. Search is two-tier: BM25 keywords + fastembed semantic, then quality re-rank.
Use this MCP for how-to, architecture, IBM-only procedures, and copy-paste examples. Use ceph-cmd-kb to verify that a command in those docs is still valid for the target release.
For agents (read this first)
This KB contains multiple versions. If the user did not name one, ask before searching. list_versions() lists what is loaded.
Version filter | Content |
| Upstream Ceph RST (currently |
| IBM Storage Ceph 8.0 (Reef-era product docs) |
| IBM Storage Ceph 8.1 |
| IBM Storage Ceph 9.0 |
| IBM Storage Ceph 9.1 (Tentacle-era product docs) |
IBM docs cover content that is not in upstream: container registry, licensing, crossgrade, staggered upgrade, IBM Dashboard, Call Home, Storage Insights, etc.
Do | Do not |
| Treat doc examples as verified CLI — still |
| Search here for JIRA/crashes — ceph-issue-kb |
| Scope globally when a component is obvious — pass |
Pass | Mix 8.1 IBM procedure with 9.1 CLI without saying so |
Typical first calls
Ask / infer version →
list_versions()if unsure.If the user named a command:
find_docs_for_command(command="ceph fs volume create", version="ibm-9.1").Else:
search_docs(query="...", component="cephfs", version="ibm-9.1").For snippets:
search_examples(query="...", language="bash", component="cephadm").get_doc_page/get_doc_chunkto read the full section.
Related MCP server: Markdown RAG MCP
Ceph Engineering Intelligence Platform
MCP | Cursor key | Use when | SSE | REST |
ceph-cmd-kb |
| Verify CLI, flags, configs | 8081 | 9090 |
ceph-doc-kb |
| How-to, architecture, IBM procedures | 8082 | 8100 |
ceph-issue-kb |
| Known bugs, workarounds, stacktraces | 8083 | 8200 |
ceph-prio-hub |
| Customer prio-list / L3 tracking | 8080 | — |
cephci-kb |
| CephCI code, tests, workflows | 8084 | — |
Setup
git clone https://github.com/pdhiran/ceph-document-kb.git
cd ceph-document-kb
pip install -e .GitHub repository name is ceph-document-kb. The Python package and Cursor MCP key are ceph-doc-kb. Point cwd at this clone.
Indices under knowledge/ are committed so the MCP can serve immediately. Rebuild only when docs change (see Updating the knowledge base).
Incorporate into an agent
Cursor (stdio)
{
"mcpServers": {
"ceph-doc-kb": {
"command": "python3",
"args": ["-m", "ceph_doc_kb.server.mcp_server"],
"cwd": "/path/to/ceph-document-kb"
}
}
}The server discovers every knowledge/doc-*/ directory that has metadata.json (upstream + IBM) and merges search. Restart Cursor after editing mcp.json.
SSE
python3 -m ceph_doc_kb.server.mcp_server --transport sse --host 0.0.0.0 --port 8082{
"mcpServers": {
"ceph-doc-kb": {
"url": "http://localhost:8082/sse",
"transport": "sse"
}
}
}REST
python3 -m ceph_doc_kb.server.rest_api --host 0.0.0.0 --port 8100curl "http://127.0.0.1:8100/api/search?query=erasure+coding&component=rados"Endpoint reference and agent wrappers: BOB_INTEGRATION_GUIDE.md, examples/agent_integration.py. VS Code: vscode-extension/README.md.
Tool catalog
Tool | Args | When to call |
|
| Conceptual / keyword search. Scope with |
|
| Code/config snippets. |
|
| Instant command → doc xref (no vector search). |
|
| Full page text |
|
| One section, not the whole page |
| (none) | Upstream + IBM indices loaded |
| (none) |
|
|
| Topics inside a component |
| (none) | Server contract |
| (none) | Index health |
Component map
Component | Topics |
| pools, PGs, EC, CRUSH, recovery, OSDs, MONs |
| images, snapshots, mirroring, NVMe, iSCSI |
| S3/Swift, multisite, users, buckets |
| MDS, mount, NFS/SMB, quotas, snapshots |
| bootstrap, services, upgrade, install |
| dashboard, monitoring, Call Home (IBM) |
| IBM troubleshooting books |
| planning, overview, hardening |
Results include source_file so you can tell IBM (ibm-docs/9.1/...) from upstream (rados/operations/pools.rst).
Agent workflow: IBM upgrade procedure
Confirm IBM version (
8.1vs9.1) →version="ibm-9.1".search_docs(query="staggered upgrade", component="cephadm", version="ibm-9.1")get_doc_page/get_doc_chunkon the best hit.Any CLI in the answer → ceph-cmd-kb
verify_command(..., version="tentacle").
Agent workflow: command → docs → verify
ceph-cmd-kb
verify_command(existence).find_docs_for_command(procedure and caveats).ceph-issue-kb
search_issuesif the user is debugging a failure of that command.
Updating the knowledge base
Same --since YYYY-MM-DD contract as python index_issues.py --since DATE.
Upstream RST
Needs a Ceph git checkout with doc/. Re-parses only RST files touched since the date and merges into the existing FAISS index.
# First-time full build
git clone --depth 1 --branch v20.2.1 --sparse https://github.com/ceph/ceph.git /tmp/ceph-docs
cd /tmp/ceph-docs && git sparse-checkout set doc
cd /path/to/ceph-document-kb
python3 index_docs.py --docs-path /tmp/ceph-docs/doc --version 20.2.1 --verbose
# Date delta (git log --since). Needs git history covering the date —
# a `--depth 1` clone from the full-build step above is not enough.
python3 index_docs.py --since 2026-08-01 \
--docs-path /tmp/ceph-docs/doc \
--repo-path /tmp/ceph-docs \
--version 20.2.1 --verbose
# Tag-to-tag delta (git diff between tags)
python3 index_docs.py --update --docs-path /tmp/ceph-docs/doc \
--repo-path /tmp/ceph-docs --from-version v20.2.1 --to-version v20.2.2Requires an existing knowledge/doc-{version}/ for --since. Deleted RST files drop out of the index.
IBM HTML
IBM has no git history. --since recrawls the IBM docs API, hash-compares against --cache-dir, and skips the FAISS rebuild when HTML is unchanged. If pages changed, the IBM index is rebuilt from the current snapshot. Without --cache-dir, --since still recrawls and always full-rebuilds (no hash-diff).
python3 index_ibm_docs.py --version 9.1 --since 2026-08-01 \
--cache-dir ./cache/ibm-9.1 --verbose
python3 index_ibm_docs.py --version 8.1 --verbose # full
python3 index_ibm_docs.py --version 8.1 --max-pages 5 # smoke testSupported IBM versions: 8.0, 8.1, 9.0, 9.1 (see IBM_VERSIONS in src/ceph_doc_kb/constants.py). Output: knowledge/doc-ibm-{version}/.
Maintainer wrapper
./update_index.sh # last run, or last 1 day
./update_index.sh 7
./update_index.sh 2026-08-01
./update_index.sh --resetEnvironment: CEPH_DOCS_REPO (default /tmp/ceph-docs), CEPH_VERSION (default 20.2.1), IBM_VERSIONS (default 9.1), SKIP_UPSTREAM=1, SKIP_IBM=1.
Metadata fields: last_incremental_since on metadata.json; IBM also writes updated_since on ibm_crawl_metadata.json.
The MCP auto-pulls this git repo on a timer and hot-reloads every knowledge/doc-*/ index (Cursor stays open; only a .py pull respawns the MCP subprocess). ./update_index.sh touches .reload_trigger for the same in-process reload. A missing git remote skips pull but still watches the trigger. --no-auto-update disables both git pull and the trigger watcher (no pull, no trigger).
Full maintainer help: UPDATING.md.
Architecture
Upstream RST → parser → scorer → embedder → knowledge/doc-20.2.1/<component>/
IBM HTML API → crawler → ibm_parser ──────→ knowledge/doc-ibm-9.1/<component>/
command_xref.json
│
▼
search router (BM25 + FAISS + quality rank)See DEVELOPMENT.md and SPEC.md.
Development
pip install -e ".[dev]"
pytestThis server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Versioned documentation registry and semantic search for AI tools and coding assistants.
Search the Cerebrium docs: deployment, cerebrium.toml, hardware, endpoints. Also sends feedback.
Apple Developer Documentation with Semantic Search, RAG, and AI reranking for MCP clients
Get authoritative answers about Redpanda documentation and search API references.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables semantic search through markdown documentation in code repositories using AI embeddings. Provides intelligent document chunking and similarity-based search to help users find relevant documentation based on meaning rather than just keywords.
- AlicenseNot gradedqualityDmaintenanceProvides semantic search over markdown documentation using RAG, allowing natural language queries and integration with MCP clients.1MIT
- FlicenseNot gradedqualityDmaintenanceEnables semantic search of Weaviate documentation using vector search, providing relevant documents and code snippets.
- FlicenseNot gradedqualityDmaintenanceEnables scraping and searching documentation websites using semantic or keyword search, with support for multiple deployment modes.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/pdhiran/ceph-document-kb'
If you have feedback or need assistance with the MCP directory API, please join our Discord server