scoutdocs-mcp
The server gives AI coding agents live access to package documentation and metadata for Python (PyPI), JavaScript/TypeScript (npm), and Rust (crates.io) packages.
get_package_info — Fetch latest stable version, description, docs URL, repository, and license for any package; ecosystem auto-detected if omitted.
get_package_docs — Retrieve a package's README or long-description content.
search_package_docs — Search a package's documentation by discovering pages from its docs/homepage, llms.txt, sitemap, and same-host links, then returning the highest-scoring pages with source URLs.
detect_project_dependencies — Inspect local project manifests/lockfiles (pyproject.toml, requirements*.txt, uv.lock, package.json, package-lock.json, Cargo.toml, Cargo.lock) and list declared dependencies; optionally include dev/test/peer dependencies.
cache_stats — Report local SQLite cache statistics (total entries, valid, expired).
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., "@scoutdocs-mcp What'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 current documentation for any package — the latest stable release by default, or one exact version on request. 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 version info, READMEs, and search results across docs sites for packages on PyPI, npm, and crates.io — including exact-version lookups that never fall back to a different release.
Related MCP server: open-context
How it works
Tools
Tool | Where | What it does |
| local + hosted | Latest stable version + metadata; optional exact |
| local + hosted | README / long-description content; optional exact |
| 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 |
Exact versions
Both doc tools take an optional exact version (local server). The rule is simple: served exactly, or not at all — the latest release is never silently substituted.
flowchart LR
A["ask: package @ 2.31.0"] --> B{"version exists<br/>on the registry?"}
B -->|"yes"| C["docs for exactly 2.31.0<br/>+ source URL in the reply"]
B -->|"no"| D["explicit not-found<br/>no substitution"]> get_package_docs package="click" version="8.1.7"The reply says what it is and where it came from:
# click v8.1.7 (python)
Version: exact (8.1.7)
License: BSD-3-Clause
Source: pypi_description (https://pypi.org/pypi/click/8.1.7/json)
Docs: https://click.palletsprojects.com/
---
$ click_
==========
Click is a Python package for creating beautiful command line interfaces…What that buys you when a version matters:
Unknown version → explicit "not found". Latest is never substituted.
version="latest"is refused — pass a real version, or omitversionto get latest stable.Cache entries are per-version: one version's docs are never served for another.
On a pinned project, feed the
declared_versionfromdetect_project_dependenciesintoversion=to read exactly what the project builds with.
Exact versions run in the local server; the hosted endpoint serves latest stable.
Quickstart
Local (Python stdio)
scoutdocs-mcp is currently a beta (0.2.0b4), so pip and uv need to be told pre-releases are OK:
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": ["--prerelease", "allow", "--from", "scoutdocs-mcp", "scoutdocs-mcp"]
}
}
}This runs the newest beta without pinning a version; change the --from value to scoutdocs-mcp==0.2.0b4 if you'd rather freeze it. Once scoutdocs-mcp reaches 0.2.0 stable, the --pre / --prerelease flags go away. 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
> Show me the docs for requests 2.31.0 — the exact version my project pins
> 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.0b4). 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).
Inputs: no named parameters.
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.
Inputs: root, include_dev.
get_package_docsA
Fetch actual documentation content for a package. Returns README or description text. Use get_package_info first to check version.
Inputs: package (required), ecosystem.
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).
Inputs: package (required), ecosystem.
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.
Inputs: query (required), package (required), ecosystem, max_pages.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 5 tools
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
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 hub documentation, generated by doc2mcp.
MCP server for developer 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.63 npm14MIT
- AlicenseAqualityDmaintenanceA 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
- FlicenseAqualityDmaintenanceAn MCP server that searches official documentation for popular libraries, scrapes pages, and returns clean, LLM-ready text.1-
- AlicenseAqualityDmaintenanceAn MCP server that gives AI coding agents accurate, version-aware API documentation for any npm package — straight from the source.123 npmMIT