MCP Node Fetch
# MCP Node Fetch
An MCP server that enables fetching web content using the Node.js [undici](https://github.com/nodejs/undici) library.
## Features
- Fetch content from any URL using various HTTP methods
- Support for headers and request body
- Return content in various formats (text, JSON, binary, HTML fragments)
- Handle errors gracefully
- Configure timeout and redirect behavior
## MCP Tools
This server provides the following MCP tools:
### `fetch-url`
Fetches content from a URL and returns it.
Parameters:
- `url` (string, required): The URL to fetch
- `method` (string, optional): HTTP method (default: "GET")
- `headers` (object, optional): HTTP headers to include
- `body` (string, optional): Request body for POST/PUT requests
- `timeout` (number, optional): Request timeout in milliseconds
- `responseType` (string, optional): How to parse the response ("text", "json", "binary", "html-fragment")
- `fragmentSelector` (string, optional): CSS selector to extract specific HTML fragments (when responseType is "html-fragment")
- `followRedirects` (boolean, optional): Whether to follow redirects (default: true)
### `extract-html-fragment`
Extracts specific HTML content from a webpage using CSS selectors and optionally navigates to anchor points.
Parameters:
- `url` (string, required): The URL to fetch
- `selector` (string, required): CSS selector for the HTML fragment to extract
- `anchorId` (string, optional): Optional anchor ID to locate a specific fragment
- `method` (string, optional): HTTP method (default: "GET")
- `headers` (object, optional): HTTP headers to include
- `body` (string, optional): Request body for POST requests
- `timeout` (number, optional): Request timeout in milliseconds
- `followRedirects` (boolean, optional): Whether to follow redirects (default: true)
### `check-status`
Checks if a URL is accessible without downloading the full content.
Parameters:
- `url` (string, required): The URL to check
- `timeout` (number, optional): Request timeout in milliseconds
## Claude for Desktop Configuration
To use with Claude for Desktop, add this to your `claude_desktop_config.json`:
```json
{
"mcpServers": {
"node-fetch": {
"command": "node",
"args": ["dist/index.js"]
}
}
}
```
## License
MIT
TDQS
Scored across 3 tools
Each tool has a clearly distinct purpose: check-status performs a HEAD request to verify accessibility, extract-html-fragment parses HTML content with CSS selectors, and fetch-url retrieves full content. There is no overlap in functionality, making tool selection straightforward for an agent.
The tools follow a consistent verb-noun pattern (check-status, extract-html-fragment, fetch-url), with all names using kebab-case. The minor deviation is that 'fetch-url' uses a verb-noun structure while the others are verb-adjective-noun, but the pattern remains readable and predictable.
With 3 tools, this server is well-scoped for its purpose of URL fetching and HTML processing. Each tool earns its place by covering distinct aspects: status checking, content fetching, and HTML extraction, without being overly sparse or bloated.
The tool set covers core workflows for URL interaction: checking accessibility, fetching content, and extracting specific data. A minor gap is the lack of tools for more advanced operations like POST requests or handling different content types, but agents can work around this for basic use cases.