Skip to main content
Like AOF? Give us a star!
If you find AOF useful, please star us on GitHub. It helps us reach more developers and grow the community.

Fetch MCP Server

Make HTTP requests and fetch web content.

Overview​

PropertyValue
Package@modelcontextprotocol/server-fetch
SourceGitHub
Transportstdio

Installation​

npx -y @modelcontextprotocol/server-fetch

Configuration​

mcp_servers:
- name: fetch
command: npx
args: ["-y", "@modelcontextprotocol/server-fetch"]

With Custom User Agent​

mcp_servers:
- name: fetch
command: npx
args:
- "-y"
- "@modelcontextprotocol/server-fetch"
- "--user-agent"
- "AOF-Agent/1.0"

Tools​

fetch​

Fetch content from a URL.

Parameters:

  • url (string, required): URL to fetch
  • max_length (number, optional): Maximum content length to return
  • start_index (number, optional): Start position for pagination
  • raw (boolean, optional): Return raw HTML instead of markdown

Example:

{
"tool": "fetch",
"arguments": {
"url": "https://api.example.com/status",
"max_length": 5000
}
}

Returns:

  • For HTML pages: Converted markdown content
  • For JSON APIs: Raw JSON response
  • For other content: Raw text

Features​

Automatic Content Conversion​

The fetch server automatically:

  • Converts HTML to readable markdown
  • Preserves JSON structure
  • Extracts text from common formats
  • Handles character encoding

Pagination Support​

For large content, use pagination:

{
"tool": "fetch",
"arguments": {
"url": "https://example.com/long-page",
"max_length": 5000,
"start_index": 0
}
}

Then fetch the next chunk:

{
"tool": "fetch",
"arguments": {
"url": "https://example.com/long-page",
"max_length": 5000,
"start_index": 5000
}
}

Raw HTML Mode​

Get raw HTML when needed:

{
"tool": "fetch",
"arguments": {
"url": "https://example.com/page",
"raw": true
}
}

Use Cases​

API Monitor Agent​

apiVersion: aof.sh/v1alpha1
kind: Agent
metadata:
name: api-monitor
spec:
model: google:gemini-2.5-flash
mcp_servers:
- name: fetch
command: npx
args: ["-y", "@modelcontextprotocol/server-fetch"]
system_prompt: |
You monitor API endpoints for health:
1. Fetch status endpoints
2. Check response codes
3. Validate JSON structure
4. Report anomalies

Endpoints to monitor:
- https://api.example.com/health
- https://api.example.com/v1/status

Documentation Fetcher​

apiVersion: aof.sh/v1alpha1
kind: Agent
metadata:
name: doc-fetcher
spec:
model: google:gemini-2.5-flash
mcp_servers:
- name: fetch
command: npx
args: ["-y", "@modelcontextprotocol/server-fetch"]
system_prompt: |
You fetch and summarize documentation:
- Retrieve documentation pages
- Extract key information
- Summarize for users
- Find relevant sections

Price Tracker​

apiVersion: aof.sh/v1alpha1
kind: Agent
metadata:
name: price-tracker
spec:
model: google:gemini-2.5-flash
mcp_servers:
- name: fetch
command: npx
args: ["-y", "@modelcontextprotocol/server-fetch"]
system_prompt: |
You track prices from APIs:
- Fetch pricing data
- Compare historical prices
- Alert on significant changes
- Generate price reports

Webhook Tester​

apiVersion: aof.sh/v1alpha1
kind: Agent
metadata:
name: webhook-tester
spec:
model: google:gemini-2.5-flash
mcp_servers:
- name: fetch
command: npx
args: ["-y", "@modelcontextprotocol/server-fetch"]
system_prompt: |
You test webhook endpoints:
- Verify endpoint accessibility
- Check response formats
- Validate SSL certificates
- Test authentication flows

Content Type Handling​

Content TypeHandling
text/htmlConverted to markdown
application/jsonReturned as-is
text/plainReturned as-is
text/markdownReturned as-is
OtherBest-effort text extraction

Headers​

The server sets default headers:

  • User-Agent: Configurable via args
  • Accept: text/html,application/json,text/plain,*/*

Limitations​

  • No POST/PUT/DELETE: Only GET requests
  • No Custom Headers: Cannot set auth headers per-request
  • No Cookies: Stateless requests only
  • Size Limits: Large responses are truncated

Security​

  • URL Validation: URLs are validated before fetching
  • No Local Files: Cannot fetch file:// URLs
  • Timeout: Requests timeout after 30 seconds
  • HTTPS Preferred: HTTP allowed but HTTPS recommended

Troubleshooting​

Connection Refused​

The target server may be blocking requests:

  • Try with a different user agent
  • Check if the site requires authentication
  • Verify the URL is accessible

Timeout​

Large pages may timeout:

  • Use max_length to limit response size
  • Try a more specific URL path
  • Check network connectivity

Empty Response​

Some sites return empty for bots:

  • Site may require JavaScript rendering (use puppeteer instead)
  • Site may block automated requests
  • Check robots.txt compliance

SSL Errors​

Certificate validation issues:

  • Verify the site's SSL certificate is valid
  • Check for certificate chain issues