FetchV2

io.github.praveencPublished by GitHub account praveencv2.0.0Updated Oct 24, 2026

Fetch and extract web pages, discover links, and read llms.txt documentation indexes.

Overview

AI-generated overview

A local MCP server that fetches web pages, extracts their main content as clean Markdown, discovers links, and reads llms.txt documentation indexes.

What you can do
Fetch one page and extract its main content as Markdown, with options for raw HTML, metadata, tables, links and pagination by character offset. Fetch up to 10 pages in one batch request and combine the results. Discover and regex-filter links on a page, resolving relative URLs. Read an llms.txt index and optionally fetch all its linked pages. Use built-in prompts to fetch and summarize a URL or research a topic.
When to use it
Useful when an assistant needs to read documentation or articles from the web as clean text, gather several pages at once, or work through an llms.txt-based documentation site. Good for research and documentation workflows where raw HTML is too noisy.
Requirements
Runs locally over stdio as a Python package (fetchv2-mcp-server) via uvx or pip. Needs uv and Python 3.11 or newer. No accounts, API keys, environment variables or headers are declared. Network access to the target sites is required.
Before you install
The fetch tool checks robots.txt by default, but the bypass_robots_txt option skips that check, and fetch_batch does not check robots.txt at all. Fetching llms.txt with include_content enabled can return a very large response. Requested pages are retrieved from third-party sites, so their content reaches the assistant.

Installation

In SourceWeft

  1. Open FetchV2 in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

FetchV2 MCP Server

[PyPI version] [CI] [Python 3.11+] [License: MIT]

FetchV2 is a Model Context Protocol (MCP) server that retrieves web pages and returns clean Markdown. It uses Trafilatura to remove navigation, advertisements, footers, and other page elements.

What it does

ToolUse
fetchFetch one web page and extract its main content
fetch_batchFetch up to 10 web pages in one request
discover_linksFind and filter links on a web page
fetch_llms_txtRead an llms.txt index and optionally fetch its linked pages

FetchV2 can return raw HTML, preserve links and tables, and paginate long content. The fetch tool checks robots.txt by default.

Quick start

Requirements

  1. Install uv.
  2. Install Python 3.11 or newer:
bash
uv python install 3.11

Install for Cursor or VS Code

Configure another MCP client

Add this server definition to your MCP client configuration:

json
{  "mcpServers": {    "fetchv2": {      "command": "uvx",      "args": ["fetchv2-mcp-server@latest"]    }  }}

Common configuration file locations:

  • Claude Desktop on macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Claude Desktop on Windows: %APPDATA%\Claude\claude_desktop_config.json
  • Windsurf: ~/.codeium/windsurf/mcp_config.json
  • Kiro: .kiro/settings/mcp.json in your project

Install in a Python environment

Use one of these commands if you want to install the package directly:

bash
uv add fetchv2-mcp-server
bash
pip install fetchv2-mcp-server

Try it

Ask your MCP client to perform a task such as:

  • "Fetch the documentation from <URL>."
  • "Find links on <docs URL> that contain tutorial."
  • "Read these pages and summarize their differences: [url1, url2, url3]."

Typical documentation workflow

First, find the relevant pages:

python
discover_links(url="https://docs.example.com/", filter_pattern="/guide/")

Then fetch the selected pages in one request:

python
fetch_batch(    urls=[        "https://docs.example.com/guide/intro",        "https://docs.example.com/guide/setup",    ])

Tool reference

fetch

Fetch one web page and extract its main content as Markdown.

python
fetch(    url: str,    max_length: int = 5000,    start_index: int = 0,    get_raw_html: bool = False,    include_metadata: bool = True,    include_tables: bool = True,    include_links: bool = False,    bypass_robots_txt: bool = False,) -> str
ParameterTypeDefaultDescription
urlstrrequiredWeb page URL
max_lengthint5000Maximum number of characters to return
start_indexint0Character offset for pagination
get_raw_htmlboolFalseReturn raw HTML without extraction
include_metadataboolTrueInclude the title, author, and date
include_tablesboolTruePreserve tables in Markdown
include_linksboolFalsePreserve links in Markdown
bypass_robots_txtboolFalseSkip the robots.txt check for a user-requested fetch

If the response is truncated, use the returned start_index value in the next call.

fetch_batch

Fetch up to 10 web pages and combine the results.

python
fetch_batch(    urls: list[str],    max_length_per_url: int = 2000,    get_raw_html: bool = False,) -> str
ParameterTypeDefaultDescription
urlslist[str]requiredWeb page URLs to fetch
max_length_per_urlint2000Maximum number of characters to return for each URL
get_raw_htmlboolFalseReturn raw HTML without extraction

This tool reports a failed URL in its result and continues with the other URLs. It does not check robots.txt.

discover_links

Find links on a web page and optionally filter them with a regular expression.

python
discover_links(url: str, filter_pattern: str = "") -> str
ParameterTypeDefaultDescription
urlstrrequiredWeb page URL to scan
filter_patternstr""Regular expression used to filter links

The tool resolves relative links and returns up to 100 URLs.

fetch_llms_txt

Read an llms.txt file and list its documentation links.

python
fetch_llms_txt(    url: str,    include_content: bool = False,    max_length_per_url: int = 2000,) -> str
ParameterTypeDefaultDescription
urlstrrequiredURL of an llms.txt file
include_contentboolFalseFetch the content of all linked pages
max_length_per_urlint2000Maximum number of characters to return for each linked page

By default, this tool fetches only the llms.txt index. Set include_content=True to fetch all linked pages. This option can return a large response.

The tool resolves relative URLs, such as /docs/guide.md, against the llms.txt URL.

Prompts

  • fetch_manual creates a request to fetch and summarize one URL.
  • research_topic creates a request to research a topic with optional URLs.

Development

Clone the repository and install the development dependencies:

bash
git clone https://github.com/praveenc/fetchv2-mcp-server.gitcd fetchv2-mcp-serveruv sync --dev

Run the tests:

bash
uv run pytest

Run the server with MCP Inspector:

bash
uv run mcp dev src/fetchv2_mcp_server/server.py

Run lint and type checks:

bash
uv run ruff check .uv run pyright

Contributing

Read CONTRIBUTING.md before you submit a change.

Support

Use the GitHub issue tracker to report a problem or request a feature.

License

This project uses the MIT License. See LICENSE for details.

Source: README.md at commit b6a920d

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v2.0.0LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts