xenodocs-mcp-server
OfficialProvides search capabilities for FastAPI documentation, allowing users to retrieve up-to-date code examples and API references.
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., "@xenodocs-mcp-serverSearch for 'async requests' in httpx docs"
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.
XenoDocs MCP - Up-to-date Documentation For Any Library
❌ Without XenoDocs
LLMs rely on outdated or generic information about the libraries you use. You get:
❌ Code examples are outdated and based on year-old training data
❌ Hallucinated APIs that don't even exist
❌ Generic answers for old package versions
Related MCP server: Context7 MCP
✅ With XenoDocs
XenoDocs MCP pulls up-to-date, version-specific documentation and code examples straight from the source — and places them directly into your prompt.
Tell your AI assistant to search for library documentation:
Search for "authentication middleware" in the FastAPI library documentationFind examples of async functions in the httpx libraryXenoDocs fetches up-to-date code examples and documentation right into your LLM's context.
1️⃣ Write your prompt naturally
2️⃣ Ask for specific library documentation
3️⃣ Get working code answers
No tab-switching, no hallucinated APIs that don't exist, no outdated code generation.
�️ Installation
Requirements
Python >= 3.10
VS Code, Cursor, Claude Desktop, or another MCP Client
XenoDocs API Key (Get yours by creating an account at xenodocs.com/account/api-keys
Method 1: Using uv (Recommended)
uv add xenodocs-mcp-serverMethod 2: Using pip
pip install xenodocs-mcp-serverAdd this to your VS Code MCP config file (.vscode/mcp.json). See VS Code MCP docs for more info.
VS Code Local Server Connection
{
"servers": {
"xenodocs-mcp-server": {
"type": "stdio",
"command": "uvx",
"args": [
"xenodocs-mcp-server"
],
"env": {
"XENODOCS_API_KEY": "YOUR_API_KEY"
}
}
},
"inputs": []
}Alternative configurations:
Using uv project:
{
"servers": {
"xenodocs-mcp-server": {
"type": "stdio",
"command": "uv",
"args": ["run", "xenodocs-mcp-server"],
"env": {
"XENODOCS_API_KEY": "YOUR_API_KEY"
}
}
},
"inputs": []
}Using Python module:
{
"servers": {
"xenodocs-mcp-server": {
"type": "stdio",
"command": "python",
"args": ["-m", "xenodocs_mcp_server.server"],
"env": {
"XENODOCS_API_KEY": "YOUR_API_KEY"
}
}
},
"inputs": []
}Add to your Cursor MCP configuration (~/.cursor/mcp.json):
{
"mcpServers": {
"xenodocs": {
"command": "uvx",
"args": ["xenodocs-mcp-server"],
"env": {
"XENODOCS_API_KEY": "YOUR_API_KEY"
}
}
}
}Add to your Claude Desktop configuration:
{
"mcpServers": {
"xenodocs": {
"command": "uvx",
"args": ["xenodocs-mcp-server"],
"env": {
"XENODOCS_API_KEY": "YOUR_API_KEY"
}
}
}
}Add to your Windsurf MCP configuration:
{
"mcpServers": {
"xenodocs": {
"command": "uvx",
"args": ["xenodocs-mcp-server"],
"env": {
"XENODOCS_API_KEY": "YOUR_API_KEY"
}
}
}
}Add to your Zed settings.json:
{
"context_servers": {
"xenodocs": {
"source": "custom",
"command": "uvx",
"args": ["xenodocs-mcp-server"],
"env": {
"XENODOCS_API_KEY": "YOUR_API_KEY"
}
}
}
}🔨 Available Tools
XenoDocs MCP provides the following tools that LLMs can use:
search_library_name: Search for matching library names in the XenoDocs documentation database.library_name(required): The name or partial name of the library to search fortop_k(optional): Maximum number of matching libraries to return (default: 3, max: 20)
search_library: Search for specific information within a library's documentation.library_name(required): The exact name of the library to search inquery(required): The search query describing what you're looking for
💻 Development
Clone the project and install dependencies:
git clone https://github.com/Xenodocs/xenodocs-mcp-server.git
cd xenodocs-mcp-server
uv syncSet your API key:
export XENODOCS_API_KEY="your-api-key"Run the server:
uv run xenodocs-mcp-serverTesting with MCP Inspector
npx @modelcontextprotocol/inspector uv run xenodocs-mcp-server🚨 Troubleshooting
If you get "command not found" errors:
For uv projects: Make sure you're in a directory with a
pyproject.tomlfileFor pip installation: Use the Python module method:
{ "command": "python", "args": ["-m", "xenodocs_mcp_server.server"] }
If you see WARNING: XENODOCS_API_KEY not set!, make sure you've configured the API key in your MCP client configuration or as a system environment variable.
Restart your MCP client completely
Check that your installation method is working by running the command manually
Check client output/logs for MCP connection errors
Verify you have the correct Python version (>=3.10)
Available Tools
2 toolssearch_latest_documentationA
Retrieve official, up-to-date code examples and API references for a library.
Use this tool to find the exact syntax, function signatures, and usage patterns. Do not rely on your internal training data as it may be outdated; always verify with this tool.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | A natural language question about what you need (e.g., "how to create a chain", "authentication middleware example"). | |
| library_name | Yes | The exact library name returned by the 'search_library_name' tool. |
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 carries the full burden. It discloses that results are 'official, up-to-date' and warns that internal training data may be outdated, adding meaningful context about the tool's authority and freshness. It does not describe error behavior or rate limits, but for a read-only retrieval tool this is sufficient.
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?
The description is front-loaded with the primary verb and resource, followed by concise usage guidance. Every sentence earns its place, with no redundant filler. It is appropriately sized for the tool's simplicity.
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 tool has two simple parameters, full schema descriptions, and an output schema (so return values are documented elsewhere), the description sufficiently covers purpose, usage, and data freshness. It lacks explicit handling of cases like library not found, but that is not essential for tool selection and invocation.
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 description coverage is 100% for both parameters ('query' and 'library_name'), so the schema already provides full parameter meaning. The description adds no additional parameter-level detail, only restating that the tool is for a library.
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 opens with a specific verb and resource: 'Retrieve official, up-to-date code examples and API references for a library.' This clearly states what the tool does and differentiates it from the sibling 'search_library_name' by focusing on documentation content rather than library name lookup.
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?
It explicitly instructs when to use the tool: 'Use this tool to find the exact syntax, function signatures, and usage patterns' and provides a strong directive to 'always verify with this tool' instead of relying on training data. It does not explicitly name alternatives, but the sibling context and schema reference to 'search_library_name' make the boundary clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_library_nameA
CRITICAL: Always use this tool FIRST before generating code for any third-party library.
This tool identifies the correct library version and official documentation source. Using this prevents hallucinations and ensures you use the most up-to-date APIs.
Usage Strategy:
Call this tool to find the exact library name (e.g., mapping "langchain" to the specific package).
Use the result from this tool to call 'search_latest_documentation'.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Specific requirements or version constraints (e.g., "v2 with server actions", "latest stable"). | |
| library_name | Yes | The general name of the library (e.g., "langchain", "pydantic", "nextjs"). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the burden of disclosure. It indicates the tool prevents hallucinations and yields canonical library info, but does not describe return format, error behavior, or limitations. For a simple lookup this is adequate but not rich.
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?
The description is moderately long but well-structured: a CRITICAL directive, a concise purpose statement, and a numbered usage strategy. It avoids fluff, though the purpose statement slightly overlaps with the usage steps.
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 has an output schema (not shown) to cover return values. The description explains its role in a two-step workflow and explicitly names the next tool, making the context complete for an agent. It omits edge cases but these are less critical here.
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%, so parameters are documented. The description adds value by giving a concrete example (mapping 'langchain' to the specific package) and clarifying that query holds version constraints, going beyond the schema's field descriptions.
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 the tool 'identifies the correct library version and official documentation source,' positioning it as a disambiguation/lookup resource. It also explicitly instructs to use it first, distinguishing it from the sibling search_latest_documentation.
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?
Provides explicit when-to-use guidance: 'Always use this tool FIRST before generating code for any third-party library.' It also includes a usage strategy that directs the agent to call search_latest_documentation with the result, establishing a clear workflow and alternative.
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. Dates show when Glama detected each change.
2 tool updates
v0.1.5- First observed
search_latest_documentation - First observed
search_library_name
TDQS
Each tool has a clearly distinct role: one identifies the canonical library name and version, the other retrieves the matching documentation. There is no functional overlap; they are designed to be used sequentially.
Both tool names follow a consistent 'search_target' verb_noun pattern: 'search_library_name' and 'search_latest_documentation'. The style is uniform and readable.
With only two tools, the server feels minimal but appropriately scoped for a narrow purpose: resolving library names and retrieving docs. It is slightly thin but not unreasonable for a focused utility.
The two tools cover the core workflow of finding a library and getting its documentation. A minor gap is the lack of version-specific documentation retrieval, as the second tool only targets the latest docs.
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
@latest documentation and code examples to 9000+ libraries for LLMs and AI code editors in a singl…
Find open-source libraries and fetch contextual code snippets by version to accelerate development…
Get up-to-date, version-specific documentation and code examples from official sources directly in…
Provide your AI coding tools with token-efficient access to up-to-date technical documentation for…
Related MCP Servers
- 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
- AlicenseNot gradedqualityDmaintenanceProvides LLMs with up-to-date, version-specific documentation and code examples from library sources directly into prompts, eliminating outdated code generation and hallucinated APIs.879,513MIT
- AlicenseAqualityDmaintenanceProvides up-to-date, version-specific documentation and code examples for libraries and frameworks directly into AI prompts, eliminating outdated code generation and hallucinated APIs.2879,513MIT
- AlicenseAqualityCmaintenanceProvides LLMs with up-to-date, version-specific documentation and code examples directly from library sources, eliminating outdated training data and hallucinated APIs by fetching current documentation at prompt time.42879,513MIT
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/Xenodocs/xenodocs-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server