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.

mcp-docs
Intelligent, fully-offline documentation search for Nokia NSP & SR OS, in a single container.
Ask a real engineering question. Get the exact passage back, ranked by a purpose-built
retrieval stack, with a deep-link citation to the precise page and heading. With zero
internet, zero credentials, and one docker run.
Experimental proof-of-concept: not an official Nokia product. A personal/community experiment for evaluating MCP-based documentation search. Not built, supported, or endorsed by Nokia; no warranty; not for production. Nokia product names/docs are the property of Nokia, referenced here for interoperability and evaluation only.
mcp-docs turns the sprawling Nokia NSP and SR OS documentation set into a single, intelligent, air-gapped search endpoint that AI agents and MCP-aware IDEs can ground their answers on. The corpus, the search engine, and the AI models all live inside one container. Hand it to anyone, run it on a laptop or a locked-down NOC, and it just works.
Architecture

Docs are fetched with headless Chromium (driven by Playwright), then parsed and indexed once per release, offline, into an optimized SQL dump. At boot, the single container imports the releases it's asked for into ParadeDB, and the co-located MCP server runs the full hybrid-plus-reranker pipeline: the database and the server live in the same container, with no external services, ever.
Related MCP server: linked-docs
Why it's different
Completely offline | Corpus, embedding model, reranker, and database are all baked in. Runs |
One self-contained container | ParadeDB + the MCP server + models + docs in a single image. |
Multi-release, on demand | Each product release lives in its own schema ( |
Genuinely intelligent search | Not keyword grep. A hybrid BM25 + semantic-vector retriever fused by Reciprocal Rank Fusion, re-ordered by a cross-encoder reranker, with Nokia-aware query expansion and conceptual-vs-CLI routing. |
Deep-link citations | Every hit comes back with a section-precise |
Measured, not vibes | The retrieval stack was A/B-tested on deep, multi-domain engineer questions and LLM-judged: +12 quality points over plain hybrid search. |
MCP-native | Four clean tools any MCP client (Claude Code, IDEs, agents) can call directly. |
Quick start
docker run -p 9705:9705 mcp-docs # defaults: NSP 26.4 + SR OS 26.3On boot it starts its internal database, imports the requested releases into per-version schemas,
builds the search indexes, and serves the MCP endpoint at http://<host>:9705/mcp. Air-gapped?
docker run --network none -p 9705:9705 mcp-docs # fully offlineOnly want one release, or want to add more:
docker run -p 9705:9705 -e RELEASES="nsp-26.4" mcp-docs # just NSP 26.4
docker run -p 9705:9705 -e RELEASES="nsp-26.4 sros-26.3" mcp-docs # both (default)Build it yourself: make up (or docker build -f docker/Dockerfile -t mcp-docs .).
How it works: from raw docs to intelligent answers
Ingest pipeline (offline, done once per release → ships as an optimized SQL dump):
Playwright + Chromium ──▶ parse & chunk ──▶ classify & deep-link ──▶ embed & index ──▶ optimized SQL
headless capture of section-aware tag every chunk with BM25 (ParadeDB) input .sql.gz
the Nokia doc portal, passages that page, heading, CLI mode, + vector (HNSW) per release,
offline keep their context mgmt domain, deep URL baked in load at runtimeEach chunk keeps where it came from: page, heading, whether it's MD-CLI vs classic-CLI, which management plane it belongs to, and a link straight back to the source. That metadata is what makes the answers precise and citable.
Search pipeline (at query time, in the container):
your question ──▶ Nokia synonym expansion ──▶ ┌ BM25 (exact terms) ┐ ──▶ RRF fuse ──▶ cross-encoder ──▶ CLI-vs-concept ──▶ cited
(pseudowire → Epipe…) └ vector (meaning) ┘ rerank routing answerBM25 nails the exact CLI/REST/alarm/YANG tokens these docs are full of.
Semantic vectors catch paraphrases and intent ("bring up a router" → commissioning).
Reciprocal Rank Fusion blends both signals.
A cross-encoder reranker then reads the candidates and re-orders by true relevance, the single biggest quality lever.
Conceptual-vs-CLI routing keeps a "why is X slow?" question from being answered by a raw command reference.
The result: the right passage, ranked first, cited to the exact spot.
Multi-release
One container can hold many NSP and SR OS releases side by side, each isolated in its own schema and searchable independently or together.
docker run -p 9705:9705 -e RELEASES="nsp-26.4 nsp-25.11 sros-26.3" mcp-docsAdding a release is a two-line change: drop data/nsp-25.11.sql.gz and register it in versions.yml:
- name: nsp-25.11
product: nsp
version: "25.11"
schema: nsp_2511
dump: data/nsp-25.11.sql.gzSearch then routes automatically: product="nsp", version="26.4", or "all" (both families).
Tools
Tool | What it does |
| Hybrid search across the selected release(s). Filter by |
| Fetch a passage plus its neighbours for full surrounding context. |
| Catalogue the ingested guides/books per release. |
| Show which NSP / SR OS releases are built and searchable. |
Connect
Point any MCP client at the streamable-HTTP endpoint:
{
"mcpServers": {
"mcp-docs": { "type": "http", "url": "http://<host>:9705/mcp" }
}
}No credentials, no secrets, no external services. Hand over the container and it just works.
Under the hood
Engine | ParadeDB (Postgres + |
Models |
|
Portable | Everything is bundled and runs on CPU: no GPU, no cloud, no network. |
Optional roadmap: a live-NSP mode that auto-detects your running release and routes docs to it (requires network + a read-only token), kept strictly optional so the default stays fully offline.
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.
Related MCP Servers
- AlicenseAquality-maintenanceEnables hybrid web search and intelligent content extraction, combining semantic search with documentation-optimized reading that strips noise and returns clean, token-efficient context for AI agents.Last updated2
- Flicense-qualityDmaintenanceEnables AI assistants to intelligently search and reference documentation using hybrid semantic + keyword search via MCP protocol.Last updated
- Alicense-qualityDmaintenanceEnables AI assistants to perform semantic, hybrid, and filtered search on indexed local documentation with RAG capabilities.Last updated2MIT
- AlicenseAqualityCmaintenanceEnables searching and browsing the entire F5 AI Security documentation using TF-IDF search and section reader tools.Last updated2Apache 2.0
Related MCP Connectors
Search your knowledge bases from any AI assistant using hybrid RAG.
Multi-engine search for AI agents. Trust scoring, local corpus, MCP-native. Self-hostable, BYOK.
Apple Developer Documentation with Semantic Search, RAG, and AI reranking for MCP clients
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/yrafique/mcp-docs'
If you have feedback or need assistance with the MCP directory API, please join our Discord server