Fetch Browser
A headless browser MCP server that allows AI agents to fetch web content and perform Google searches without API keys, supporting various output formats like Markdown, JSON, HTML, and text.
A headless browser MCP server that allows AI agents to fetch web content and perform Google searches without API keys, supporting various output formats like Markdown, JSON, HTML, and text.
A powerful headless browser MCP server that enables AI agents to fetch web content and perform Google searches without requiring any API keys. Built with modern web standards and designed for seamless integration with AI platforms.
Automatic retry and error handling
Universal Content Fetching:
Rate limiting protection
Format Conversion:
google_search
)Executes Google searches and fetches full content of results:
{
query: "your search query",
responseType: "markdown", // or "json", "html", "text"
maxResults: 10, // 1-100 results
topic: "web" // or "news"
}
fetch_url
)Fetches content from any URL:
{
url: "https://example.com",
responseType: "markdown", // or "json", "html", "text"
timeout: 30000 // optional, in milliseconds
}
# For Claude
npx -y @smithery/cli install @TheSethRose/fetch-browser --client claude
# For Cursor
npx -y @smithery/cli install @TheSethRose/fetch-browser --client cursor
# For TypeScript
npx -y @smithery/cli install @TheSethRose/fetch-browser --client typescript
# Clone the repository
git clone https://github.com/TheSethRose/fetch-browser.git
cd fetch-browser
# Install dependencies
npm install
# Build the project
npm run build
# Start the server
npm start
# Watch mode with auto-rebuild
npm run watch
# Run with inspector
npm run inspector
# Debug mode
npm run debug
# Debug with watch mode
npm run debug:watch
## [Page Title](https://example.com)
Content converted to clean markdown with:
- Lists
- **Bold text**
- *Italic text*
- [Links](https://example.com)
{
"url": "https://example.com",
"content": "Extracted content...",
"error": null
}
<div class="search-result">
<h2><a href="https://example.com">Page Title</a></h2>
<div class="content">
Original HTML content
</div>
</div>
### https://example.com
Plain text content with preserved formatting
==========
Created by Seth Rose: - Website: https://www.sethrose.dev - ? (Twitter): https://x.com/TheSethRose - ? (Bluesky): https://bsky.app/profile/sethrose.dev
MIT License - See LICENSE for details
[
{
"description": "Fetch content from a URL with proper error handling and response processing",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"responseType": {
"default": "text",
"description": "Expected response type",
"enum": [
"text",
"json",
"html",
"markdown"
],
"type": "string"
},
"timeout": {
"default": 30000,
"description": "Request timeout in milliseconds",
"maximum": 60000,
"minimum": 1000,
"type": "number"
},
"url": {
"description": "The URL to fetch",
"format": "uri",
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
},
"name": "fetch_url"
},
{
"description": "Execute a Google search and return results in various formats",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"maxResults": {
"default": 10,
"description": "Maximum number of results to return",
"maximum": 100,
"minimum": 1,
"type": "number"
},
"query": {
"description": "The search query to execute",
"minLength": 1,
"type": "string"
},
"responseType": {
"default": "json",
"description": "Expected response type",
"enum": [
"text",
"json",
"html",
"markdown"
],
"type": "string"
},
"topic": {
"default": "web",
"description": "Type of search to perform",
"enum": [
"web",
"news"
],
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "google_search"
}
]