Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Description from the maker (original English)
MCP server for fetching web resources with content extraction and anti-bot bypass.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
FIRECRAWL_API_KEY, BRIGHTDATA_API_KEY, STRATEGY_CONFIG_PATH, OPTIMIZE_FOR, MCP_RESOURCE_STORAGE, MCP_RESOURCE_FILESYSTEM_ROOT, SKIP_HEALTH_CHECKS, LLM_PROVIDER, LLM_API_KEY, LLM_API_BASE_URL, LLM_MODELValues marked secret are keys to your account. Never share them or paste them into a chat.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"pulse-fetch": {
"command": "npx",
"args": [
"-y",
"@pulsemcp/pulse-fetch"
],
"env": {
"FIRECRAWL_API_KEY": "your-value",
"BRIGHTDATA_API_KEY": "your-value",
"STRATEGY_CONFIG_PATH": "your-value",
"OPTIMIZE_FOR": "your-value",
"MCP_RESOURCE_STORAGE": "your-value",
"MCP_RESOURCE_FILESYSTEM_ROOT": "your-value",
"SKIP_HEALTH_CHECKS": "your-value",
"LLM_PROVIDER": "your-value",
"LLM_API_KEY": "your-value",
"LLM_API_BASE_URL": "your-value",
"LLM_MODEL": "your-value"
}
}
}
}Run this in your terminal
claude mcp add pulse-fetch --env FIRECRAWL_API_KEY=your-value --env BRIGHTDATA_API_KEY=your-value --env STRATEGY_CONFIG_PATH=your-value --env OPTIMIZE_FOR=your-value --env MCP_RESOURCE_STORAGE=your-value --env MCP_RESOURCE_FILESYSTEM_ROOT=your-value --env SKIP_HEALTH_CHECKS=your-value --env LLM_PROVIDER=your-value --env LLM_API_KEY=your-value --env LLM_API_BASE_URL=your-value --env LLM_MODEL=your-value -- npx -y @pulsemcp/pulse-fetchFill in the empty values before running it.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"pulse-fetch": {
"command": "npx",
"args": [
"-y",
"@pulsemcp/pulse-fetch"
],
"env": {
"FIRECRAWL_API_KEY": "your-value",
"BRIGHTDATA_API_KEY": "your-value",
"STRATEGY_CONFIG_PATH": "your-value",
"OPTIMIZE_FOR": "your-value",
"MCP_RESOURCE_STORAGE": "your-value",
"MCP_RESOURCE_FILESYSTEM_ROOT": "your-value",
"SKIP_HEALTH_CHECKS": "your-value",
"LLM_PROVIDER": "your-value",
"LLM_API_KEY": "your-value",
"LLM_API_BASE_URL": "your-value",
"LLM_MODEL": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"pulse-fetch": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@pulsemcp/pulse-fetch"
],
"env": {
"FIRECRAWL_API_KEY": "your-value",
"BRIGHTDATA_API_KEY": "your-value",
"STRATEGY_CONFIG_PATH": "your-value",
"OPTIMIZE_FOR": "your-value",
"MCP_RESOURCE_STORAGE": "your-value",
"MCP_RESOURCE_FILESYSTEM_ROOT": "your-value",
"SKIP_HEALTH_CHECKS": "your-value",
"LLM_PROVIDER": "your-value",
"LLM_API_KEY": "your-value",
"LLM_API_BASE_URL": "your-value",
"LLM_MODEL": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
STRATEGY_CONFIG_PATH envOPTIMIZE_FOR envMCP_RESOURCE_STORAGE envMCP_RESOURCE_FILESYSTEM_ROOT envSKIP_HEALTH_CHECKS envLLM_PROVIDER envLLM_API_BASE_URL envLLM_MODEL envThese settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 7, 2026
The registry name was verified against the domain pulsemcp.com (the registry checks domain ownership)
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
You need to fill in: FIRECRAWL_API_KEY, BRIGHTDATA_API_KEY, LLM_API_KEY
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed –, and the latest version (0.3.3) reached the registry 5 months ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Node.js on your computer.
In the same category: Spec Driven Development, Remote Desktop Commander, Draugr
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Security scanning for AI agents: SAST, SCA, secrets, IaC, DAST, ranked by real risk.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
Haven't heard about MCP yet? The easiest way to keep up-to-date is to read our weekly newsletter at PulseMCP.
This is an MCP (Model Context Protocol) Server that pulls specific resources from the open internet into context, designed for agent-building frameworks and MCP clients that lack built-in fetch capabilities.
Pulse Fetch is purpose-built for extracting clean, structured content from web pages while minimizing token usage and providing reliable access to protected content through advanced anti-bot bypassing capabilities.
This project is built and maintained by PulseMCP.
Clean content extraction: Strips out HTML noise using Mozilla's Readability algorithm to minimize token usage during MCP Tool calls.
Intelligent caching: Automatically caches scraped content as MCP Resources. Subsequent requests for the same URL return cached content instantly without network calls, dramatically improving performance.
Anti-bot bypass: Integrates with Firecrawl and BrightData APIs to reliably work around anti-scraping technology.
Smart strategy selection: Automatically learns and applies the best scraping method for specific URL patterns, improving performance over time.
LLM-optimized: Offers MCP Prompts and descriptive Tool design for better LLM interaction reliability.
Flexible formats: Supports multiple output formats including clean markdown, HTML, screenshots, and structured data extraction.
Intelligent extraction: Extract specific information using natural language queries powered by LLMs.
This server is built and tested on macOS with Claude Desktop. It should work with other MCP clients as well.
| Tool Name | Description |
|---|---|
scrape | Scrape a single webpage with advanced content extraction options and multiple output formats. |
scrape tool handles all web content extraction needs and automatically bypasses anti-bot protection when necessaryresultHandling parameter:saveAndReturn (default): Saves content as MCP Resource AND returns it - best for reusereturnOnly: Returns content without saving - use when you only need content oncesaveOnly: Saves content as MCP Resource, returns only resource link - efficient for large contentforceRescrape: true to bypass the cache and get fresh content when you know the page has changedmaxChars and startIndex parameters to handle large content that exceeds token limitsextract parameter with natural language queries to extract specific information from pages (requires LLM configuration)User: "Get the main content from this article: https://example.com/article"
Assistant: I'll extract the content from that article for you.
[Uses scrape tool with onlyMainContent: true]
I've extracted the main article content. The article is titled "Example Article Title" and contains approximately 2,500 words discussing...
User: "Extract the product information from this e-commerce page: https://shop.example.com/product/123"
Assistant: I'll extract the structured product data from that page.
[Uses scrape tool with format: 'extract' and appropriate schema]
I've extracted the product information:
User: "This page is blocking me with CAPTCHA. Can you get the content from https://protected.example.com/data"
Assistant: I'll extract the content from that protected page for you.
[Uses scrape tool with automatic anti-bot bypass]
I successfully bypassed the protection and extracted the content from the page using BrightData's Web Unlocker capabilities.
User: "Get the content from https://example.com/article again"
Assistant: I'll retrieve that content for you.
[Uses scrape tool - automatically returns cached content]
I've retrieved the content from cache (originally scraped 2 hours ago). The article contains...
User: "Actually, I think that article was updated. Can you get the latest version?" Assistant: I'll fetch a fresh copy of the article for you.
[Uses scrape tool with forceRescrape: true]
I've fetched the latest version of the article. I can see it was indeed updated with new information about...
User: "I need to archive this entire article: https://example.com/long-article"
Assistant: I'll save that article as a resource for you.
[Uses scrape tool with resultHandling: 'saveOnly']
I've successfully archived the article. It's now saved as an MCP Resource that you can access later.
User: "Can you extract just the summary from https://example.com/report without saving it?" Assistant: I'll extract just the summary without saving the full content.
[Uses scrape tool with resultHandling: 'returnOnly' and extract parameter]
Here's the summary I extracted from the report: [summary content]
If our Design Principles resonate with you, you should consider using our server.
The official reference implementation of fetch is the closest alternative. However:
fetch has no mechanisms for bypassing anti-scraping technology, meaning attempts may randomly fail. We integrate with third-party services for reliable access.fetch is maintained by volunteers, so bugs or edge cases are less likely to be addressed quickly.Pulse Fetch caches responses as Resources, allowing easy inspection and re-use of Tool call outcomes.Pulse Fetch has more descriptive Tool design that more reliably triggers and completes desired tasks.Most other alternatives fall short on one or more vectors:
| Environment Variable | Description | Required | Default Value | Example |
|---|---|---|---|---|
FIRECRAWL_API_KEY | API key for Firecrawl service to bypass anti-bot measures | No | N/A | fc-abc123... |
BRIGHTDATA_API_KEY | Bearer token for BrightData Web Unlocker service | No | N/A | Bearer bd_abc123... |
STRATEGY_CONFIG_PATH | Path to markdown file containing scraping strategy configuration | No | OS temp dir | /path/to/scraping-strategies.md |
OPTIMIZE_FOR | Optimization strategy for scraping: cost or speed | No | cost | speed |
MCP_RESOURCE_STORAGE | Storage backend for saved resources: memory or filesystem | No | memory | filesystem |
MCP_RESOURCE_FILESYSTEM_ROOT | Directory for filesystem storage (only used with filesystem type) | No | /tmp/pulse-fetch/resources | /home/user/mcp-resources |
SKIP_HEALTH_CHECKS | Skip API authentication health checks at startup | No | false | true |
The extract feature provides an alternative to MCP's native sampling capability for clients that don't support it. When configured, it enables intelligent information extraction from scraped content using LLMs. If neither LLM configuration nor MCP sampling is available, the extract parameter will not be shown in the tool.
| Environment Variable | Description | Required | Default Value | Example |
|---|---|---|---|---|
LLM_PROVIDER | LLM provider: anthropic, openai, openai-compatible | No | N/A | anthropic |
LLM_API_KEY | API key for the chosen LLM provider | No | N/A | sk-abc123... |
LLM_API_BASE_URL | Base URL for OpenAI-compatible providers | No | N/A | https://api.together.xyz/v1 |
LLM_MODEL | Specific model to use for extraction | No | See defaults below | gpt-4-turbo |
Default Models:
claude-sonnet-4-20250514 (Claude Sonnet 4 - latest and most capable)gpt-4.1-mini (GPT-4.1 Mini - latest and most capable)You'll need Node.js installed on your machine to run the local version.
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
Add this configuration to your Claude Desktop config file:
Minimal configuration (uses native fetch only):
{
"mcpServers": { "pulse-fetch": { "command": "npx", "args": ["-y", "@pulsemcp/pulse-fetch"] } } }
Full configuration (with all optional environment variables):
{
"mcpServers": { "pulse-fetch": { "command": "npx", "args": ["-y", "@pulsemcp/pulse-fetch"], "env": { "FIRECRAWL_API_KEY": "your-firecrawl-api-key", "BRIGHTDATA_API_KEY": "your-brightdata-bearer-token", "STRATEGY_CONFIG_PATH": "/path/to/your/scraping-strategies.md", "OPTIMIZE_FOR": "cost", "MCP_RESOURCE_STORAGE": "filesystem", "MCP_RESOURCE_FILESYSTEM_ROOT": "/path/to/resource/storage" } } } }
To set up the local version:
cd pulse-fetch/localnpm installnpm run buildOnly the beginning is shown; read the rest in the repo