Skip to main content

Lean MCP server for minimal-context docs via llms.txt

Project description

llms-txt-mcp

Python 3.12+ MCP SDK 1.12+ License: MIT

Fast, surgical access to big docs in Claude Code via llms.txt. Search first, fetch only what matters.

Why this exists

  • Hitting token limits and timeouts on huge llms.txt files hurts flow and drowns context.
  • This MCP keeps responses tiny and relevant. No dumps, no noise — just the parts you asked for.

Quick start (Claude Desktop)

Add to ~/Library/Application Support/Claude/claude_desktop_config.json or .mcp.json in your project:

{
  "mcpServers": {
    "llms-txt-mcp": {
      "command": "uvx",
      "args": [
        "llms-txt-mcp",
        "https://ai-sdk.dev/llms.txt",
        "https://nextjs.org/docs/llms.txt",
        "https://orm.drizzle.team/llms.txt"
      ]
    }
  }
}

Now Claude Code|Desktop can instantly search and retrieve exactly what it needs from those docs.

How it works

URL → Parse YAML/Markdown → Embed → Search → Get Section

  • Parses multiple llms.txt formats (YAML frontmatter + Markdown)
  • Embeds sections and searches semantically
  • Retrieves only the top matches with a byte cap (default: 75KB)

Features

  • Instant startup with lazy loading and background indexing
  • Search-first; no full-document dumps
  • Byte-capped responses to protect context windows
  • Human-readable IDs (e.g. https://ai-sdk.dev/llms.txt#rag-agent)

Source resolution and crawling behavior

  • Always checks for llms-full.txt first, even when llms.txt is configured. If present, it uses llms-full.txt for richer structure.
  • For a plain llms.txt that only lists links, it indexes those links in the collection but does not crawl or scrape the pages behind them. Link-following/scraping may be added later.

Talk to it in Claude Code|Desktop

  • "Search Next.js docs for middleware routing. Give only the most relevant sections and keep it under 60 KB."
  • "From Drizzle ORM docs, show how to define relations. Retrieve the exact section content."
  • "List which sources are indexed right now."
  • "Refresh the Drizzle docs so I get the latest version, then search for migrations."
  • "Get the section for app router dynamic routes from Next.js using its canonical ID."

Configuration (optional)

  • --store-path PATH (default: none) Absolute path to persist embeddings. If set, disk persistence is enabled automatically. Prefer absolute paths (e.g., /Users/you/.llms-cache).

  • --ttl DURATION (default: 24h) Refresh cadence for sources. Supports 30m, 24h, 7d.

  • --timeout SECONDS (default: 30) HTTP timeout.

  • --embed-model MODEL (default: BAAI/bge-small-en-v1.5) SentenceTransformers model id.

  • --max-get-bytes N (default: 75000) Byte cap for retrieved content.

  • --auto-retrieve-threshold FLOAT (default: 0.1) Score threshold (0–1) to auto-retrieve matches.

  • --auto-retrieve-limit N (default: 5) Max docs to auto-retrieve per query.

  • --no-preindex (default: off) Disable automatic pre-indexing on launch.

  • --no-background-preindex (default: off) If preindexing is on, wait for it to finish before serving.

  • --no-snippets (default: off) Disable content snippets in search results.

  • --sources ... / positional sources One or more llms.txt or llms-full.txt URLs.

  • --store {memory|disk} (default: auto) Not usually needed. Auto-selected based on --store-path. Use only to explicitly override behavior.

Development

make install  # install deps
make test     # run tests
make check    # format check, lint, type-check, tests
make fix      # auto-format and fix lint

Built on FastMCP and the Model Context Protocol. MIT license — see LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

llms_txt_mcp-0.1.0.tar.gz (2.1 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

llms_txt_mcp-0.1.0-py3-none-any.whl (19.0 kB view details)

Uploaded Python 3

File details

Details for the file llms_txt_mcp-0.1.0.tar.gz.

File metadata

  • Download URL: llms_txt_mcp-0.1.0.tar.gz
  • Upload date:
  • Size: 2.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for llms_txt_mcp-0.1.0.tar.gz
Algorithm Hash digest
SHA256 5f59d3d8e01c1bd866c133be5f03a99a274ede21c560ec559053176163f36243
MD5 b1ec9b9c612264f5244b4b5e17d53b79
BLAKE2b-256 625e23ed394e114a689a78c349d918bba7342d06f880f8ae30d814edc3821c42

See more details on using hashes here.

Provenance

The following attestation bundles were made for llms_txt_mcp-0.1.0.tar.gz:

Publisher: release.yml on tenequm/llms-txt-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file llms_txt_mcp-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: llms_txt_mcp-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 19.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for llms_txt_mcp-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 eb0634646f558e5577c9951f15f405dc5bb355bba3b975f1ed1abaa3d8680a0f
MD5 150d0e8711dcd773f2e4f1f946fedcd5
BLAKE2b-256 0535aeb4df6c2633aaf6045af078301e3a3027d5ead549df8a8cf341e4575e56

See more details on using hashes here.

Provenance

The following attestation bundles were made for llms_txt_mcp-0.1.0-py3-none-any.whl:

Publisher: release.yml on tenequm/llms-txt-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page