WebScraping.AI MCPサーバー
Web データ抽出機能のためにWebScraping.AIと統合するモデル コンテキスト プロトコル (MCP) サーバー実装。
特徴
- ウェブページの内容に関する質問への回答
- ウェブページからの構造化データ抽出
- JavaScript レンダリングによる HTML コンテンツの取得
- ウェブページからのプレーンテキスト抽出
- CSSセレクタベースのコンテンツ抽出
- 国を選択できる複数のプロキシタイプ(データセンター、住宅)
- ヘッドレス Chrome/Chromium を使用した JavaScript レンダリング
- レート制限による同時リクエスト管理
- 対象ページでのカスタム JavaScript 実行
- デバイスエミュレーション(デスクトップ、モバイル、タブレット)
- アカウント使用状況の監視
インストール
npxで実行
env WEBSCRAPING_AI_API_KEY=your_api_key npx -y webscraping-ai-mcp
手動インストール
# Clone the repository
git clone https://github.com/webscraping-ai/webscraping-ai-mcp-server.git
cd webscraping-ai-mcp-server
# Install dependencies
npm install
# Run
npm start
カーソルでの設定
注: カーソルバージョン 0.45.6 以上が必要です
WebScraping.AI MCP サーバーは、Cursor で 2 つの方法で構成できます。
- プロジェクト固有の構成(チーム プロジェクトに推奨): プロジェクト ディレクトリに
.cursor/mcp.json
ファイルを作成します。{
"servers": {
"webscraping-ai": {
"type": "command",
"command": "npx -y webscraping-ai-mcp",
"env": {
"WEBSCRAPING_AI_API_KEY": "your-api-key",
"WEBSCRAPING_AI_CONCURRENCY_LIMIT": "5"
}
}
}
}
- グローバル構成(すべてのプロジェクトでの個人使用): 上記と同じ構成形式で、ホーム ディレクトリに
~/.cursor/mcp.json
ファイルを作成します。
Windows を使用していて問題が発生している場合は、コマンドとしてcmd /c "set WEBSCRAPING_AI_API_KEY=your-api-key && npx -y webscraping-ai-mcp"
を使用してみてください。
この構成により、Web スクレイピング タスクに関連する場合に、WebScraping.AI ツールが Cursor の AI エージェントで自動的に使用できるようになります。
Claude Desktopで実行中
これをclaude_desktop_config.json
に追加します:
{
"mcpServers": {
"mcp-server-webscraping-ai": {
"command": "npx",
"args": ["-y", "webscraping-ai-mcp"],
"env": {
"WEBSCRAPING_AI_API_KEY": "YOUR_API_KEY_HERE",
"WEBSCRAPING_AI_CONCURRENCY_LIMIT": "5"
}
}
}
}
構成
環境変数
必須
WEBSCRAPING_AI_API_KEY
: WebScraping.AI APIキー
オプション構成
WEBSCRAPING_AI_CONCURRENCY_LIMIT
: 同時リクエストの最大数(デフォルト: 5
)WEBSCRAPING_AI_DEFAULT_PROXY_TYPE
: 使用するプロキシの種類(デフォルト: residential
)WEBSCRAPING_AI_DEFAULT_JS_RENDERING
: JavaScript レンダリングを有効/無効にする (デフォルト: true
)WEBSCRAPING_AI_DEFAULT_TIMEOUT
: ウェブページの最大取得時間(ミリ秒)(デフォルト: 15000
、最大: 30000
)WEBSCRAPING_AI_DEFAULT_JS_TIMEOUT
: JavaScript レンダリングの最大時間(ミリ秒)(デフォルト: 2000
)
設定例
標準的な使用法:
# Required
export WEBSCRAPING_AI_API_KEY=your-api-key
# Optional - customize behavior (default values)
export WEBSCRAPING_AI_CONCURRENCY_LIMIT=5
export WEBSCRAPING_AI_DEFAULT_PROXY_TYPE=residential # datacenter or residential
export WEBSCRAPING_AI_DEFAULT_JS_RENDERING=true
export WEBSCRAPING_AI_DEFAULT_TIMEOUT=15000
export WEBSCRAPING_AI_DEFAULT_JS_TIMEOUT=2000
利用可能なツール
1. 質問ツール ( webscraping_ai_question
)
Web ページのコンテンツについて質問します。
{
"name": "webscraping_ai_question",
"arguments": {
"url": "https://example.com",
"question": "What is the main topic of this page?",
"timeout": 30000,
"js": true,
"js_timeout": 2000,
"wait_for": ".content-loaded",
"proxy": "datacenter",
"country": "us"
}
}
応答例:
{
"content": [
{
"type": "text",
"text": "The main topic of this page is examples and documentation for HTML and web standards."
}
],
"isError": false
}
2. フィールドツール( webscraping_ai_fields
)
指示に基づいて Web ページから構造化データを抽出します。
{
"name": "webscraping_ai_fields",
"arguments": {
"url": "https://example.com/product",
"fields": {
"title": "Extract the product title",
"price": "Extract the product price",
"description": "Extract the product description"
},
"js": true,
"timeout": 30000
}
}
応答例:
{
"content": [
{
"type": "text",
"text": {
"title": "Example Product",
"price": "$99.99",
"description": "This is an example product description."
}
}
],
"isError": false
}
3. HTMLツール( webscraping_ai_html
)
JavaScript レンダリングを使用して Web ページの完全な HTML を取得します。
{
"name": "webscraping_ai_html",
"arguments": {
"url": "https://example.com",
"js": true,
"timeout": 30000,
"wait_for": "#content-loaded"
}
}
応答例:
{
"content": [
{
"type": "text",
"text": "<html>...[full HTML content]...</html>"
}
],
"isError": false
}
4. テキストツール ( webscraping_ai_text
)
Web ページから表示されているテキスト コンテンツを抽出します。
{
"name": "webscraping_ai_text",
"arguments": {
"url": "https://example.com",
"js": true,
"timeout": 30000
}
}
応答例:
{
"content": [
{
"type": "text",
"text": "Example Domain\nThis domain is for use in illustrative examples in documents..."
}
],
"isError": false
}
5. 選択されたツール ( webscraping_ai_selected
)
CSS セレクターを使用して特定の要素からコンテンツを抽出します。
{
"name": "webscraping_ai_selected",
"arguments": {
"url": "https://example.com",
"selector": "div.main-content",
"js": true,
"timeout": 30000
}
}
応答例:
{
"content": [
{
"type": "text",
"text": "<div class=\"main-content\">This is the main content of the page.</div>"
}
],
"isError": false
}
6. 複数選択ツール ( webscraping_ai_selected_multiple
)
CSS セレクターを使用して複数の要素からコンテンツを抽出します。
{
"name": "webscraping_ai_selected_multiple",
"arguments": {
"url": "https://example.com",
"selectors": ["div.header", "div.product-list", "div.footer"],
"js": true,
"timeout": 30000
}
}
応答例:
{
"content": [
{
"type": "text",
"text": [
"<div class=\"header\">Header content</div>",
"<div class=\"product-list\">Product list content</div>",
"<div class=\"footer\">Footer content</div>"
]
}
],
"isError": false
}
7. アカウントツール( webscraping_ai_account
)
WebScraping.AI アカウントに関する情報を取得します。
{
"name": "webscraping_ai_account",
"arguments": {}
}
応答例:
{
"content": [
{
"type": "text",
"text": {
"requests": 5000,
"remaining": 4500,
"limit": 10000,
"resets_at": "2023-12-31T23:59:59Z"
}
}
],
"isError": false
}
すべてのツールに共通するオプション
次のオプションは、すべてのスクレイピング ツールで使用できます。
timeout
: ウェブページの最大取得時間(ミリ秒)(デフォルトは15000、最大値は30000)js
: ヘッドレスブラウザを使用してページ上の JavaScript を実行します(デフォルトでは true)js_timeout
: JavaScript レンダリングの最大時間(ミリ秒)(デフォルトは 2000)wait_for
: ページコンテンツを返す前に待機する CSS セレクタproxy
: プロキシの種類、データセンターまたは住宅(デフォルトは住宅)country
: 使用するプロキシの国(デフォルトは米国)。サポートされている国: us、gb、de、it、fr、ca、es、ru、jp、kr、incustom_proxy
: 「 http://user:password@host:port 」形式の独自のプロキシ URLdevice
: デバイスエミュレーションの種類。サポートされる値: デスクトップ、モバイル、タブレットerror_on_404
: 対象ページの 404 HTTP ステータスでエラーを返します (デフォルトでは false)error_on_redirect
: 対象ページでのリダイレクト時にエラーを返す(デフォルトは false)js_script
: 対象ページで実行するカスタム JavaScript コード
エラー処理
サーバーは堅牢なエラー処理を提供します。
- 一時的なエラーの自動再試行
- バックオフによるレート制限の処理
- 詳細なエラーメッセージ
- ネットワークの回復力
エラー応答の例:
{
"content": [
{
"type": "text",
"text": "API Error: 429 Too Many Requests"
}
],
"isError": true
}
LLMとの統合
このサーバーはモデルコンテキストプロトコル(MCP)を実装しており、MCP対応のLLMプラットフォームと互換性があります。これらのツールをWebスクレイピングタスクに使用するようにLLMを設定できます。
例: MCP を使用した Claude の設定
const { Claude } = require('@anthropic-ai/sdk');
const { Client } = require('@modelcontextprotocol/sdk/client/index.js');
const { StdioClientTransport } = require('@modelcontextprotocol/sdk/client/stdio.js');
const claude = new Claude({
apiKey: process.env.ANTHROPIC_API_KEY
});
const transport = new StdioClientTransport({
command: 'npx',
args: ['-y', 'webscraping-ai-mcp'],
env: {
WEBSCRAPING_AI_API_KEY: 'your-api-key'
}
});
const client = new Client({
name: 'claude-client',
version: '1.0.0'
});
await client.connect(transport);
// Now you can use Claude with WebScraping.AI tools
const tools = await client.listTools();
const response = await claude.complete({
prompt: 'What is the main topic of example.com?',
tools: tools
});
発達
# Clone the repository
git clone https://github.com/webscraping-ai/webscraping-ai-mcp-server.git
cd webscraping-ai-mcp-server
# Install dependencies
npm install
# Run tests
npm test
# Add your .env file
cp .env.example .env
# Start the inspector
npx @modelcontextprotocol/inspector node src/index.js
貢献
- リポジトリをフォークする
- 機能ブランチを作成する
- テストを実行:
npm test
- プルリクエストを送信する
ライセンス
MITライセンス - 詳細はLICENSEファイルを参照