OpenSERP について
@openserp/mcpは、ウェブや画像の検索、ページ内容の抽出を行うAIエージェント向けMCPサーバーです。6つの検索エンジンを利用し、各結果のエンジン名と順位を保持します。セルフホストのOpenSERPサーバーまたはOpenSERP Cloudで動作します。
主な機能
- 016つの検索エンジンで検索
- 02検索元エンジンと順位を保持
- 03単一または複数エンジンで画像検索
- 04ページをMarkdownとして抽出
- 05最大20 URLの一括抽出
- 06Cloudの利用量とクレジットを確認
活用シーン
- 01複数エンジンの検索結果を比較
- 02検索エンジンで画像を検索
- 03回答のため複数ページを読む
- 04Cloudの残りクレジットを確認
MCP 対応
検索、画像検索、ページ抽出、エンジン状態、利用量のツールをMCPクライアントに公開します。セルフホストのOpenSERPサーバーまたはOpenSERP Cloudを利用できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y @openserp/mcpOPENSERP_API_KEYシークレットOpenSERP Cloud API key. Leave unset to use a self-hosted OpenSERP server (http://localhost:7000 by default).OPENSERP_BASE_URLOpenSERP API base URL, for a self-hosted server on another host or port.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
10掲載時のツール一覧 · 今日に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| date | string | いいえ | 公開日の範囲 YYYYMMDD..YYYYMMDD。Cloud ウェブ検索では Google と Ecosia をサポートします。未対応のフィルターは 400 を返し、課金されません。 |
| file | string | いいえ | ファイル拡張子のフィルター。例:PDF。 |
| lang | string | いいえ | 言語コード。例:EN、de。 |
| site | string | いいえ | ドメインフィルター。例:example.com。 |
| text | string | いいえ | 検索クエリのテキスト。text、site、file のいずれかを少なくとも 1 つ指定してください。 |
| limit | integer | いいえ | 結果の最大件数。1~100。start でページングする場合は 10 のままにしてください。 |
| start | integer | いいえ | 結果のオフセット。Cloud では、Google/Bing/Yandex は 10 の倍数を使用し、Baidu は序盤のページに対応し、Ecosia は任意のオフセットに対応し、DuckDuckGo は対応しません。Balanced mega では 0 が必要です。未対応のオフセットは 400 を返します。 |
| engine | enum | はい | クエリ対象のエンジン:google、bing、yandex、baidu、duckduckgo(または duck)、ecosia。google | bing | yandex | baidu | duck | duckduckgo | ecosia |
| filter | boolean | いいえ | エンジンに類似した重複結果をまとめさせます(デフォルトは true。主に Google に影響します)。 |
| format | enum | いいえ | 構造化された結果には json(デフォルト)を、簡潔なプレーンテキストには markdown、text、または ndjson を指定します。json | markdown | text | ndjson |
| region | string | いいえ | 市場または場所のヒント。例:US、DE、en-GB、Berlin、Yandex の lr ID。 |
| extract | any | いいえ | 上位のウェブ検索結果に、クリーニング済みのページ内容を追加します。ブール値または整数の深度を指定します。false/0 は無効、true/1 は最上位の結果、N は上位 N 件(1~5)です。 |
| features | boolean | いいえ | エンジンに表示される場合、serp_features(AI の概要、回答ボックス、「People Also Ask」、関連検索)を追加します。 |
| minRunes | integer | いいえ | 自動モードがブラウザー描画に切り替わるまでの最小テキスト長(runes 単位)。0 の場合は組み込みの下限を使用します。 |
| extractMode | enum | いいえ | auto(デフォルト):高速な HTTP 取得を行い、ページが空で返された場合はブラウザーで描画します。fast:HTTP のみ。rendered:JavaScript を多用するページ向けに、常にブラウザーを使用します。auto | fast | rendered |
詳細
@openserp/mcp
6つの検索エンジン(Google、Bing、Yandex、Baidu、DuckDuckGo、Ecosia)でのリアルタイム検索、画像検索、AI エージェント向けの単一ページ/一括ページ抽出に対応します。結果には元の検索エンジンと順位が保持されます。セルフホスト可能な OpenSERP サーバー、またはOpenSERP Cloudで動作します。
OPENSERP_API_KEYが設定されていない場合、サーバーはhttp://localhost:7000でOSSモードを使用し、次の内容を書き込みます。
[openserp-mcp] No OPENSERP_API_KEY set - using OSS mode at http://localhost:7000.
[openserp-mcp] Get an API key: https://openserp.org/dashboard/keys
[openserp-mcp] Docs: https://openserp.org/docs | Issues: https://github.com/openserpapi/mcp/issues
OpenSERP Cloudを使用するには、OPENSERP_API_KEYを設定してください。APIキーはhttps://openserp.org/dashboard/keysで取得できます。別の互換性のあるOpenSERP APIベースURLを指定するには、OPENSERP_BASE_URLを設定してください。
インストール
npm install -g @openserp/mcp
インストールせずに実行することもできます。
npx -y @openserp/mcp --stdio
ツール
| ツール | 使用する場面 |
|---|---|
search | 検索エンジンが重要な場合(ロシア語ならYandex、中国語ならBaidu)、またはstartでページ指定する場合 |
any_search | 優先する検索エンジンを指定し、指定した順序でフォールバックさせたい場合 |
fast_search | どの検索エンジンでもよい場合。最も健全で高速なものを選択します |
mega_search | 検索エンジンを比較したい、または広範囲に検索したい場合。結果には検索エンジンと順位が保持されます |
image_search | 1つの検索エンジンから画像を検索する場合 |
mega_image | 複数の検索エンジンの画像を統合する場合 |
extract | 1つのページをMarkdownとして読み取る場合 |
batch_extract | 複数のページを1回の呼び出しで読み取る場合(最大20件)。失敗したURLがあってもバッチ全体は失敗しません |
list_engines | 検索に繰り返し失敗し、利用可能な検索エンジンを確認したい場合 |
get_usage | Cloudのクレジット残高や直近の呼び出し料金を確認する場合 |
extractとbatch_extractは、エージェントのコンテキストに収まるよう長いページを切り詰めます。ページごとに20,000文字、バッチ全体で40,000文字(URLごとに最低2,000文字)です。切り詰められた内容の末尾には[truncated: ...]行が付き、truncated/metadata.truncatedで示されます。さらに読み込むにはmaxCharsを指定してください。
使用例
MCPクライアントに次のように依頼できます。
- Googleで最新のドキュメントを検索し、上位5件のURLを返す。
- SEOキーワードについてGoogleとBingの検索結果を比較する。
- LLMに渡す前に、URLから整形済みのMarkdownを抽出する。
batch_extractを使い、複数のソースを一度に参照して回答を裏付ける。1回の往復で最大20件のURLを処理でき、リンク切れはバッチ全体を失敗させず、エラー項目として返されます。region: "DE"を指定して、ジオフェンスされたページを現地の訪問者として読み取る。get_usageで残りのCloudクレジットを確認する。
Cloud検索パラメーター
Cloudへのリクエストでは、OPENSERP_API_KEYを使ってAuthorization: Bearerを指定します。ページ送りにはstartを使用し、limit: 10を維持してください。has_moreがtrueの場合、前回のレスポンスのpagination.next_startを渡します。Google、Bing、Yandexでは10の倍数を指定します。Baiduは初期ページ、Ecosiaは任意のオフセットに対応し、DuckDuckGoは最初のページのみ対応します。mode: "balanced"を指定したmega_searchではstart > 0が拒否されます。後続ページにはsearch、any_search、またはfast_searchを使用してください。
Cloudのウェブ検索では、GoogleとEcosiaでdate: "20250101..20251231"をサポートしています。サポートされていないオフセットや日付フィルターを指定すると、課金されずに400 invalid_requestが返されます。再試行する前にリクエストを修正してください。
list_enginesはCloudの機能に加えて、運用状況を示すstatusを返します。デフォルトを使用するにはenginesを省略してください。Anyは指定した順序で検索エンジンを起動し、低速な試行を並行して実行します。Fastは直近の健全性とレイテンシーを優先します。勝者はmeta.engine_usedで確認できます。engines_triedとengines_skippedは含まれない場合があります。
ツールのエラーには、公開HTTPステータス、エラーコード、リクエストID、および存在する場合は再試行までの遅延が含まれます。429と503ではretry_afterに従ってください。503 engine_unavailableには60秒の遅延が設定されています。サーバーは自動的に再試行しません。
Claude Desktop
ローカルOSSモード:
{
"mcpServers": {
"openserp": {
"command": "npx",
"args": ["-y", "@openserp/mcp"]
}
}
}
Cloudモード:
{
"mcpServers": {
"openserp": {
"command": "npx",
"args": ["-y", "@openserp/mcp"],
"env": {
"OPENSERP_API_KEY": "osk_live_..."
}
}
}
}
Cursor
stdioを使用する場合は、MCPサーバーのエントリーを追加します。
{
"mcpServers": {
"openserp": {
"command": "npx",
"args": ["-y", "@openserp/mcp"],
"env": {
"OPENSERP_API_KEY": "osk_live_..."
}
}
}
}
リモート形式のHTTPを使用する場合は、次を実行します。
npx -y @openserp/mcp --http --host 127.0.0.1 --port 3333
次に、ストリーミング可能なHTTP MCPクライアントを次のエンドポイントに接続します。
http://127.0.0.1:3333/mcp
古いSSEトランスポートを引き続き使用するクライアントは、次のエンドポイントに接続できます。
http://127.0.0.1:3333/sse
環境
OPENSERP_API_KEY:https://openserp.org/dashboard/keys から取得するクラウド API キーです。OPENSERP_BASE_URL:API ベース URL の上書き設定です。OPENSERP_BACKEND:任意のバックエンド指定です。ossまたはcloudを指定します。OPENSERP_TIMEOUT_MS:SDK リクエストのタイムアウト時間(ミリ秒)です。HOST:HTTP ホストです。デフォルトは127.0.0.1です。PORT:HTTP ポートです。デフォルトは3333です。
リソース
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。