Skip to main content
Glama
mcollina

MCP Node Fetch

by mcollina
README.md
# 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

B3.4/5.0

Scored across 3 tools

Disambiguation5/5

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.

Naming Consistency4/5

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.

Tool Count5/5

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.

Completeness4/5

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.

Maintenance

ActivityInactive
ResponsivenessNo issues