HashScraper MCP Server - Web scraping for AI agents. Bypass anti-bot systems and get clean, LLM-ready content via MCP protocol.
npm install @hashscraper/mcp-server> MCP server that converts URLs to clean Markdown/Text for LLM agents

โก Fast & Reliable โ Built on 7+ years of web scraping expertise, 1,900+ production crawlers, and battle-tested anti-bot handling.
An MCP (Model Context Protocol) server that lets AI agents fetch and read web pages. Simply give it a URL, and it returns clean, LLM-ready content โ fast.
Before: AI can't read web pages directly
After: "Summarize this article" just works โจ
---
- ๐ URL โ Markdown: Preserves headings, lists, links
- ๐ URL โ Text: Plain text extraction
- ๐ท๏ธ Metadata: Title, author, date, images
- ๐งน Clean Output: No ads, no navigation, no scripts
- โก JavaScript Rendering: Works with SPAs
- ๐ณ Built-in Billing: Credit tracking, subscription management, usage analytics (MCP keys)
- ๐ Auto-Retry: 429 rate limit responses automatically retried with Retry-After
---
- Hashscraper account
- Claude Desktop, Cline, or Cursor installed
- Node.js 20+
---
No installation needed. Just configure your MCP client to use npx.
``json`
{
"mcpServers": {
"hashscraper": {
"command": "npx",
"args": ["-y", "@hashscraper/mcp-server"],
"env": {
"HASHSCRAPER_API_KEY": "your-api-key"
}
}
}
}
> See Step 2 for where to put this configuration.
`bashClone the repository
git clone https://github.com/bamchi/hashscraper-mcp-server.git
cd hashscraper-mcp-server
---
API Key Types
HashScraper supports two types of API keys:
| Type | Prefix | Features |
|------|--------|----------|
| MCP Key |
hsmcp_ | Credit billing, rate limits, usage tracking, billing tools |
| Legacy Key | (none) | Basic scraping with existing service tickets |MCP keys are recommended for new users. They unlock all billing and usage tools.
---
Step 1: Get Your API Key
$3
1. Go to https://www.hashscraper.com/mcp
2. Sign up or log in
3. Visit the MCP Dashboard โ your Free plan (500 credits/month) and API key are created automatically
4. Copy your
hsmcp_ API key$3
1. Go to https://www.hashscraper.com
2. Sign up or log in
3. Navigate to My Info
4. Find and copy your API key
---
Step 2: Configure MCP Server
$3
Option A: Via Settings (Recommended)
1. Open Claude Desktop
2. Click Settings (gear icon, bottom left)
3. Select Developer tab
4. Click "Edit Config" button
5. Add the mcpServers configuration (see below)
6. Save and restart Claude Desktop (Cmd+Q, then reopen)
Option B: Edit config file directly
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Windows: %APPDATA%\Claude\claude_desktop_config.jsonConfiguration (npx):
`json
{
"mcpServers": {
"hashscraper": {
"command": "npx",
"args": ["-y", "@hashscraper/mcp-server"],
"env": {
"HASHSCRAPER_API_KEY": "your-api-key"
}
}
}
}
`Configuration (from source):
`json
{
"mcpServers": {
"hashscraper": {
"command": "node",
"args": ["/absolute/path/to/hashscraper-mcp-server/dist/index.js"],
"env": {
"HASHSCRAPER_API_KEY": "your-api-key"
}
}
}
}
`> Note: Replace
/absolute/path/to/ with the actual path where you cloned the repository.$3
Config file location:
- macOS:
~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
- Windows: %APPDATA%\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.jsonConfiguration (npx):
`json
{
"mcpServers": {
"hashscraper": {
"command": "npx",
"args": ["-y", "@hashscraper/mcp-server"],
"env": {
"HASHSCRAPER_API_KEY": "your-api-key"
}
}
}
}
`Configuration (from source):
`json
{
"mcpServers": {
"hashscraper": {
"command": "node",
"args": ["/absolute/path/to/hashscraper-mcp-server/dist/index.js"],
"env": {
"HASHSCRAPER_API_KEY": "your-api-key"
}
}
}
}
`$3
Create or edit
.cursor/mcp.json in your project root:Configuration (npx):
`json
{
"mcpServers": {
"hashscraper": {
"command": "npx",
"args": ["-y", "@hashscraper/mcp-server"],
"env": {
"HASHSCRAPER_API_KEY": "your-api-key"
}
}
}
}
`Configuration (from source):
`json
{
"mcpServers": {
"hashscraper": {
"command": "node",
"args": ["/absolute/path/to/hashscraper-mcp-server/dist/index.js"],
"env": {
"HASHSCRAPER_API_KEY": "your-api-key"
}
}
}
}
`$3
Edit
~/.claude.json or project .mcp.json:Configuration (npx):
`json
{
"mcpServers": {
"hashscraper": {
"command": "npx",
"args": ["-y", "@hashscraper/mcp-server"],
"env": {
"HASHSCRAPER_API_KEY": "your-api-key"
}
}
}
}
`---
Step 3: Restart Your AI Client
- Claude Desktop: Fully quit (Cmd+Q on macOS, Alt+F4 on Windows) and reopen
- Claude Code: Restart the session
- Cline: Restart VS Code
- Cursor: Restart the editor
You should see the MCP server connection indicator.
---
Available Tools
$3
Scrapes a webpage and returns AI-readable content.
Parameters:
| Name | Type | Required | Description |
| -------- | ------ | -------- | ---------------------------------------- |
|
url | string | โ
| URL to scrape |
| format | string | | markdown (default) or text |Example:
`json
{
"url": "https://example.com/article",
"format": "markdown"
}
`Markdown Output:
`markdown
Article Title
> Author: John Doe | Published: 2024-01-15
Introduction
This is the main content of the article, converted to clean markdown...
Key Points
- Point 1: Important detail
- Point 2: Another insight
- Related Link
`Text Output:
`text
Article TitleAuthor: John Doe | Published: 2024-01-15
Introduction
This is the main content of the article, converted to plain text...
Key Points
- Point 1: Important detail
- Point 2: Another insight
`$3
Scrapes multiple webpages in parallel and returns AI-readable content.
Parameters:
| Name | Type | Required | Description |
| -------- | -------- | -------- | ---------------------------------------- |
|
urls | string[] | โ
| URLs to scrape (max 10) |
| format | string | | markdown (default) or text |Example:
`json
{
"urls": ["https://example.com/page1", "https://example.com/page2"],
"format": "text"
}
`Output:
`json
[
{
"url": "https://example.com/page1",
"content": "Page 1 Title\n\nThis is the content of page 1..."
},
{
"url": "https://example.com/page2",
"content": "Page 2 Title\n\nThis is the content of page 2..."
}
]
`$3
Check the status of all ScraperServer instances. Shows server health, circuit breaker state, failure counts, and timing info.
Parameters: None
Example:
`json
{}
`Output:
`markdown
ScraperServer Status
Total: 3 | Available: 2
| Name | OS | Status | Failures | Last Success | Last Failure |
|------|----|--------|----------|--------------|--------------|
| pluto | linux | OK | 0 | 01/30 14:23:05 | - |
| mars | mac | FAIL | 2 | 01/29 10:00:00 | 01/30 13:55:12 |
| venus | linux | OPEN | 3 | 01/28 09:00:00 | 01/30 12:00:00 |
$3
- mars: Connection refused - connect(2)
- venus: Circuit breaker open until 01/30 12:30:00
- venus: Net::ReadTimeout
`Status values:
| Status | Description |
|--------|-------------|
|
OK | Server is healthy |
| FAIL | Server is unhealthy |
| OPEN | Circuit breaker open (isolated for 30 min) |
| N/A | Not yet checked |$3
Check your API usage and remaining credits. Supports both MCP and Legacy API keys.
Parameters: None
Example:
`json
{}
`Output (MCP key):
`markdown
MCP Credits
| Item | Value |
|------|-------|
| Mode | MCP |
| Plan | starter |
| Subscription Credits | 1,500 |
| Purchased Credits | 200 |
| Total Remaining | 1,700 |
| Period End | 2026-03-01 |
`Output (Legacy key):
`markdown
API Usage
| Item | Value |
|------|-------|
| Plan | Pro |
| Total Credits | 10,000 |
| Used Credits | 2,500 |
| Remaining Credits | 7,500 |
| Reset Date | 2026-03-01 |
`$3
Retrieve detailed MCP billing information. Requires MCP API key (
hsmcp_ prefix).Parameters:
| Name | Type | Required | Description |
|------|------|----------|-------------|
|
action | string | Yes | subscription, plans, daily_usage, or spending_limits |
| start_date | string | | Start date for daily_usage (YYYY-MM-DD, default: 30 days ago) |
| end_date | string | | End date for daily_usage (YYYY-MM-DD, default: today) |Example โ Current subscription:
`json
{ "action": "subscription" }
``markdown
MCP Subscription
| Item | Value |
|------|-------|
| Plan | starter (Starter) |
| Status | active |
| Monthly Credits | 2,000 |
| Price | $19.00/mo |
| Rate Limit | 30 RPM |
| Burst Limit | 5 concurrent |
| Period End | 2026-03-01 |
`Example โ Available plans:
`json
{ "action": "plans" }
``markdown
Available MCP Plans
| Plan | Credits/mo | Price | RPM | Burst |
|------|-----------|-------|-----|-------|
| Free (free) | 500 | Free | 10 | 2 |
| Starter (starter) | 2,000 | $19.00/mo | 30 | 5 |
| Pro (pro) | 10,000 | $49.00/mo | 60 | 10 |
| Business (business) | 50,000 | $149.00/mo | 120 | 20 |
`Example โ Daily usage history:
`json
{ "action": "daily_usage", "start_date": "2026-02-01", "end_date": "2026-02-07" }
``markdown
Daily Usage (2026-02-01 ~ 2026-02-07)
| Date | Requests | Credits | Top Tool |
|------|----------|---------|----------|
| 2026-02-07 | 45 | 45 | scrape#scrape (45) |
| 2026-02-06 | 120 | 120 | scrape#scrape (100) |
Total: 165 requests, 165 credits
`Example โ Spending limits:
`json
{ "action": "spending_limits" }
``markdown
Spending Limits
| Item | Value |
|------|-------|
| Daily Limit | 500 credits |
| Today's Usage | 120 credits |
| Usage % | 24.0% |
`---
Usage Examples
$3
`
User: Summarize this article: https://news.example.com/article/12345Claude: [calls scrape_url]
Here's a summary of the article:
Key Points
- Point 1: ...
- Point 2: ...
- Point 3: ...
`$3
`
User: Get the content from https://example.com/dataClaude: [calls scrape_url]
Page Title
> Source: https://example.com/dataThe page content is returned in clean Markdown format...
`$3
`
User: What's the pricing on https://competitor.com/product/abcClaude: [calls scrape_url]
Here's the pricing information:
- Product: ABC Premium
- Regular Price: $99.00
- Sale Price: $79.00 (20% off)
`$3
`
User: Read https://docs.example.com/api/v2 and write integration codeClaude: [calls scrape_url]
I've analyzed the API documentation. Here's the integration code:
// api-client.ts
export class ExampleApiClient {
private baseUrl = 'https://api.example.com/v2';
async getData(): Promise {
// ...
}
}
`---
How It Works
`
โโโโโโโโโโโโโโโโโโโ
โ User โ
โ "Summarize this โ
โ URL for me" โ
โโโโโโโโโโฌโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโ
โ Claude Desktop โ
โ / Cursor โ
โโโโโโโโโโฌโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โ MCP Server โโโโโโบโ Hashscraper API โ
โ (scrape_url) โ โ (format param) โ
โโโโโโโโโโฌโโโโโโโโโ โโโโโโโโโโฌโโโโโโโโโ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโ
โ Markdown/Text Response
โผ
โโโโโโโโโโโโโโโโโโโ
โ AI Response โ
โ (Summary, etc.) โ
โโโโโโโโโโโโโโโโโโโ
`---
Why Hashscraper?
Built by the team behind Hashscraper, with 7+ years of web scraping experience:
- โ
1,900+ production crawlers
- โ
JavaScript rendering support
- โ
Anti-bot handling
- โ
99.9% uptime
---
Troubleshooting
$3
Make sure your
HASHSCRAPER_API_KEY environment variable is set correctly in the configuration file.$3
Verify that your API key is correct and active in your Hashscraper dashboard.
$3
1. Ensure Node.js 20+ is installed
2. Try running
node /absolute/path/to/hashscraper-mcp-server/dist/index.js` manually to check for errorsUpdate Claude Desktop to the latest version: Claude menu โ "Check for Updates..."
---
- Email: help@hashscraper.com
- Issues: GitHub Issues
---
MIT ยฉ Hashscraper