MCP Connector

Fetch and Convert Web Content to Markdown

MCP fetch server using Defuddle instead of Readability.js for cleaner web-page-to-markdown extraction, with rich metadata and paginated reading.

Works with github

91
Spark score
out of 100
Updated last month
Version 1.0.4
Models
universal

Add to Favorites

Why it matters

Enhance web content fetching with advanced cleaning and markdown conversion. This MCP server replaces standard fetch tools, providing superior extraction of main content, metadata, and readability from modern web pages.

Outcomes

What it gets done

01

Fetch URLs and extract content as clean markdown.

02

Clean HTML, removing clutter and preserving key information.

03

Extract rich metadata including title, author, and publication date.

04

Support chunked reading and pagination for large content.

Install

Add it to your toolbox

Run in your project directory:

curl -fsSL https://spark.entire.vc/get/vb-defuddle-fetch | bash

Capabilities

Tools your agent gets

fetch

Fetches a URL and extracts its content as clean markdown text using Defuddle library

Overview

Defuddle Fetch MCP Server

An MCP server that fetches and converts web pages to clean markdown using Defuddle, a drop-in replacement for the default Readability.js-based fetch server, with pagination and rich metadata extraction (title, author, date, word count). Use as a general-purpose fetch MCP server replacement, especially for sites like GitHub where the default Readability.js-based extractor performs poorly. Same interface as the default fetch server, so it's a straightforward swap.

What it does

A Model Context Protocol server that fetches web content and converts it to clean, readable markdown using the Defuddle library, positioned as a drop-in replacement for the default MCP fetch server, which relies on Mozilla's Readability.js instead. The project's own motivation, drawn from a GitHub issue on the Defuddle repository, is that Readability.js performs noticeably worse than Defuddle at extracting content from certain modern sites - GitHub pages specifically called out as a weak spot - and that Defuddle's support for custom per-site extractors makes it a stronger foundation for a general-purpose web-fetching MCP server.

It exposes a single tool, fetch, which retrieves a URL and extracts its content as clean markdown (or raw HTML, if preferred). Parameters are url (required), max_length (optional, defaulting to 5000 characters, for capping how much content is returned), start_index (optional, defaulting to 0, for paginating through long pages by starting extraction at a given character offset), and raw (optional boolean, defaulting to false, to skip markdown conversion and return raw content instead). Beyond the cleaned content itself, the tool returns rich metadata: title, author, publication date, word count, domain, and processing time.

Three features summarize the value proposition: better content extraction (Defuddle strips webpage clutter while keeping the page title and key metadata intact), flexible output (markdown or raw HTML), and chunked reading (via start_index/max_length pagination for long pages that would otherwise be truncated or overwhelming in a single fetch).

When to use - and when NOT to

Use this connector as a general-purpose replacement for the default fetch MCP server whenever an AI assistant needs to read and summarize web page content, particularly for sites where Readability.js-based extraction produces messy or incomplete results (GitHub pages are the documented example). It is a straightforward drop-in swap - same fetch-style interface, better extraction quality - rather than a fundamentally different tool, so existing fetch-based workflows can adopt it without redesigning how content requests are made.

Capabilities

A single fetch tool, functionally interchangeable with the default fetch MCP server's own tool signature, so a client already calling that server's fetch can point at this one without changing how it invokes it - only the extraction quality and the added metadata fields change.

How to install

{
  "mcpServers": {
    "defuddle-fetch": {
      "command": "npx",
      "args": ["-y", "defuddle-fetch-mcp-server"]
    }
  }
}

Install via npx defuddle-fetch-mcp-server and configure into Claude Desktop through an mcpServers entry in claude_desktop_config.json; can also be built and run locally from source with Node.js for development or contribution, and follows semantic versioning for releases published to the NPM registry via GitHub Actions.

Who it's for

Anyone using an MCP client like Claude Desktop who wants more reliable web-page-to-markdown extraction than the default Readability.js-based fetch server provides, especially when regularly fetching content from sites like GitHub where the default extractor performs poorly.

Source README

defuddle-fetch-mcp-server

A Model Context Protocol server that provides web content fetching capabilities using the Defuddle library. This server enables LLMs to retrieve and process content from web pages, automatically cleaning up the HTML and converting it to clean, readable markdown.

This is a drop-in replacement for the default fetch MCP server that uses Readability. This generally provides better results for most modern webpages.

Comparison

(using this issue)

Default Fetch MCP Defuddle Fetch MCP
Contents of https://github.com/kepano/defuddle/issues/61:

The MCP protocol is a standard for giving AI models access to tools.

There's a default fetch MCP server, which enables AI models to fetch content from websites. This uses Readability.js which is a bit meh, particularly at navigating GitHub (which I try to use it for a lot). I appreciate there is the GitHub MCP, but a more general web browsing solution seems particularly nice here.

Defuddle seems significantly better than Readability.js at processing pages nicely, and the model of having custom extractors to make particular sites work well seems great.

It'd be neat if someone built a defuddle-based fetch MCP server. I might get round to this later if I get frustrated enough with the default fetch MCP 😄
# idea: defuddle-based fetch MCP server · Issue #61 · kepano/defuddle

URL: https://github.com/kepano/defuddle/issues/61

Open

#61

[![@domdomegg](https://avatars.githubusercontent.com/u/4953590?u=c9e631d8135b93c7631d88f2e4bcb6b95e000264&v=4&size=80)](https://github.com/domdomegg)

## Description

The MCP protocol is a standard for giving AI models access to tools.

There's a default fetch MCP server, which enables AI models to fetch content from websites. This uses Readability.js which is a bit meh, particularly at navigating GitHub (which I try to use it for a lot). I appreciate there is the GitHub MCP, but a more general web browsing solution seems particularly nice here.

Defuddle seems significantly better than Readability.js at processing pages nicely, and the model of having custom extractors to make particular sites work well seems great.

It'd be neat if someone built a defuddle-based fetch MCP server. I might get round to this later if I get frustrated enough with the default fetch MCP 😄

Features

  • Better Content Extraction: Uses Defuddle to remove webpage clutter and extract main content: while keeping things like the page title and key metadata
  • Flexible Output: Supports both markdown and raw HTML output
  • Chunked Reading: Supports pagination with start_index and max_length parameters
  • Rich Metadata: Extracts title, author, publication date, word count, and more

Installation

To use this server with the Claude Desktop app, add the following configuration to the "mcpServers" section of your claude_desktop_config.json:

{
  "mcpServers": {
    "defuddle-fetch": {
      "command": "npx",
      "args": [
        "-y",
        "defuddle-fetch-mcp-server"
      ]
    }
  }
}

Components

Tools

  • fetch
    • Fetches a URL from the internet and extracts its contents as clean, markdown text using Defuddle
    • Input parameters:
      • url (string, required): URL to fetch
      • max_length (number, optional): Maximum number of characters to return. Defaults to 5000.
      • start_index (number, optional): Start content from this character index. Defaults to 0.
      • raw (boolean, optional): Get raw content without markdown conversion. Defaults to false.
    • Returns cleaned content with metadata including title, author, publication date, word count, domain, and processing time

Releases

Versions follow the semantic versioning spec.

To release:

  1. Use npm version <major | minor | patch> to bump the version
  2. Run git push --follow-tags to push with tags
  3. Wait for GitHub Actions to publish to the NPM registry.

FAQ

Common questions

Discussion

Questions & comments · 0

Sign In Sign in to leave a comment.