mcp-docs
Search and retrieve citable sections from Nokia NSP and SR OS product documentation.
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., "@mcp-docsfind Nokia SR OS docs on segment routing"
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.

Hybrid BM25 + vector documentation search with deep-link citations.
Experimental proof-of-concept — not an official Nokia product. This is a personal/community experiment for evaluating MCP-based documentation search. It is not built, supported, endorsed, or maintained by Nokia, carries no warranty, and is not covered by any Nokia support agreement. Nokia product names and documentation are the property of Nokia and are referenced here for interoperability and evaluation only. Do not use it in production. Use at your own risk.
mcp-docs is a Model Context Protocol server that gives AI agents and MCP-aware IDEs a grounded, citable view of Nokia product documentation — NSP guides and SR OS books. It fuses BM25 lexical ranking (ParadeDB) with pgvector semantic nearest-neighbour search via Reciprocal Rank Fusion, and returns a section- and step-precise deep_url with every hit, so any answer cites straight back to the exact page, heading, or step. The corpus and the embedding model ship inside the stack, no upstream credentials, no live network dependency.
Quick start
Runs anywhere Docker does — Linux, macOS, and Windows. The whole stack is containerized (the scripts execute inside Linux containers), so the host OS never matters. You only need three tools on the host:
Tool | Linux | macOS | Windows |
Docker + Compose v2 | Docker Engine | Docker Desktop | Docker Desktop (WSL 2 backend) |
Git |
|
| Git for Windows |
Git LFS |
|
| bundled with Git for Windows |
Clone and run:
git lfs install # once per machine
git clone https://github.com/yrafique/mcp-docs.git && cd mcp-docs
make up # or, without make: git lfs pull && docker compose up -d --buildmake up runs git lfs pull to fetch the seed dump (corpus plus pre-computed bge-small embeddings, ~133 MB, stored via Git LFS) then brings the stack up. Because the vectors ship inside the dump, the docs-db comes up hybrid-ready and the one-shot embed step is a near-instant no-op.
No
make? It's only a shortcut. On Windows (or any host withoutmake) run the two commands directly:git lfs pullthendocker compose up -d --build. Stop withdocker compose down, follow logs withdocker compose logs -f mcp-docs.Git LFS is required. The corpus lives in Git LFS — run
git lfs installonce per machine before cloning. Without it the clone pulls only a small pointer file and the db seeds empty.Windows line endings.
.gitattributespins all scripts to LF, so a Windows checkout keeps them container-safe. Just leave Git'score.autocrlfat its default.
The corpus, vectors, and model persist on named volumes, so every later up is instant. Once up, the server speaks streamable-HTTP at:
http://<host>:9705/mcpRelated MCP server: Bluetooth Specifications MCP Server
Architecture

Docs are ingested and chunked, each chunk keeps its deep-link, page, heading, cli_mode, and mgmt_domain, into a ParadeDB store. An idempotent embedding backfill fills the 384-dim bge-small vectors and builds an HNSW (cosine) index. Queries are answered by a 3-tier ranker and exposed through three tools, each result reporting the ranking tier it came from.
Tier | What it does |
| Reciprocal-Rank-Fusion of ParadeDB BM25 + pgvector cosine NN ( |
| ParadeDB BM25 only, fallback before vectors are built |
| Plain Postgres full-text ( |
Tools
Family | Key tools | What |
Search |
| Hybrid / BM25 / FTS search across the corpus. Filter by |
Catalogue |
| List the ingested guides and books with their slug, title, version, page count, chunk count, and fetch time. |
Context |
| Fetch one chunk by id together with its neighbouring chunks for the full surrounding context, used after a |
Connect
Point your MCP client at the streamable-HTTP endpoint. This repo serves a single connection:
{
"mcpServers": {
"mcp-docs": {
"type": "http",
"url": "http://<host>:9705/mcp"
}
}
}No credentials and no secrets, the docs-db uses generic local defaults on an internal compose network, and the documentation corpus + embedding model are self-contained. Hand the whole repo to anyone and docker compose up -d --build just works.
Configuration
Runtime config is read from .env. Copy .env.example to .env and adjust as needed, all values below have safe defaults for the bundled standalone stack.
Variable | Purpose | Example |
| DSN of the ParadeDB docs-db (defaults to the bundled |
|
| NSP documentation version to resolve for |
|
| SR OS / TiMOS documentation version for |
|
| Enable the vector half of the hybrid ( |
|
| Query-side embedding model (must match the corpus vectors) |
|
| Where the query-side embedding model is cached in-container (baked into the image at build time) |
|
Never commit a filled-in .env. No real secrets are needed for the bundled stack; if you point DOCS_DATABASE_URL at an external ParadeDB, seed it first from src/doc_store.sql.gz and supply your own credentials there.
Layout
mcp-docs/
├── Makefile # make up / make down / make logs
├── compose.yml # the stack: docs-db + docs-embed + mcp-docs
├── Dockerfile # MCP server image
├── requirements.txt # server Python dependencies
├── .env.example # copy to .env and adjust
├── src/
│ ├── doc_store.sql.gz # Git LFS: corpus + bge-small embeddings (~133 MB, hybrid-ready)
│ └── server.py # the MCP server — search / list-guides / get-chunk tools
├── seed/
│ ├── Dockerfile # one-shot embed/index image (docs-embed service)
│ ├── seed-docs-db.sh # first-init DB seed: load dump, enable BM25 + vector, index
│ ├── embed_backfill.py # fills any NULL embeddings + builds HNSW (idempotent)
│ └── run-embed.sh # waits for docs-db, then runs the backfill
└── README.mdThe three stack services:
Service | Role |
| ParadeDB; auto-seeds the committed corpus |
| one-shot: fills any missing |
| the MCP server on port |
Section-precise hybrid search over the Nokia NSP & SR OS documentation set, with a citable deep_url on every hit.
Experimental proof-of-concept · not an official Nokia product · no warranty · provided as-is.
This 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.
Latest Blog Posts
- 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/yrafique/mcp-docs'
If you have feedback or need assistance with the MCP directory API, please join our Discord server