Docs MCP Server
This server exposes a single MCP tool, get_docs, that searches and retrieves up-to-date documentation for supported libraries.
Search official docs by query + library: takes a natural-language
queryand alibraryname (required arguments) and returns scraped, cleaned documentation text asresult.Supported libraries:
langchain,chromadb,openai,uv,docker,redis— searches are constrained to each project's official docs site via Google Serper.Clean content extraction: fetches top organic results and converts HTML to plain text with
trafilatura(strips nav, tables, footers).Agent/LLM integration: usable over
stdiotransport by any MCP client; the bundled client uses Groq (llama-3.1-8b-instant) to synthesize answers from retrieved docs.Inspectable and deployable: can be listed/executed via MCP Inspector, run with
uv run server/mcp_server.py, or containerized with Docker.
Allows searching and retrieving relevant information from official Docker documentation via the get_docs tool, e.g. for queries about starting containers.
Allows searching and retrieving relevant information from official LangChain documentation via the get_docs tool.
Allows searching and retrieving relevant information from official OpenAI documentation via the get_docs tool.
Allows searching and retrieving relevant information from official Redis documentation via the get_docs tool.
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., "@Docs MCP ServerHow do I use Docker volumes?"
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.
Docs MCP Server
A Model Context Protocol (MCP) server that provides a search-and-retrieve tool (get_docs) to query and extract clean, relevant information from official documentation sites for modern developer libraries and tools.
Features
Google Serper API Integration: Queries official documentation sites with specific
site:constraints.HTML Content Extraction: Automatically scrapes the top organic search results and converts raw HTML into clean plain text using
trafilatura(ignoring navigation menus, tables, and footers).Supported Documentation Libraries:
langchain(python.langchain.com/docs/)chromadb(docs.trychroma.com/)openai(platform.openai.com/docs/)uv(docs.astral.sh/uv/)docker(docs.docker.com/get-started/)redis(redis.com/docs/get-started/)
Ready-to-Use Client: Includes a sample client that runs the MCP server via
stdiotransport and utilizes Groq (llama-3.1-8b-instant) to synthesize answers from the retrieved documentation context.
Related MCP server: mcp-docs
Project Structure
mcp-server/
├── client/
│ ├── __init__.py
│ ├── client.py # Main client implementation
│ ├── cli.py # Command-line interface for the client
│ └── tests/ # Tests for the client
│ ├── __init__.py
│ └── test_client.py
├── server/
│ ├── __init__.py
│ ├── mcp_server.py # MCP server implementation
│ ├── tools/ # Additional tools for the server
│ │ ├── __init__.py
│ │ └── get_docs.py # Implementation of the `get_docs` tool
│ └── tests/ # Tests for the server
│ ├── __init__.py
│ └── test_server.py
├── utils/
│ ├── __init__.py
│ ├── utils.py # Utility functions
│ ├── llm_helpers.py # LLM-related helper functions
│ └── tests/ # Tests for utilities
│ ├── __init__.py
│ └── test_utils.py
├── config.py # Configuration for server and client
├── .env # Environment variables
├── requirements.txt # Python dependencies
├── README.md # Project documentation
└── pyproject.toml # Project configurationGetting Started
1. Requirements
Ensure you have the following installed:
uv (Python package manager)
Python 3.12+
API keys for:
Google Serper API:
SERPER_API_KEYGroq API:
GROQ_API_KEY
2. Environment Configuration
Create a .env file in the root directory and add your API keys:
SERPER_API_KEY=your_serper_api_key_here
GROQ_API_KEY=your_groq_api_key_hereUsage
Run the MCP Server
To start the MCP server:
uv run server/mcp_server.pyRun the Client
To query the server using the client:
python client/client.py --query "How to start a Docker container?" --library "docker"Debugging with the MCP Inspector
You can inspect the server, list tools, and execute them using the interactive MCP Inspector:
npx -y @modelcontextprotocol/inspector -- uv run python -m server.mcp_serverRunning Tests
Run All Tests
To run all tests for the project:
python -m unittest discoverRun Specific Tests
To run tests for a specific module (e.g., utils):
python -m unittest utils.tests.test_utilsDocker (Optional)
Build the Docker Image
To containerize the application:
docker build -t mcp-server .Run the Docker Container
To run the server inside a Docker container:
docker run -p 8000:8000 mcp-serverContribution Guidelines
Fork the repository.
Create a new branch for your feature or bug fix:
git checkout -b feature-nameCommit your changes:
git commit -m "Add feature-name"Push to your branch:
git push origin feature-nameOpen a pull request.
License
This project is licensed under the MIT License.
Available Tools
1 toolget_docsA
Search the latest docs for a given library and query Supports "langchain", "chromadb", "openai", "uv", "docker", "redis"
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | The query for search for (Eg: "How to create a docker container") | |
| library | Yes | the library to search in (Eg: "docker") |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits such as read-only nature or auth requirements. It does not; it only restates the basic search functionality. The agent gets no insight into side effects or constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, each essential: first states purpose, second lists supported libraries. No wasted words, efficiently front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description doesn't need to explain return values. However, it lacks behavioral context (e.g., read-only, auth) and doesn't mention pagination or result limits. Adequate but with gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions, but the tool description adds the explicit list of supported libraries, which is not an enum in the schema. This provides extra guidance beyond the schema, earning a slightly higher score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it searches docs for a given library and query, with a specific verb 'search' and resource 'docs'. It also lists supported libraries, distinguishing it from any potential siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No sibling tools exist, so the description doesn't need to distinguish. However, it provides no explicit guidance on when to use or not use this tool, nor mentions any prerequisites or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
v0.1.0- First observed
get_docs
TDQS
Scored across 1 tool
With only one tool, there is no possibility of confusion with other tools. The single tool has a clearly defined purpose.
There is only one tool, so naming consistency is not an issue. The name 'get_docs' follows a clear verb_noun pattern.
A single tool for a server that claims to support multiple libraries (langchain, chromadb, etc.) is too few. Agents may need separate tools for different libraries or operations beyond search.
The server provides only a search function for docs. Missing essential operations like retrieving specific documents, listing available libraries, or fetching versioned docs, which limits agent capability.
Maintenance
Related MCP Connectors
An MCP server that gives your AI access to the source code and docs of all public github repos
MCP server for langchain documentation, generated by doc2mcp.
Driflyte MCP server which lets AI assistants query topic-specific knowledge from web and GitHub.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAn intelligent MCP server that enables AI agents to crawl, index, and semantically search official framework documentation using local RAG. It prevents hallucinations by providing precise, up-to-date documentation excerpts directly into the AI's context window.1-
- AlicenseNot gradedqualityDmaintenanceGeneric MCP server that exposes Markdown documentation to LLMs, enabling them to search and answer questions about any software documentation.MIT
- FlicenseAqualityDmaintenanceAn MCP server that searches official documentation for popular libraries, scrapes pages, and returns clean, LLM-ready text.1-
- AlicenseAqualityBmaintenanceA local MCP server that fetches official library documentation (llms.txt-first), caches it to disk, and serves relevant sections to coding agents offline with deterministic retrieval.319 npmMIT