Skip to main content
Glama

πŸ“š LiveDocs MCP

Give your AI the docs it actually needs β€” fresh from the source, every time.

Python FastMCP License Libraries Deploy


πŸ”Ž The Problem

Every AI engineer has hit this wall:

"Claude is giving me the LangChain v0.1 API but we're on v0.3" "Why is the OpenAI example broken β€” oh, they changed the client in v1.0" "The CrewAI docs changed again, my code is outdated"

LLMs are trained on a snapshot of the internet. Documentation moves fast. Your AI assistant doesn't.

LiveDocs MCP bridges that gap. It connects Claude (or any MCP-compatible AI) directly to official documentation websites in real time β€” no stale training data, no hallucinated APIs.


Related MCP server: Context7 MCP

✨ Features

Feature

Description

πŸ”΄Live Docs

Fetches directly from official docs β€” always current

πŸ“¦45+ Libraries

Every major AI engineering library covered

⚑Smart Cache

24-hour TTL cache β€” fast repeat queries, no wasted API calls

πŸ”Multi-Library Search

Compare docs across frameworks side-by-side

πŸ’»Code Extraction

Hunts for code-block-rich pages automatically

πŸ”’Version-Aware

Pin to a specific version (e.g.v0.2, 2.1.0)

πŸ”‘BYOK

Bring Your Own Serper API key per request

🌐Remote-Ready

Deploy as HTTP/SSE server β€” share one URL with your whole team


πŸ“¦ Supported Libraries (45+)

Key

Library

Description

openai

OpenAI

GPT-4o, embeddings, DALLΒ·E, Whisper

anthropic

Anthropic

Claude API β€” messages, tool use, vision

groq

Groq

Ultra-fast LLM inference

mistral

Mistral AI

Mixtral, Mistral-7B

cohere

Cohere

Command R, Embed, Rerank

together

Together AI

Open-source model inference

replicate

Replicate

Run open-source models via API

google_ai

Google Gemini

Gemini Pro, Flash, embeddings

langchain Β· langgraph Β· langsmith Β· llama_index Β· haystack Β· dspy

crewai Β· autogen Β· semantic_kernel Β· smolagents Β· pydantic_ai

pinecone Β· weaviate Β· chromadb Β· qdrant Β· milvus Β· pgvector

huggingface Β· sentence_transformers

langsmith Β· weights_biases Β· mlflow

fastapi Β· pydantic Β· django Β· flask

sqlalchemy Β· supabase Β· prisma Β· redis

uv Β· ruff Β· pytest Β· docker Β· pandas Β· polars


πŸ› οΈ MCP Tools Reference

Tool

Description

get_docs(query, library, version?, serper_api_key?)

Fetch live docs for any library

search_docs_multi(query, libraries[])

Search across multiple libraries at once

get_code_examples(query, library, language?)

Targeted code snippet extraction

list_libraries(category?)

Browse all 45+ supported libraries

cache_stats()

View cache hits / entries / TTL


πŸš€ Quick Start

Add this to your claude_desktop_config.json:

{
  "mcpServers": {
    "live-docs": {
      "url": "https://live-docs-mcp.onrender.com/sse"
    }
  }
}

Config file location:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json


Option 2 β€” Local (Self-Hosted)

Prerequisites: Python 3.11+, uv

# 1. Clone
git clone https://github.com/NoumanZahid-85/live-docs-mcp.git
cd live-docs-mcp

# 2. Install dependencies
uv sync

# 3. Configure
cp .env.example .env
# Edit .env and add your SERPER_API_KEY (free at https://serper.dev)

# 4. Test the CLI client
uv run python mcp_client.py
# > Library: openai
# > Query: streaming chat completion

Claude Desktop config (local stdio):

{
  "mcpServers": {
    "live-docs": {
      "command": "uv",
      "args": ["run", "python", "mcp_server.py"],
      "cwd": "/absolute/path/to/live-docs-mcp",
      "env": {
        "SERPER_API_KEY": "your_serper_api_key"
      }
    }
  }
}

🌐 Deploy Your Own Instance

Render (Free Tier)

Deploy to Render

  1. Fork this repo

  2. Connect to Render β†’ New Web Service β†’ select your fork

  3. Set environment variable SERPER_API_KEY in the Render dashboard

  4. Render auto-detects render.yaml and deploys

Your server will be live at https://your-service.onrender.com/sse.


πŸ—οΈ Architecture

graph TD
    A[Claude / AI Client] -->|MCP Protocol| B[LiveDocs MCP Server]

    B --> C{Cache Hit?}
    C -->|Yes - 24h TTL| D[Return Cached Result]
    C -->|No| E[Serper Google Search API]

    E --> F[Top 5 Doc URLs]
    F --> G[Concurrent HTTP Fetch]
    G --> H[trafilatura HTML β†’ Text]
    H --> I[Code Block Extraction]
    I --> J[Cache + Return]

    B --> K[list_libraries]
    B --> L[cache_stats]

    subgraph Tools
        B --> M[get_docs]
        B --> N[search_docs_multi]
        B --> O[get_code_examples]
    end

πŸ”‘ API Keys

Key

Purpose

Free Tier

Get It

SERPER_API_KEY

Google search via Serper

βœ… 2,500 searches/month

serper.dev

GROQ_API_KEY

LLM answers in CLI client

βœ… Generous free tier

console.groq.com


πŸ’‘ Example Prompts

Once connected in Claude, try:

"Search the LangChain docs for how to use structured output with tool calling"

"Compare how LangChain and LlamaIndex implement document chunking"

"Get me a code example for streaming with the OpenAI Assistants API"

"What changed in CrewAI v0.7?"

"List all supported vector database libraries"

πŸ—‚οΈ Project Structure

live-docs-mcp/
β”œβ”€β”€ mcp_server.py      # πŸš€ Production MCP server (5 tools)
β”œβ”€β”€ mcp_client.py      # πŸ–₯️ Interactive CLI client
β”œβ”€β”€ libraries.py       # πŸ“‹ Registry of 45+ libraries
β”œβ”€β”€ cache.py           # ⚑ TTL in-memory cache
β”œβ”€β”€ utils.py           # πŸ”§ HTML extractor + code parser
β”œβ”€β”€ render.yaml        # 🌐 One-click Render deployment
β”œβ”€β”€ pyproject.toml     # πŸ“¦ Dependencies (uv)
β”œβ”€β”€ .env.example       # πŸ”‘ Environment variable template
└── README.md

🀝 Contributing

Want to add a library? Edit libraries.py β€” it takes 5 lines:

"your_library": {
    "site": "docs.your-library.com",
    "description": "Short description of the library",
    "category": "llm_frameworks",   # see existing categories
    "aliases": ["yl", "yourlib"],   # optional short names
},

Then open a PR. ✨


πŸ“„ License

MIT β€” free to use, modify, and deploy.


Available Tools

5 tools
cache_statsCache StatsA

Return current cache statistics for the LiveDocs MCP server.

Useful for understanding cache hit rates and diagnosing repeated query latency.

Returns: Cache statistics as formatted markdown.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden and clearly indicates a read-only retrieval operation via 'Return' and 'statistics'. It also discloses the output format as formatted markdown, which is a useful behavioral detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded with the main action, followed by a practical use case and return format. Every sentence adds value without unnecessary repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, zero-parameter tool with an output schema, this description provides complete guidance: what it returns, why to use it, and the output format. No critical information is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so no parameter documentation is needed; the baseline for zero-parameter tools applies. The description adds nothing about parameters, but none are required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Return') and resource ('current cache statistics for the LiveDocs MCP server'). It is clearly distinguishable from sibling tools, which handle docs, search, code examples, and libraries, not cache statistics.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly provides use cases: understanding cache hit rates and diagnosing repeated query latency. It does not mention exclusions or alternatives, but the sibling tools make the choice unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_code_examplesGet Code ExamplesA

Fetch working code examples for a specific library feature from official docs.

Unlike get_docs(), this tool specifically hunts for pages rich in code samples, extracting and formatting fenced code blocks for immediate use.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesFeature or pattern you need code for, e.g. "streaming chat completion", "async vector upsert", "RAG pipeline".
libraryYesLibrary key (e.g. "openai", "langchain", "pinecone").
languageNoExpected language for syntax context. Default: "python".python
serper_api_keyNoOptional. Overrides server SERPER_API_KEY env var (BYOK).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of behavioral disclosure. It explains that the tool hunts for code-rich pages and extracts/format fenced code blocks, which is useful. However, it does not disclose whether results are verified, whether network/rate-limit behavior applies, or any caveats about 'working' examples.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler. The core purpose is front-loaded, and the second sentence earns its place by differentiating from a sibling tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The schema covers all parameters, an output schema exists, and the description covers purpose, behavior, and the main alternative. Given this is a read-oriented retrieval tool, the description is largely complete. Minor gaps like rate limits or validation expectations prevent a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all four parameters. The description adds context about the tool's overall behavior but does not add meaning to individual parameters beyond what the schema already provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description uses a specific verb and resource: 'Fetch working code examples for a specific library feature from official docs.' It clearly distinguishes itself from the sibling get_docs() by emphasizing code-rich pages and fenced code block extraction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Unlike get_docs()' sentence explicitly tells the agent when to prefer this tool over a key alternative. It implies use when code examples are needed rather than general documentation. It does not describe conditions for other siblings like search_docs_multi, but the primary routing decision is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_docsGet DocsA

Fetch real-time, up-to-date documentation from the official docs site of a library.

Solves the core AI-engineer problem: LLMs have outdated training data. This tool fetches live content directly from official documentation websites, so you always get the latest API signatures, parameters, and examples.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesWhat to search for. Be specific: "streaming chat completions", "tool calling with structured output", "RAG with metadata filters".
libraryYesLibrary key (e.g. "openai", "langchain", "qdrant"). Call list_libraries() to see all 45+ supported libraries.
versionNoOptional version pin (e.g. "v0.2", "2.1.0") for version-specific docs.
serper_api_keyNoOptional. Overrides server SERPER_API_KEY env var (BYOK).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden for behavioral disclosure. It states the tool fetches live content directly from official websites, which signals a read-only network operation and distinguishes it from cached knowledge. However, it does not disclose potential failure modes, rate limits, or that results may vary by version (though the schema covers versioning).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is strong and informative, but the following paragraph includes promotional phrasing ('Solves the core AI-engineer problem') and repeats the 'latest content' idea. The description remains compact, yet some redundancy could be trimmed without losing meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has a rich input schema and an output schema, so return format is handled structurally. The description covers the core purpose and use context, and the schema handles parameters and prerequisites like the list_libraries reference. Only minor operational detail such as error behavior is missing, but overall it is sufficient for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema documents all 4 parameters with descriptive help (100% coverage), so the description adds little parameter-level detail. It mentions 'API signatures, parameters, and examples' generically but does not go beyond what the schema already provides. Baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb-object pair: 'Fetch real-time, up-to-date documentation from the official docs site of a library.' It clearly identifies the resource (documentation) and source (official docs site), and explains the benefit (latest API signatures, parameters, examples). Though it doesn't explicitly contrast siblings, the function is unambiguous and distinct from the sibling names.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a concrete trigger for use: it solves the problem of LLMs having outdated training data by fetching live content. This clearly implies using the tool when current documentation is needed. It doesn't mention alternatives or exclusions, but the context is explicit enough for an agent to know when to invoke it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_librariesList LibrariesA

List all 45+ supported documentation libraries, optionally filtered by category.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNoOptional category filter string.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden of behavioral disclosure. It fully describes the enumerative, non-mutating intent ('List all') and adds the concrete scope of '45+' libraries, but does not explicitly confirm absence of side effects or mention any permission or error behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that leads with the action and resource, then states the optional filter. There is no redundant or filler content, and every phrase earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with one optional parameter, full schema coverage, and an output schema, the description is sufficient. It tells the agent exactly what the tool returns access to and how to narrow results, without needing extra detail.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already describes the only parameter with 100% coverage ('Optional category filter string'), so the description adds marginal semantic value by repeating the filtering idea. A baseline of 3 is appropriate because the schema fully handles parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('List'), a resource ('documentation libraries'), and a scope ('all 45+', 'optionally filtered by category'). This distinguishes it clearly from sibling tools like get_docs and search_docs_multi, which target retrieval of docs rather than enumeration of libraries.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly conveys the primary usage context: enumerating the available libraries and optionally narrowing by category. It does not explicitly name alternatives or exclusion criteria, but the purpose is unambiguous enough for an agent to know when to call it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_docs_multiSearch Docs MultiA

Search the same query across multiple libraries simultaneously.

Ideal for comparing how different frameworks handle the same concept:

  • "How does LangChain vs LlamaIndex implement RAG?"

  • "Compare asyncio support in FastAPI vs Django"

  • "Tool calling: OpenAI vs Anthropic vs Groq"

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesThe concept or question to search across all specified libraries.
librariesYesList of library keys (max 5). e.g. ["langchain", "llama_index", "haystack"]
serper_api_keyNoOptional. Overrides server SERPER_API_KEY env var (BYOK).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the behavioral burden. It does convey a key behavior: the same query is searched 'simultaneously' across multiple libraries, and it implies a read-only search operation. However, it does not disclose the underlying Serper API dependency, potential rate limits, or what happens when a library key is invalid. These are meaningful gaps given there are no annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the core purpose. The core sentence is immediately followed by a clear 'Ideal for...' usage signal and three illustrative examples. Every sentence earns its place, with no filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description, combined with a fully documented schema and an output schema, covers purpose, usage, and query framing well. It is nearly complete for a multi-library search tool. The main missing contextual piece is explicit routing guidance to get_docs for single-library searches or to list_libraries when library keys are uncertain, but these are minor gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already documents query, libraries, and serper_api_key well. The description adds helpful real-world examples of query phrasing and reinforces the 'same query' semantics, but it does not materially extend parameter meaning beyond what the schema already provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Search the same query across multiple libraries simultaneously.' It clearly identifies what the tool does and immediately distinguishes it from single-library alternatives like get_docs by emphasizing multi-library search. The example queries reinforce the purpose and add concrete framing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use it: 'Ideal for comparing how different frameworks handle the same concept.' It provides three concrete example query patterns, which strongly guide an agent on intended usage. However, it does not explicitly say when not to use it or point to get_docs for single-library searches, so it stops short of a full 5.

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. 5 tool updatesv1.0.0
    • First observedcache_stats
    • First observedget_code_examples
    • First observedget_docs
    • First observedlist_libraries
    • First observedsearch_docs_multi

TDQS

A4.1/5.0

Scored across 5 tools

Disambiguation4/5

Each tool has a generally clear role: single-library docs, multi-library search, code examples, library listing, and cache stats. The only minor overlap is between get_docs and get_code_examples, but the descriptions explicitly differentiate them by focusing on prose/docs versus code-rich pages.

Naming Consistency4/5

Most tools follow a verb_noun pattern: get_docs, search_docs_multi, get_code_examples, list_libraries. cache_stats breaks the pattern by being noun_noun, and search_docs_multi's suffix is slightly irregular, but overall the naming is predictable and readable.

Tool Count5/5

Five tools is well-scoped for a documentation-fetching server. Each tool serves a distinct and useful purpose without redundancy or bloat, and the count feels appropriate for the narrow but valuable domain.

Completeness5/5

The tool surface covers the core documentation workflows: fetching live docs, searching across libraries, retrieving code examples, discovering supported libraries, and inspecting cache health. No obvious dead ends or missing critical operations for the stated purpose.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers