
Security News
Lovable’s OJ Rewrites Vite’s Dev Server in Rust as AI Lowers the Cost of Forking Open Source
Lovable’s OJ rewrites Vite’s dev server in Rust, reducing memory use and preview times as AI lowers the cost of open source reimplementation.
fetchv2-mcp-server
Advanced tools
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.
| Tool | Use |
|---|---|
fetch | Fetch one web page and extract its main content |
fetch_batch | Fetch up to 10 web pages in one request |
discover_links | Find and filter links on a web page |
fetch_llms_txt | Read 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.
uv.uv python install 3.11
| Cursor | VS Code |
|---|---|
| Install MCP Server | Install on VS Code |
Add this server definition to your MCP client configuration:
{
"mcpServers": {
"fetchv2": {
"command": "uvx",
"args": ["fetchv2-mcp-server@latest"]
}
}
}
Common configuration file locations:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json~/.codeium/windsurf/mcp_config.json.kiro/settings/mcp.json in your projectUse one of these commands if you want to install the package directly:
uv add fetchv2-mcp-server
pip install fetchv2-mcp-server
Ask your MCP client to perform a task such as:
<URL>."<docs URL> that contain tutorial."[url1, url2, url3]."First, find the relevant pages:
discover_links(url="https://docs.example.com/", filter_pattern="/guide/")
Then fetch the selected pages in one request:
fetch_batch(
urls=[
"https://docs.example.com/guide/intro",
"https://docs.example.com/guide/setup",
]
)
fetchFetch one web page and extract its main content as Markdown.
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
| Parameter | Type | Default | Description |
|---|---|---|---|
url | str | required | Web page URL |
max_length | int | 5000 | Maximum number of characters to return |
start_index | int | 0 | Character offset for pagination |
get_raw_html | bool | False | Return raw HTML without extraction |
include_metadata | bool | True | Include the title, author, and date |
include_tables | bool | True | Preserve tables in Markdown |
include_links | bool | False | Preserve links in Markdown |
bypass_robots_txt | bool | False | Skip 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_batchFetch up to 10 web pages and combine the results.
fetch_batch(
urls: list[str],
max_length_per_url: int = 2000,
get_raw_html: bool = False,
) -> str
| Parameter | Type | Default | Description |
|---|---|---|---|
urls | list[str] | required | Web page URLs to fetch |
max_length_per_url | int | 2000 | Maximum number of characters to return for each URL |
get_raw_html | bool | False | Return 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_linksFind links on a web page and optionally filter them with a regular expression.
discover_links(url: str, filter_pattern: str = "") -> str
| Parameter | Type | Default | Description |
|---|---|---|---|
url | str | required | Web page URL to scan |
filter_pattern | str | "" | Regular expression used to filter links |
The tool resolves relative links and returns up to 100 URLs.
fetch_llms_txtRead an llms.txt file and list its documentation links.
fetch_llms_txt(
url: str,
include_content: bool = False,
max_length_per_url: int = 2000,
) -> str
| Parameter | Type | Default | Description |
|---|---|---|---|
url | str | required | URL of an llms.txt file |
include_content | bool | False | Fetch the content of all linked pages |
max_length_per_url | int | 2000 | Maximum 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.
fetch_manual creates a request to fetch and summarize one URL.research_topic creates a request to research a topic with optional URLs.Clone the repository and install the development dependencies:
git clone https://github.com/praveenc/fetchv2-mcp-server.git
cd fetchv2-mcp-server
uv sync --dev
Run the tests:
uv run pytest
Run the server with MCP Inspector:
uv run mcp dev src/fetchv2_mcp_server/server.py
Run lint and type checks:
uv run ruff check .
uv run pyright
Read CONTRIBUTING.md before you submit a change.
Use the GitHub issue tracker to report a problem or request a feature.
This project uses the MIT License. See LICENSE for details.
FAQs
A robust MCP server for fetching and extracting web content using Trafilatura
We found that fetchv2-mcp-server demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Security News
Lovable’s OJ rewrites Vite’s dev server in Rust, reducing memory use and preview times as AI lowers the cost of open source reimplementation.

Security News
It has been one year since Shai-Hulud made its first appearance on npm.

Research
/Security News
Operators behind PolinRider used a compromised GitHub account to plant malware in four development versions of a Packagist package with 700,000+ downloads.