WebSearch-MCP について
WebSearch-MCP は、stdio トランスポートで Web 検索機能を提供する MCP サーバーで、WebSearch Crawler API を利用して検索結果を取得します。Claude などの AI アシスタントからリアルタイムに Web 検索を行いたい、かつクローラーをセルフホストしたい利用者向けです。
主な機能
- 01stdio 経由で公開される web_search ツール
- 02言語・地域・ドメインによるフィルター引数
- 03返却件数の設定
- 04Docker Compose によるクローラーサービスの起動
活用シーン
- 01Claude Desktop や Cursor から最新の Web 情報を取得する
- 02ローカルのセルフホスト環境で Web 検索を実行する
MCP 対応
本プロジェクトは MCP サーバーであり、stdio 経由で web_search ツールを MCP クライアントに公開し、クエリを WebSearch Crawler API に転送して処理します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
1掲載時のツール一覧 · 3 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| query | string | はい | 検索するクエリ |
| numResults | number | いいえ | 返す結果数(デフォルト:5) |
| language | string | いいえ | 検索結果の言語コード(例:'en') |
| region | string | いいえ | 検索結果の地域コード(例:'us') |
| excludeDomains | array | いいえ | 結果から除外するドメイン |
| includeDomains | array | いいえ | 結果にはこれらのドメインのみを含めます |
| excludeTerms | array | いいえ | 結果から除外する語句 |
| resultType | enum | いいえ | 返す結果の種類all | news | blogs |
詳細
WebSearch-MCP
stdio トランスポート経由でウェブ検索機能を提供する、Model Context Protocol(MCP)サーバーの実装です。このサーバーは WebSearch Crawler API と連携し、検索結果を取得します。
目次
概要
WebSearch-MCP は、MCP に対応した AI アシスタントにウェブ検索機能を提供する Model Context Protocol サーバーです。Claude のような AI モデルがリアルタイムでウェブを検索し、あらゆるトピックについて最新の情報を取得できます。
このサーバーは、実際のウェブ検索を処理する Crawler API サービスと連携し、標準化された Model Context Protocol を使用して AI アシスタントと通信します。
インストール
Smithery 経由でのインストール
Smithery 経由で WebSearch を Claude Desktop に自動インストールするには:
npx -y @smithery/cli install @mnhlt/WebSearch-MCP --client claude
手動インストール
npm install -g websearch-mcp
または、インストールせずに使用します:
npx websearch-mcp
設定
WebSearch MCP サーバーは、環境変数を使用して設定できます:
API_URL:WebSearch Crawler API の URL(デフォルト:http://localhost:3001)MAX_SEARCH_RESULT:リクエストで指定されていない場合に返す検索結果の最大数(デフォルト:5)
例:
# Configure API URL
API_URL=https://crawler.example.com npx websearch-mcp
# Configure maximum search results
MAX_SEARCH_RESULT=10 npx websearch-mcp
# Configure both
API_URL=https://crawler.example.com MAX_SEARCH_RESULT=10 npx websearch-mcp
セットアップと連携
WebSearch-MCP のセットアップでは、実際のウェブ検索を実行するクローラーサービスの設定と、MCP サーバーと AI クライアントアプリケーションとの連携という、主に 2 つの作業を行います。
クローラーサービスのセットアップ
WebSearch MCP サーバーで実際のウェブ検索を行うには、クローラーサービスが必要です。Docker Compose を使用すると、クローラーサービスを簡単にセットアップできます。
前提条件
クローラーサービスの起動
- 次の内容で
docker-compose.ymlという名前のファイルを作成します:
version: '3.8'
services:
crawler:
image: laituanmanh/websearch-crawler:latest
container_name: websearch-api
restart: unless-stopped
ports:
- "3001:3001"
environment:
- NODE_ENV=production
- PORT=3001
- LOG_LEVEL=info
- FLARESOLVERR_URL=http://flaresolverr:8191/v1
depends_on:
- flaresolverr
volumes:
- crawler_storage:/app/storage
flaresolverr:
image: 21hsmw/flaresolverr:nodriver
container_name: flaresolverr
restart: unless-stopped
environment:
- LOG_LEVEL=info
- TZ=UTC
volumes:
crawler_storage:
Mac Apple Silicon 向けの回避策
version: '3.8'
services:
crawler:
image: laituanmanh/websearch-crawler:latest
container_name: websearch-api
platform: "linux/amd64"
restart: unless-stopped
ports:
- "3001:3001"
environment:
- NODE_ENV=production
- PORT=3001
- LOG_LEVEL=info
- FLARESOLVERR_URL=http://flaresolverr:8191/v1
depends_on:
- flaresolverr
volumes:
- crawler_storage:/app/storage
flaresolverr:
image: 21hsmw/flaresolverr:nodriver
platform: "linux/arm64"
container_name: flaresolverr
restart: unless-stopped
environment:
- LOG_LEVEL=info
- TZ=UTC
volumes:
crawler_storage:
- サービスを起動します:
docker-compose up -d
- サービスが実行中であることを確認します:
docker-compose ps
- クローラー API のヘルスエンドポイントをテストします:
curl http://localhost:3001/health
期待されるレスポンス:
{
"status": "ok",
"details": {
"status": "ok",
"flaresolverr": true,
"google": true,
"message": null
}
}
クローラー API は http://localhost:3001 で利用できます。
クローラー API のテスト
curl を使用して、クローラー API を直接テストできます:
curl -X POST http://localhost:3001/crawl \
-H "Content-Type: application/json" \
-d '{
"query": "typescript best practices",
"numResults": 2,
"language": "en",
"filters": {
"excludeDomains": ["youtube.com"],
"resultType": "all"
}
}'
カスタム設定
docker-compose.yml ファイルの環境変数を変更して、クローラーサービスをカスタマイズできます:
PORT:クローラー API がリッスンするポート(デフォルト:3001)LOG_LEVEL:ログレベル(選択肢:debug、info、warn、error)FLARESOLVERR_URL:FlareSolverr サービスの URL(Cloudflare の保護を回避するために使用)
MCP クライアントとの連携
クイックリファレンス:MCP の設定
各種クライアントでの MCP 設定について、クイックリファレンスを以下に示します。
{
"mcpServers": {
"websearch": {
"command": "npx",
"args": [
"websearch-mcp"
],
"environment": {
"API_URL": "http://localhost:3001",
"MAX_SEARCH_RESULT": "5" // reduce to save your tokens, increase for wider information gain
}
}
}
}
Issue による Windows 向けの回避策
{
"mcpServers": {
"websearch": {
"command": "cmd",
"args": [
"/c",
"npx",
"websearch-mcp"
],
"environment": {
"API_URL": "http://localhost:3001",
"MAX_SEARCH_RESULT": "1"
}
}
}
}
使用方法
このパッケージは stdio トランスポートを使用する MCP サーバーを実装しており、以下のパラメーターを持つ web_search ツールを提供します。
パラメーター
query(必須):検索するクエリnumResults(任意):返す結果の数(デフォルト:5)language(任意):検索結果の言語コード(例:'en')region(任意):検索結果の地域コード(例:'us')excludeDomains(任意):結果から除外するドメインincludeDomains(任意):結果に含めるドメインのみを指定しますexcludeTerms(任意):結果から除外する語句resultType(任意):返す結果の種類('all'、'news'、'blogs')
検索レスポンスの例
検索レスポンスの例を以下に示します。
{
"query": "machine learning trends",
"results": [
{
"title": "Top Machine Learning Trends in 2025",
"snippet": "The key machine learning trends for 2025 include multimodal AI, generative models, and quantum machine learning applications in enterprise...",
"url": "https://example.com/machine-learning-trends-2025",
"siteName": "AI Research Today",
"byline": "Dr. Jane Smith"
},
{
"title": "The Evolution of Machine Learning: 2020-2025",
"snippet": "Over the past five years, machine learning has evolved from primarily supervised learning approaches to more sophisticated self-supervised and reinforcement learning paradigms...",
"url": "https://example.com/ml-evolution",
"siteName": "Tech Insights",
"byline": "John Doe"
}
]
}
ローカルでのテスト
WebSearch MCP サーバーをローカルでテストするには、付属のテストクライアントを使用できます。
npm run test-client
これにより、MCP サーバーと、検索クエリを入力して結果を確認できる簡単なコマンドラインインターフェイスが起動します。
テストクライアントの API_URL を設定することもできます。
API_URL=https://crawler.example.com npm run test-client
ライブラリとしての使用
このパッケージはプログラムから使用できます。
import { createMCPClient } from '@modelcontextprotocol/sdk';
// Create an MCP client
const client = createMCPClient({
transport: { type: 'subprocess', command: 'npx websearch-mcp' }
});
// Execute a web search
const response = await client.request({
method: 'call_tool',
params: {
name: 'web_search',
arguments: {
query: 'your search query',
numResults: 5,
language: 'en'
}
}
});
console.log(response.result);
トラブルシューティング
クローラーサービスの問題
- API に接続できない:クローラーサービスが稼働しており、設定された API_URL でアクセスできることを確認してください。
- 検索結果を取得できない:クローラーサービスのログを確認し、エラーがないか調べてください。
docker-compose logs crawler - FlareSolverr の問題:Cloudflare の保護を使用しているウェブサイトがあります。これに関連するエラーが表示された場合は、FlareSolverr が動作しているか確認してください。
docker-compose logs flaresolverr
MCP サーバーの問題
- インポートエラー:最新バージョンの MCP SDK がインストールされていることを確認してください。
npm install -g @modelcontextprotocol/sdk@latest - 接続の問題:クライアントで stdio トランスポートが正しく設定されていることを確認してください。
開発
このプロジェクトで開発を行うには:
- リポジトリをクローンします
- 依存関係をインストールします:
npm install - プロジェクトをビルドします:
npm run build - 開発モードで実行します:
npm run dev
サーバーは、付属の swagger.json ファイルで定義されている WebSearch Crawler API を必要とします。API が設定された API_URL で稼働していることを確認してください。
プロジェクト構成
.gitignore:Git で無視するファイルを指定します(node_modules、dist、logs など).npmignore:npm への公開時に含めないファイルを指定しますpackage.json:プロジェクトのメタデータと依存関係src/:TypeScript のソースファイルdist/:コンパイル済みの JavaScript ファイル(ビルド時に生成)
npm への公開
このパッケージを npm に公開するには:
- npm アカウントを作成し、ログインしていることを確認します(
npm login) - package.json のバージョンを更新します(
npm version patch|minor|major) npm publishを実行します
.npmignore ファイルにより、公開するパッケージには必要なファイルのみが含まれます。
dist/内のコンパイル済みコード- README.md と LICENSE ファイル
- package.json
コントリビューション
コントリビューションを歓迎します!お気軽にプルリクエストを送信してください。
ライセンス
ISC
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。