scoutdocs-mcp
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., "@scoutdocs-mcpWhat's the latest version of flask?"
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.
scoutdocs-mcp
MCP server that fetches and searches the latest stable documentation for any package. Keeps AI coding agents in sync with current APIs instead of relying on stale training data.
Two ways to run it:
Local stdio (Python) — installs into Claude Code / Claude Desktop / Cursor, can read your project's manifests.
Hosted Worker (Cloudflare) — public HTTPS endpoint at
/mcp, no install required.
Why
LLMs are trained on a snapshot — the docs they "know" may be months or years old. scoutdocs-mcp gives any MCP client live access to the latest stable version info, READMEs, and search results across docs sites for packages on PyPI, npm, and crates.io.
Related MCP server: open-context
How it works
Tools
Tool | Where | What it does |
| local + hosted | Latest stable version, docs URL, repo, license |
| local + hosted | README / long-description content |
| local + hosted | Bounded discovery: docs URL, |
| local only | Reads pyproject/requirements/uv.lock, package.json/package-lock, Cargo.toml/Cargo.lock |
| local only | Local SQLite cache stats |
Quickstart
Local (Python stdio)
scoutdocs-mcp is currently a beta release (0.2.0b3), so pip and uv need to be told it's OK to install a pre-release:
pip install --pre scoutdocs-mcp # or
uv tool install --prerelease=allow scoutdocs-mcpAdd to Claude Code's MCP config (~/.claude/claude_code_config.json):
{
"mcpServers": {
"scoutdocs": {
"command": "uvx",
"args": ["--from", "scoutdocs-mcp==0.2.0b3", "scoutdocs-mcp"]
}
}
}Once scoutdocs-mcp reaches 0.2.0 stable, the --pre / version-pin requirement goes away — you'll be able to run uvx --from scoutdocs-mcp scoutdocs-mcp directly. For Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json on macOS), use the same JSON shape.
Hosted (Cloudflare Worker)
Point any MCP client at the public Streamable HTTP endpoint:
https://scoutdocs-mcp.solmonger.workers.dev/mcpThe hosted endpoint is unauthenticated and rate-limited (60 MCP req/min, 10 search req/min per client IP). Search results are capped tighter than local (8 discovered pages × 18k chars / 200k total backstop) but well within Cloudflare free-tier headroom.
Example prompts
> What's the latest version of flask?
> Show me the docs for the serde crate
> Search the httpx docs for "transport"
> What dependencies does this project declare?Configuration
GitHub token (optional, local only)
Unauthenticated GitHub API allows 60 req/hr. A token (any scope) raises that to 5,000/hr — useful when fetching READMEs in bulk:
export GITHUB_TOKEN=ghp_your_token_hereCache
Local stdio: SQLite at
~/.cache/scoutdocs-mcp/cache.db, 24h TTL.Hosted Worker: Cloudflare KV, same 24h TTL, scoped per binding.
Search caps
The README is always included as a free first page. The max_pages cap
governs how many discovered pages we add on top of it.
Hosted | Local default | |
Discovered pages | 8 (max 20 via | 15 (max 30 via |
Chars/page | 18,000 | 24,000 |
Total backstop | 200,000 | 500,000 |
Supported ecosystems
Ecosystem | Registry | Aliases |
Python | PyPI |
|
JavaScript / TypeScript | npm |
|
Rust | crates.io |
|
If no ecosystem is specified, registries are tried in order.
Repository layout
src/scoutdocs_mcp/ Python stdio server (published as scoutdocs-mcp)
worker/ Cloudflare Worker (TypeScript) for the hosted endpoint
tests/ pytest suite (mocked HTTP)
worker/test/ Vitest suite (Cloudflare workers pool)
docs/RELEASE.md Release & deployment runbookStatus
Beta (0.2.0b3). API stable; some discovery sources may evolve. Filed issues welcome at https://github.com/eshaanmathakari/scoutdocs-mcp/issues.
License
MIT
Available Tools
5 toolscache_statsA
Get cache statistics (total entries, valid, expired).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, and the description does not disclose behavioral traits such as whether the operation is read-only, if it resets statistics, or requires authentication. The simple verb 'Get' implies non-modifying behavior, but this is not explicit.
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 a single, front-loaded sentence that conveys the tool's purpose efficiently with no wasted words.
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 with no parameters and no output schema. The description lists the three statistics returned, which is sufficient for an agent to understand the return value. It could be improved by noting the format (e.g., numbers or object), but is largely complete.
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?
There are no parameters in the input schema, and the description adds no parameter information beyond what the schema already shows. Per calibration, 0 params baseline is 4.
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 verb 'Get' and the resource 'cache statistics', specifying the included fields (total entries, valid, expired). This distinguishes it from sibling tools like get_package_info, which deal with packages.
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 guidance is provided on when to use this tool versus alternatives. The description only states what it does, without context for selection among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
detect_project_dependenciesA
Inspect manifests/lockfiles in a local project directory and return the declared dependencies. Supports Python (pyproject.toml, requirements*.txt, uv.lock), npm (package.json, package-lock.json), and Rust (Cargo.toml, Cargo.lock). Local-only — runs on the user's machine.
| Name | Required | Description | Default |
|---|---|---|---|
| root | No | Project root directory (defaults to the server's cwd). | |
| include_dev | No | Include dev/test/peer dependencies (default false). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses the local-only constraint and lists supported file types, which is helpful. However, it does not describe additional behaviors such as recursion depth, handling of missing files, performance guarantees, or whether it scans subdirectories.
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 two sentences with no wasted words. It front-loads the key action and resource, then adds supported ecosystems and the local-only constraint. Every sentence serves a purpose.
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 2 optional parameters, no output schema, and no annotations, the description covers purpose, supported formats, and local scope well. Missing details include the output structure (does it return a list of dependency names? versions? tree?) and error handling for missing manifests.
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?
Parameter schema coverage is 100%, and the description adds value by clarifying 'root' as the project root directory, 'include_dev' as dev/test/peer dependencies, and listing supported ecosystems not detailed in the schema. This goes beyond the schema's basic 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 states a specific verb ('Inspect manifests/lockfiles') and resource ('local project directory') and clearly identifies supported ecosystems (Python, npm, Rust). It distinguishes from sibling tools like get_package_info by focusing on local dependency detection.
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 description explicitly notes 'Local-only — runs on the user's machine,' setting clear context for when to use this tool (local project analysis) vs. alternatives. However, it does not explicitly state when not to use it or mention alternative tools for remote analysis.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_package_docsA
Fetch actual documentation content for a package. Returns README or description text. Use get_package_info first to check version.
| Name | Required | Description | Default |
|---|---|---|---|
| package | Yes | Package name | |
| ecosystem | No | Language/ecosystem (auto-detected if omitted) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so description must cover behavioral traits. It only states the return type (README or description text) but omits error handling, authentication needs, or rate limits. With no annotations, this is a significant gap.
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, front-loaded with purpose, zero wasted words.
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?
Covers basic purpose and return type, but lacks details on error cases, output format, or behavior when package not found. No output schema, so description could add more completeness.
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 both parameters well-described ('Package name' and 'Language/ecosystem' with enum and auto-detection note). Description adds no extra parameter semantics beyond workflow advice.
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?
Description clearly states the tool fetches documentation content and returns README or description text. However, it does not differentiate from the sibling 'search_package_docs', which might also return 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?
Explicitly advises using get_package_info first to check version, establishing a clear workflow. No exclusions or alternatives mentioned for when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_package_infoA
Get metadata for a package: latest stable version, description, docs URL, repository, license. Supports Python (PyPI), JavaScript/TypeScript (npm), and Rust (crates.io).
| Name | Required | Description | Default |
|---|---|---|---|
| package | Yes | Package name (e.g., 'requests', 'express', 'serde') | |
| ecosystem | No | Language/ecosystem: python, javascript, typescript, rust. Auto-detected if omitted. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the behavior clearly: what data is returned (version, description, docs URL, repository, license) and mentions auto-detection of ecosystem. It does not cover rate limits or errors, but the behavior is transparent for a simple lookup tool.
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 concise, two sentences covering what the tool does and the supported ecosystems. No redundant information, each sentence adds value.
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 no output schema, the description adequately explains the return values. It covers the ecosystem parameter and its auto-detection. However, it does not mention any constraints (e.g., network dependency) or error cases, but for a simple metadata tool it is sufficiently complete.
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 descriptions for both parameters. The description adds value by listing the supported ecosystems explicitly (Python via PyPI, JS/TS via npm, Rust via crates.io) and mentioning auto-detection, which goes beyond the enum values in the schema.
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 'gets metadata for a package' and lists specific metadata fields (version, description, docs URL, repository, license). It also specifies supported ecosystems (Python, JS/TS, Rust), distinguishing it from sibling tools like get_package_docs.
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 description implies usage for retrieving package metadata but does not explicitly state when to use versus alternatives or when not to use. No exclusions or conditional guidance are provided, thus adequate but lacking differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_package_docsA
Search a package's documentation for a query. Discovers pages from the registry's docs/homepage, llms.txt / llms-full.txt, sitemap.xml, and same-host links. Returns the highest-scoring pages with source URLs. Bounded to a small set of pages and characters.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Free-text query (matched case-insensitively) | |
| package | Yes | Package name | |
| ecosystem | No | Language/ecosystem (auto-detected if omitted) | |
| max_pages | No | Max pages to return (default 15) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes discovery sources, result selection (highest-scoring pages), and bounding constraints. No annotations provided, so description carries the full burden; it adequately discloses non-destructive read 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?
Four sentences, front-loaded with purpose, zero wasted words. Efficiently covers purpose, sources, return format, and constraints.
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 no output schema and complete parameter descriptions, description covers what the tool does, sources it uses, and result bounding. Lacks explicit return structure but sufficient for 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 coverage is 100% with clear descriptions for all 4 parameters. Description does not add additional detail beyond schema, so baseline of 3 is appropriate.
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?
Clearly states action (search), resource (package documentation), and scope (discovers pages from specific sources). Differentiates from sibling tools like get_package_docs and get_package_info by focusing on search and bounded results.
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?
Implies usage for searching documentation but lacks explicit when-to-use or when-not-to-use compared to siblings like get_package_docs. No guidance on alternatives or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct purpose: metadata retrieval, documentation fetching, documentation search, local dependency detection, and cache statistics. No overlap or ambiguity.
Four tools follow the verb_noun pattern (get_package_info, get_package_docs, search_package_docs, detect_project_dependencies), while cache_stats deviates slightly but still uses consistent snake_case and remains descriptive.
Five tools is an ideal count for this domain, covering all necessary operations without redundancy or overwhelming options.
The tool set covers the full workflow for exploring package documentation: metadata lookup, content retrieval, search, and even local dependency detection. No obvious gaps.
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
MCP server for accessing curated awesome list documentation
An MCP server that gives your AI access to the source code and docs of all public github repos
MCP server for developer documentation, generated by doc2mcp.
MCP server for dev documentation, generated by doc2mcp.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP server that provides version-pinned, deterministic documentation sourced from DevDocs.io to AI assistants (Claude, RooCode, Cline, Copilot etc.) and also via offline mode. Not via Scraping! But using the supported downloading option from devdocs.15713MIT
- AlicenseAqualityCmaintenanceA high-performance MCP server providing up-to-date documentation for Go, npm, Python, Rust, Docker, Kubernetes, Terraform, and more — fetched from official sources, not training data.183MIT
- AlicenseAqualityCmaintenanceAn MCP server that queries 19 package registries (npm, PyPI, crates.io, etc.) to retrieve the latest version of packages and their metadata.211MIT
- FlicenseAqualityCmaintenanceAn MCP server that searches official documentation for popular libraries, scrapes pages, and returns clean, LLM-ready text.1
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/eshaanmathakari/scoutdocs-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server