Skip to main content
Glama
Distill MCP server

Distill MCP server

Distill MCP server

M8ven Score CI PyPI Python 3.10+ License: MIT

Give your AI agent clean Markdown from any web page: the main content only, without navigation, ads or scripts. Distill honours robots.txt and AI opt-outs.

The server is open source (MIT). It calls the Distill API, which is paid, with a free plan.

  • You use your own key, from RapidAPI or api.market.

  • Every tool call is one request on your plan.

  • The free Basic plan has 15 requests a month, with a hard limit, so it never runs up a bill.

1. Get a key

marketplace

RapidAPI

plans

api.market

store

Related MCP server: read-website-fast

2. Add the server to your MCP client

The server runs locally over stdio with uv. Put your key in its environment.

JSON configuration (Claude Desktop, Cursor, VS Code and most clients):

{
  "mcpServers": {
    "distill": {
      "command": "uvx",
      "args": ["--from", "bytestay-distill-mcp", "distill-mcp"],
      "env": { "RAPIDAPI_KEY": "your-rapidapi-key" }
    }
  }
}

Claude Code:

claude mcp add distill --env RAPIDAPI_KEY=your-rapidapi-key -- uvx --from bytestay-distill-mcp distill-mcp

Environment

variable

meaning

RAPIDAPI_KEY

your RapidAPI key

API_MARKET_KEY

your api.market key, used when RAPIDAPI_KEY is not set

HFL_MARKETPLACE

rapidapi or apimarket, when both keys are set

Without a key the server still starts. The first tool call then explains where to get one.

Also listed on Glama:

distill-mcp on Glama

3. Tools

tool

what it does

fetch_markdown(url, max_chars=20000, include_links=True, include_images=False, include_tables=True)

fetches the page and returns its main content as Markdown, with the title, author, date and language

html_to_markdown(html, base_url=None, …)

the same, for HTML you already have; nothing is fetched

When a site refuses (robots.txt, a noai directive, bot protection), status says so and a note asks the agent to respect it. Don't fetch the page another way: the terms forbid it.

status is ok on success. Other values (robots_txt, opted_out, blocked, not_html, http_error, unreachable) explain why there is no content.

Every tool returns the API's JSON response.

  • When the marketplace reports it, quota_remaining is added: the requests left on your plan this month.

  • Errors are explained in plain words, with what to do next:

    • key refused, with the link to subscribe;

    • quota reached, with the plans;

    • input the API couldn't process, with the API's reason.

Privacy

  • Local files are read only when a tool is given their path. They are sent to the API for that one request.

  • The API processes inputs in memory and doesn't store them. See the privacy policy.

  • Your key is only sent to the marketplace you chose.

Limits

  • html up to 5 MB.

  • Only HTML pages; PDFs and other files are refused (use Unfold for documents).

  • The server needs Python 3.10+ (uv installs it for you).

Development

uv venv && uv pip install -e ".[dev]"
.venv/bin/pytest            # unit tests, no network; 100% coverage required
.venv/bin/ruff check src tests scripts

scripts/e2e_stdio.py distill runs the server over stdio, as a client would, and calls its tools against the real API. It needs RAPIDAPI_KEY or API_MARKET_KEY.

Licence

MIT. Distill itself is a paid API with a free plan, run by ByteStay.

Available Tools

2 tools
fetch_markdownA
Read-onlyIdempotent

Fetch a web page and return its main content as Markdown, with title, author, date and language.

status is "ok" on success. Other values (robots_txt, opted_out, blocked, not_html, http_error, unreachable) explain why there is no content.

Inputs: url (required), max_chars, include_links, include_images, +1 more.

html_to_markdownA
Read-onlyIdempotent

Turn HTML you already have into clean Markdown (main content only). A noai directive in the HTML is honoured: the result then has no content.

Inputs: html (required), base_url, max_chars, include_links, +2 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.9/5.0

    Scored across 2 tools

    Disambiguation4/5

    The two tools are clearly separated by input source: fetch_markdown takes a URL and retrieves content, while html_to_markdown takes HTML the caller already has. There is mild conceptual overlap since fetching implicitly converts HTML, but the descriptions make the boundary clear enough to choose correctly.

    Naming Consistency5/5

    Both names follow the same snake_case verb_object pattern (fetch_markdown, html_to_markdown) and use the shared 'markdown' noun, making the pair predictable and readable.

    Tool Count3/5

    Two tools is on the thin side for a server, though the scope (fetch and convert to Markdown) is genuinely narrow. It is borderline rather than mismatched, since each tool earns its place.

    Completeness4/5

    The core lifecycle of getting Markdown from either a URL or raw HTML is covered, with status codes explaining failure modes. Minor gaps exist, such as batch fetching or metadata-only extraction, but agents can work around them.

    Maintenance

    ActivityNo data
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      Not graded
      quality
      A
      maintenance
      Enables AI agents and MCP clients to fetch webpages and crawl sites, extract main content, and convert it into clean Markdown with preserved links for fast, token-efficient scraping.
      -
    • A
      license
      Not graded
      quality
      A
      maintenance
      Enables AI agents to fetch and crawl web pages, strip noise, and convert content into clean Markdown with preserved links for token-efficient scraping and downstream processing.
      MIT