docs
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., "@docsHow do I use ChromaDB with LangChain?"
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 Documentation Search Server
An MCP (Model Context Protocol) server that lets AI clients like Claude Desktop search live documentation for popular developer libraries and return clean, source-cited summaries — powered by a lightweight RAG (Retrieval-Augmented Generation) pipeline.
Ask a question like "How do I use ChromaDB with LangChain?" and the tool searches the official docs, scrapes and cleans the relevant pages, and returns grounded, sourced text — all callable directly from an MCP-compatible AI client.
How it works
User query
│
▼
Serper API (site-scoped web search)
│
▼
httpx (async fetch of result pages, run concurrently)
│
▼
trafilatura (clean HTML → readable text)
│
▼
Groq LLM (optional: context-grounded summarization)
│
▼
Source-cited responseThe server exposes a single MCP tool, get_docs(query, library), registered via FastMCP and served over stdio transport — the standard way MCP hosts (like Claude Desktop) communicate with local tool servers.
Related MCP server: ContextEngine MCP Server
Features
🔌 MCP-compliant server — discoverable and callable by any MCP client (tested with Claude Desktop)
🔍 Scoped documentation search across LangChain, LlamaIndex, OpenAI, and
uvdocs via the Serper API⚡ Concurrent async fetching — all result pages are fetched in parallel with
asyncio.gather+httpx🧹 Clean text extraction from raw HTML using
trafilatura🧠 LLM-grounded summarization via Groq, with enforced source citation
🛡️ Resilient to failures — a single broken/slow URL won't crash the whole request
🖥️ Includes a standalone MCP client (
client.py) for testing outside of Claude Desktop
Tech Stack
Category | Tools |
Language | Python 3.13+ |
Protocol | Model Context Protocol (MCP) via |
Async |
|
Search | Serper API |
Content extraction |
|
LLM | Groq ( |
Package management |
|
Project Structure
web-scraper-using-mcp/
├── main.py # MCP server — exposes the get_docs tool
├── client.py # Standalone MCP client for local testing
├── utils.py # HTML cleaning + LLM helper functions
├── pyproject.toml # Project metadata & dependencies (uv)
├── uv.lock # Locked dependency versions
├── .env.example # Template for required API keys
└── src/ # Package scaffolding (uv init)Setup
1. Clone the repo
git clone https://github.com/<your-username>/<repo-name>.git
cd <repo-name>2. Install dependencies
uv sync3. Configure environment variables
cp .env.example .envThen open .env and add your keys:
SERPER_API_KEY=your_serper_api_key_here
GROQ_API_KEY=your_groq_api_key_hereGet a free Serper API key: https://serper.dev
Get a free Groq API key: https://console.groq.com
4. Run the server
uv run main.pyYou should see FastMCP start up and log Starting MCP server 'docs' with transport 'stdio'.
Usage
Option A: Test with the included client
uv run client.pyThis spins up the server, lists available tools, calls get_docs, and prints an LLM-generated, source-cited answer.
Option B: Connect to Claude Desktop
Add the server to your claude_desktop_config.json:
{
"mcpServers": {
"web-scraper": {
"command": "uv",
"args": ["run", "--directory", "/absolute/path/to/project", "main.py"],
"env": {
"SERPER_API_KEY": "your_serper_api_key_here",
"GROQ_API_KEY": "your_groq_api_key_here"
}
}
}
}Restart Claude Desktop, then ask something like "Use the docs tool to look up how ChromaDB works with LangChain." Claude will discover and call the get_docs tool directly.
Demo
Server running locally:

Claude Desktop discovering and requesting to call the tool:

Supported Libraries
Library | Docs source |
| docs.langchain.com |
| docs.llamaindex.ai |
| platform.openai.com/docs |
| docs.astral.sh/uv |
Known Limitations
Retrieval is search-based (Serper), not embedding/vector-based — no vector database is used
Limited to two search results per query
Only supports the four libraries listed above
No caching — repeated identical queries re-fetch and re-scrape
Roadmap
Add a vector store (e.g. Chroma) for cached, embedding-based retrieval
Support additional libraries and configurable result counts
Add a CLI interface to
client.pyfor arbitrary queriesAdd automated tests
Author
Built by Samrudhi as a hands-on project exploring the Model Context Protocol, agentic tool-calling, and LLM-grounded retrieval.
Available Tools
1 toolget_docsA
Search the latest docs for a given query and library. Supports langchain, openai, llama-index and uv.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | The query to search for (e.g. "Publish a package with UV") | |
| library | Yes | The library to search in (e.g. "uv") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. 'Search' reasonably signals a read-only operation and 'latest docs' signals freshness, but it doesn't state what is returned, whether network access is required, or failure behavior.
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 compact sentences: the first states the action and parameters, the second provides the scope. There is no filler or redundant restatement of parameter names.
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?
The tool is simple and fully parameterized, but with no output schema the description still omits the return format and any caveats about the search. It is adequate for invoking the tool, but not fully self-sufficient.
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?
The schema already documents both parameters with examples, so the baseline is 3. The description adds the supported-library list (langchain, openai, llama-index, uv), which constrains the 'library' parameter beyond what the schema provides.
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 states a clear verb ('Search'), resource ('latest docs'), and the two inputs (query, library), and names the supported libraries. It is unambiguous, though there are no sibling tools to differentiate from and it doesn't describe the result shape.
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?
The explicit 'Supports langchain, openai, llama-index and uv' tells the agent which libraries are valid, making applicability clear. It stops short of 5 because there is no explicit when-not-to-use or alternative routing, though no siblings exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Only a single tool exists, so there is no possibility of confusing it with others. The tool's purpose is clearly defined: searching docs.
With a single tool, naming consistency is trivially maintained. The name 'get_docs' follows a clear verb_noun pattern and accurately reflects its function.
A single tool for a docs server feels somewhat thin. While searching is the core need, the surface area is minimal and offers no other useful operations like listing libraries or fetching specific doc pages.
The tool covers the main search use case for the supported libraries, but lacks any auxiliary operations such as retrieving a known doc directly or discovering available libraries. Minor gaps exist but agents can likely work around them.
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.
@latest documentation and code examples to 9000+ libraries for LLMs and AI code editors in a singl…
The documentation, as a tool your agent can call: 950+ AI-dev guides. Search + fetch tools.
Provide your AI coding tools with token-efficient access to up-to-date technical documentation for…
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to search documentation of packages and services to find implementation details, examples, and specifications.MIT
- AlicenseBqualityCmaintenanceProvides real-time access to up-to-date library documentation and code examples for any programming library. Helps AI coding assistants deliver accurate, current information instead of relying on outdated training data.122MIT
- FlicenseAqualityDmaintenanceProvides Large Language Models with real-time access to the latest documentation for Python libraries like Langchain, LlamaIndex, and OpenAI, enabling accurate and up-to-date code suggestions.1
- FlicenseBqualityDmaintenanceEnables AI assistants to query and search library documentation from GitHub repositories or web pages using RAG and web scraping.2
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/Smchavan491/web-scraper-using-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server