llmsdottxt-mcp
Auto-discover llms.txt from your deps. Docs your agent can read. Zero setup.
llmsdottxt-mcp scans your project's dependencies, discovers each package's llms.txt documentation endpoint, fetches and indexes the content locally, and exposes it to AI coding agents over the Model Context Protocol — so your agent reads first-party docs instead of guessing or scraping.
Why
Unlike scraping-based doc tools, llmsdottxt-mcp is local-first and llms.txt-native: auto-discovery from your real dependencies, platform-aware fetching (Mintlify, Read the Docs, Docusaurus, GitHub Pages), a persistent searchable index, and size-safe handling of large llms-full.txt files.
It is also resilient to docs hosts that push back: a genuine 429/503 is retried with backoff (honoring Retry-After), while an unsolvable bot challenge — Cloudflare, DataDome, Imperva, AWS WAF, Akamai, Sucuri — is detected and reported as blocked (a browser is required to pass it), so it is never silently miscounted as "no docs".
Status
- Project status: pre-1.0 public preview.
- Python: 3.14+.
- API stability: MCP tool names and response schemas may change before 1.0.
- Support: GitHub issues for bugs and features; private security reports for vulnerabilities.
Install & Run
uvx llmsdottxt-mcp scan # index the current project's dependencies
uvx llmsdottxt-mcp status # show indexed packages
uvx llmsdottxt-mcp serve # start the MCP server on stdio
uvx llmsdottxt-mcp doctor # diagnose paths, write access, registry connectivity
Add it to an MCP client (e.g. Claude Code) as a stdio server running llmsdottxt-mcp serve.
MCP Surface
Tools: index_deps, search, browse, status.
Resources: llmstxt://packages, llmstxt://package/{ecosystem}/{name}.
Prompts: find_docs_for_import.
Configuration
Everything is convention-based; override via LLMSTXT_* env vars (see .env.example). The index lives in ~/.llms.txt.d/.
Ecosystems
Four ecosystems are supported end-to-end — each pairs a manifest scanner with a registry resolver:
| Ecosystem | Manifest(s) | Registry | Docs source |
|---|---|---|---|
| Python | pyproject.toml, requirements.txt |
PyPI JSON API | project URLs / homepage |
| Node | package.json |
npm registry | homepage |
| Rust | Cargo.toml |
crates.io API | documentation / homepage |
| Go | go.mod |
proxy.golang.org | pkg.go.dev |
Add an ecosystem by dropping a BaseScanner and BaseResolver into their registries — see ROADMAP.md.
Development
uv sync --all-groups
uv run ruff check && uv run ty check && uv run basedpyright
uv run lint-imports && uv run pytest -n auto
See AGENTS.md for architecture and conventions.
Metadata
Release files for llmsdottxt-mcp 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| llmsdottxt_mcp-0.2.0.tar.gz | 56.4 kB | Without provenance | Details for llmsdottxt_mcp-0.2.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| llmsdottxt_mcp-0.2.0-py3-none-any.whl | Python 3 | none | any | Details for llmsdottxt_mcp-0.2.0-py3-none-any.whl |
Total release size: 118.6 kB
Release files / llmsdottxt_mcp-0.2.0.tar.gz
| Download URL | llmsdottxt_mcp-0.2.0.tar.gz |
|---|---|
| Size | 56.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3652677d4fab069cf7b67ad3a5ad6ec8c9502a62a0f0a44035558683867e5fb9
|
|
BLAKE2b-256 checksum How to use checksums |
ad530c69fbd479efcdef64bc04e2dedef8b7e11c241a5e9bb34619b12ad72936
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.25 {"installer":{"name":"uv","version":"0.11.25","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / llmsdottxt_mcp-0.2.0-py3-none-any.whl
| Download URL | llmsdottxt_mcp-0.2.0-py3-none-any.whl |
|---|---|
| Size | 62.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f7441feb204ce5868c7927125cca92ff8bc1b50fa025be56ce1cc4f2699f6a64
|
|
BLAKE2b-256 checksum How to use checksums |
a20cd66fa2a360f459db74dfbed498344d56c779cb8e11163ea9e44e554bc042
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.25 {"installer":{"name":"uv","version":"0.11.25","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for llmsdottxt-mcp 0.2.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.