Scrapi

io.github.bamchi由 GitHub 帳號 bamchi 發布v2.0.6更新於 Oct 27, 2026

Web scraping for AI agents. Converts URLs to clean, LLM-ready Markdown with anti-bot bypass.

已驗證Streamable HTTP可網頁執行網頁搜尋與抓取瀏覽器自動化

概覽

AI 產生的概覽

Scrapi 擷取網頁並回傳乾淨、適合大型語言模型使用的 Markdown 或純文字,支援 JavaScript 渲染與反爬處理,還可查詢額度與帳單。

可以做什麼
  • 將單一網址擷取為 Markdown 或純文字,保留標題、清單與連結
  • 平行擷取最多 10 個網址並分別回傳各頁內容
  • 查詢 API 用量:目前方案、訂閱額度、加購額度與剩餘總額
  • 查看擷取伺服器健康狀態、斷路器狀態與失敗次數
  • 查看帳單:訂閱詳情、可選方案、每日用量紀錄與消費上限
適用情境
適合需要讓助理讀取即時網頁的情境,例如摘要文章、查看競品定價或閱讀 API 文件,尤其是會阻擋一般擷取工具或需要 JavaScript 渲染的網站。
執行需求
需要 Scrapi MCP 帳號與 API 金鑰,可透過 SCRAPI_API_KEY 環境變數、命令列參數,或託管 HTTP 端點的 Authorization Bearer 標頭提供。本機 stdio 套件需要 Node.js 20 以上;託管 Streamable HTTP 端點則不需要本機執行環境。需要能連線至 Scrapi 服務的網路。
安裝前請注意
API 金鑰是可計費的憑證,請勿寫入共用設定或日誌。擷取會消耗方案額度,方案有每月上限與付費等級,大量使用可能產生費用,建議留意用量與消費上限。請求的網址與頁面內容會傳送給第三方 Scrapi 服務。這些工具只讀取網頁與帳戶資訊,不會修改資料。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Scrapi,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/io.github.bamchi%2Fscrapi/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "scrapi": {
      "type": "http",
      "url": "https://scrapi.ai/mcp"
    }
  }
}

README

[Scrapi AI]

MCP server that converts URLs to clean Markdown/Text for LLM agents

한국어 · Website · Dashboard

[npm version] [License: MIT]

⚡ Fast & Reliable — Built on 8+ years of web scraping expertise, 1,900+ production crawlers, and battle-tested anti-bot handling.

What is this?

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 ✨


Features

  • 🌐 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
  • 🌍 Dual Transport: Stdio (npx) + Streamable HTTP for flexible deployment

Transport Modes

Scrapi MCP Server supports two transport modes:

ModeBest ForNode.js Required
StdioClaude Desktop, Cursor, Cline, Claude CodeYes (auto via npx)
Streamable HTTPAll clients, Node.js-free environmentsNo

Prerequisites

  • Scrapi MCP account (separate from the main Scrapi account)
  • Claude Desktop, Cline, or Cursor installed
  • Node.js 20+

Installation

Option A: npx (Recommended)

No installation needed. Just configure your MCP client to use npx.

json
{  "mcpServers": {    "scrapi": {      "command": "npx",      "args": ["-y", "@scrapi.ai/mcp-server"],      "env": {        "SCRAPI_API_KEY": "your-api-key"      }    }  }}

Tip: You can also pass the API key via CLI argument instead of env var:

json
"args": ["-y", "@scrapi.ai/mcp-server", "--api-key", "your-api-key"]

See Step 2 for where to put this configuration.

Option B: Install from Source

bash
# Clone the repositorygit clone https://github.com/bamchi/scrapi-mcp-server.gitcd scrapi-mcp-server
# Install dependencies and buildnpm install && npm run build

Step 1: Get Your API Key

  1. Go to https://scrapi.ai
  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

Step 2: Configure MCP Server

Claude Desktop

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.json

Configuration (npx):

json
{  "mcpServers": {    "scrapi": {      "command": "npx",      "args": ["-y", "@scrapi.ai/mcp-server"],      "env": {        "SCRAPI_API_KEY": "your-api-key"      }    }  }}

Configuration (from source):

json
{  "mcpServers": {    "scrapi": {      "command": "node",      "args": ["/absolute/path/to/scrapi-mcp-server/dist/index.js"],      "env": {        "SCRAPI_API_KEY": "your-api-key"      }    }  }}

Note: Replace /absolute/path/to/ with the actual path where you cloned the repository.

Cline

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.json

Configuration (npx):

json
{  "mcpServers": {    "scrapi": {      "command": "npx",      "args": ["-y", "@scrapi.ai/mcp-server"],      "env": {        "SCRAPI_API_KEY": "your-api-key"      }    }  }}

Configuration (from source):

json
{  "mcpServers": {    "scrapi": {      "command": "node",      "args": ["/absolute/path/to/scrapi-mcp-server/dist/index.js"],      "env": {        "SCRAPI_API_KEY": "your-api-key"      }    }  }}

Cursor

Create or edit .cursor/mcp.json in your project root:

Configuration (npx):

json
{  "mcpServers": {    "scrapi": {      "command": "npx",      "args": ["-y", "@scrapi.ai/mcp-server"],      "env": {        "SCRAPI_API_KEY": "your-api-key"      }    }  }}

Configuration (from source):

json
{  "mcpServers": {    "scrapi": {      "command": "node",      "args": ["/absolute/path/to/scrapi-mcp-server/dist/index.js"],      "env": {        "SCRAPI_API_KEY": "your-api-key"      }    }  }}

Claude Code

Option 1: CLI command (Recommended)

bash
claude mcp add scrapi-ai -s user -e SCRAPI_API_KEY=your-api-key -- npx -y @scrapi.ai/mcp-server

Or with --api-key:

bash
claude mcp add scrapi-ai -s user -- npx -y @scrapi.ai/mcp-server --api-key your-api-key

Option 2: Edit config file

Edit ~/.claude.json or project .mcp.json:

json
{  "mcpServers": {    "scrapi": {      "command": "npx",      "args": ["-y", "@scrapi.ai/mcp-server", "--api-key", "your-api-key"]    }  }}

Streamable HTTP

Connect via Streamable HTTP — no Node.js installation needed on the client side.

Endpoint: https://scrapi.ai/mcp

Cursor (.cursor/mcp.json):

json
{  "mcpServers": {    "scrapi": {      "url": "https://scrapi.ai/mcp",      "headers": {        "Authorization": "Bearer your-api-key"      }    }  }}

Claude Code (CLI):

bash
claude mcp add --transport http scrapi https://scrapi.ai/mcp \  --header "Authorization: Bearer your-api-key"

Cline (cline_mcp_settings.json):

json
{  "mcpServers": {    "scrapi": {      "type": "streamableHttp",      "url": "https://scrapi.ai/mcp",      "headers": {        "Authorization": "Bearer your-api-key"      }    }  }}

Claude Desktop (claude_desktop_config.json):

json
{  "mcpServers": {    "scrapi": {      "command": "npx",      "args": [        "mcp-remote",        "https://scrapi.ai/mcp",        "--header",        "Authorization: Bearer your-api-key"      ]    }  }}

Note: Claude Desktop requires the mcp-remote proxy for HTTP connections.

Self-host the HTTP server (advanced)

Run your own instance instead of using the hosted endpoint:

bash
SCRAPI_API_KEY=your-api-key npx -y -p @scrapi.ai/mcp-server scrapi-http# or from source:SCRAPI_API_KEY=your-api-key node dist/http.js

The server starts at http://localhost:3000 with the MCP endpoint at /mcp. Configure with PORT and HOST environment variables. Replace the URL in the client configurations above with your self-hosted URL (e.g. http://localhost:3000/mcp).

Health check: GET http://localhost:3000/health


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

scrape_url

Scrapes a webpage and returns AI-readable content.

Parameters:

NameTypeRequiredDescription
urlstring✅URL to scrape
formatstringmarkdown (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](https://example.com/related)

Text Output:

text
Article Title
Author: 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

scrape_urls

Scrapes multiple webpages in parallel and returns AI-readable content.

Parameters:

NameTypeRequiredDescription
urlsstring[]✅URLs to scrape (max 10)
formatstringmarkdown (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..."  }]

scraper_server_status

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 |
### Issues- **mars**: Connection refused - connect(2)- **venus**: Circuit breaker open until 01/30 12:30:00- **venus**: Net::ReadTimeout

Status values:

StatusDescription
OKServer is healthy
FAILServer is unhealthy
OPENCircuit breaker open (isolated for 30 min)
N/ANot yet checked

get_usage

Check your API usage and remaining credits.

Parameters: None

Example:

json
{}

Output:

markdown
## MCP Credits
| Item | Value ||------|-------|| Plan | starter || Subscription Credits | 1,500 || Purchased Credits | 200 || Total Remaining | 1,700 || Period End | 2026-03-01 |

get_billing

Retrieve detailed billing information including subscription, plans, daily usage, and spending limits.

Parameters:

NameTypeRequiredDescription
actionstringYessubscription, plans, daily_usage, or spending_limits
start_datestringStart date for daily_usage (YYYY-MM-DD, default: 30 days ago)
end_datestringEnd 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

Example 1: Summarize a News Article

User: Summarize this article: https://news.example.com/article/12345
Claude: [calls scrape_url]
Here's a summary of the article:
## Key Points- Point 1: ...- Point 2: ...- Point 3: ...

Example 2: Fetch Page Content

User: Get the content from https://example.com/data
Claude: [calls scrape_url]
# Page Title> Source: https://example.com/data
The page content is returned in clean Markdown format...

Example 3: Research Competitor Pricing

User: What's the pricing on https://competitor.com/product/abc
Claude: [calls scrape_url]
Here's the pricing information:- **Product**: ABC Premium- **Regular Price**: $99.00- **Sale Price**: $79.00 (20% off)

Example 4: Read API Documentation

User: Read https://docs.example.com/api/v2 and write integration code
Claude: [calls scrape_url]
I've analyzed the API documentation. Here's the integration code:
// api-client.tsexport class ExampleApiClient {  private baseUrl = 'https://api.example.com/v2';    async getData(): Promise<Response> {    // ...  }}

How It Works

┌─────────────────┐│     User        ││ "Summarize this ││   URL for me"   │└────────┬────────┘         │         ▼┌─────────────────┐│  Claude Desktop ││    / Cursor     │└────────┬────────┘         │         ▼┌─────────────────┐     ┌─────────────────┐│   MCP Server    │────►│   Scrapi API    ││  (scrape_url)   │     │ (format param)  │└────────┬────────┘     └────────┬────────┘         │                       │         │◄──────────────────────┘         │   Markdown/Text Response         ▼┌─────────────────┐│   AI Response   ││ (Summary, etc.) │└─────────────────┘

Why Scrapi?

Built by the team behind Scrapi, with 8+ years of web scraping experience:

  • ✅ 1,900+ production crawlers
  • ✅ JavaScript rendering support
  • ✅ Anti-bot handling
  • ✅ 99.9% uptime

Troubleshooting

"API key is required"

Make sure your API key is provided via one of these methods:

  • Environment variable: Set SCRAPI_API_KEY in your configuration
  • CLI argument: Pass --api-key your-key in the args

"Invalid API key"

Verify that your API key is correct and active in your Scrapi dashboard.

npx using an old cached version

If you upgraded but still see old behavior, clear the npx cache:

bash
npx clear-npx-cache

MCP Server not connecting

  1. Ensure Node.js 20+ is installed
  2. Try running node /absolute/path/to/scrapi-mcp-server/dist/index.js manually to check for errors
  3. Fully quit Claude Desktop (Cmd+Q on macOS, Alt+F4 on Windows) and restart
  4. Check Settings > Developer to verify the server is listed

Developer tab not visible

Update Claude Desktop to the latest version: Claude menu → "Check for Updates..."


Support


License

MIT © Scrapi

來源:README.md,提交 9f2f366

工具

5

scrape_url

Scrapes a webpage and returns the content in AI-readable Markdown format. Can access blocked sites through browser rendering.

輸入參數url必填format

scrape_urls

Scrapes multiple webpages in parallel and returns the content in AI-readable Markdown format. Can access blocked sites through browser rendering.

輸入參數urls必填format

get_usage

Check API usage and remaining credits. Returns current plan, subscription credits, purchased credits, and total remaining credits.

無需輸入參數。

scraper_server_status

Check the status of all ScraperServer instances. Shows server health, circuit breaker state, failure counts, and last success/failure times.

無需輸入參數。

get_billing

Retrieve MCP billing information: subscription details, available plans, daily usage history, or spending limits.

輸入參數action必填end_datestart_date

版本歷史

1
  1. v2.0.6最新Sep 16, 2026

評分

已滿足適用檢查項的 100%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分