OpenResearch MCP について
OpenResearch MCPは、ウェブ、学術、金融、ニュース、ソーシャルの公開情報を扱う、エージェント向けのキー不要の調査サーバーです。22種類のツールを備え、ループバックへのバインドやSSRF対策を標準で適用します。
主な機能
- 0122種類の分野横断型調査ツール
- 02ウェブ、論文、ニュース、リポジトリの検索
- 03ウェブページ、PDF、YouTube字幕の閲覧
- 04金融、マクロ、天気、SECデータの取得
- 05Blueskyのプロフィールと投稿の検索
- 06標準でループバック接続とSSRF対策
活用シーン
- 01SEC提出書類、ニュース、リポジトリを使った企業調査
- 02論文とPDFをたどる学術テーマの調査
- 03国別指標、為替、過去の天気情報の組み合わせ
- 04生物医学文献の検索とオープンアクセス論文の閲覧
MCP 対応
stdioまたはStreamable HTTPで、MCPクライアントに22種類の調査ツールを提供します。すべてのツールはAPIキーなしで利用でき、一部のレート制限は任意の環境変数で引き上げられます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx openresearch-mcpGITHUB_TOKENシークレットGitHub token — increases rate limit from 60 to 5,000 req/hrOPENALEX_EMAILYour email for the OpenAlex polite pool (higher rate limits)STACKEXCHANGE_KEYシークレットStack Exchange API key for higher daily quota on Stack Overflow searchesSEC_USER_AGENTYour contact email/string for SEC EDGAR fair-access; a default is used otherwiseローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
openresearch-mcp
さまざまな領域のエージェント向けに、認証不要でセキュリティを強化したリサーチ MCP です。
Claude、Cursor、OpenCode、Open WebUI、その他の MCP 対応エージェントに、ウェブ検索、学術論文、PDF、GitHub リポジトリ、ニュース、マクロ経済・金融データ、SEC 提出書類、バイオメディカル文献、Bluesky、YouTube を含む、充実したリサーチ環境を提供します。管理が必要な API キーはありません。 22 個のツールを、1 回のインストールで利用できます。
特長
リサーチエージェントの能力は、アクセスできる情報源の質に左右されます。しかし、情報源を追加するたびに、通常は別の API キー、別の登録、管理すべき別の利用上限が必要となり、攻撃対象領域も広がります。
openresearch-mcp は、すぐに役立つ公開データを必要とするローカルファーストのエージェント向けに、より安全なデフォルト設定で構築されています。
- ログイン不要、キー不要 — すべてのツールをインストール後すぐに使えます。任意の環境変数を設定すると、レート制限が緩和されます。
- 設計段階からセキュリティを強化 — デフォルトではループバックにバインドし、SSRF フィルタリング付きの URL 取得、プロンプトインジェクションを考慮した抽出、ダウンロードサイズの制限、障害からの適切な回復に対応します。AI エージェント向けの OWASP 基準に照らしてセキュリティレビュー済みです。
- コンテキスト消費を抑制 — 22 個のツール全体で約 6.2K トークン(200K ウィンドウの約 3%)です。この数値は推測ではなく、リポジトリ内のスクリプトで生成されています。
できること
22 個のツールを個別に使うだけでなく、連携させて領域横断型のリサーチを実行できます。
- 企業調査 →
search_sec_filings/get_company_financials→search_news→read_repo→read_url - 学術分野の詳細調査 →
search_openalex→search_europepmc→read_pdf - マクロ経済・国の情報 →
search_indicators→get_country_indicator→get_fx_rate→get_historical_weather
クイックスタート
uvx openresearch-mcp --stdio
任意の MCP クライアント(Claude Desktop、Cursor、または HTTP エージェント。接続方法を参照)から接続し、複数の領域にまたがる質問をしてみましょう。
「Apple の SEC 提出書類から最新の年間売上高を取得し、同社の AI 戦略に関する最近のニュースを探してください。」
エージェントが get_company_financials → search_news を連携させて実行するため、キーも設定も必要ありません。
インストール
MCP Registry からインストール(Claude Desktop / Cursor に推奨)
このサーバーは、公式の MCP Registry に io.github.olanokhin/openresearch-mcp として登録されています。Registry 対応クライアントなら、手動で設定せずに検索してインストールできます。クライアントの MCP ブラウザーで openresearch-mcp を検索してください。
PyPI からインストール
# Zero install, always isolated — recommended for manual use
uvx openresearch-mcp
# Or install globally
pip install openresearch-mcp
openresearch-mcp
デフォルトでは、サーバーは http://127.0.0.1:8000/mcp(Streamable HTTP、MCP 1.1 以降)で起動し、ループバックにバインドされるため、ローカルネットワークには公開されません。サーバーを公開する場合(たとえば、コンテナー内やゲートウェイの背後で実行する場合)は、すべてのインターフェースに明示的にバインドしてください。
# Custom port
uvx openresearch-mcp --port 9000
# Bind all interfaces (only behind an auth/rate-limit gateway)
uvx openresearch-mcp --host 0.0.0.0 --port 9000
注記: ループバック以外にバインドする場合は、前段に認証・レート制限ゲートウェイを設置してください。このサーバーは設計上認証不要であり、
read_url/read_pdfは任意の URL を取得します(SSRF を防ぐため、プライベート/リンクローカル/ループバックの範囲はブロックされますが、レート制限はご自身の責任で設定してください)。
MCP クライアントに接続する
Claude Desktop
~/Library/Application Support/Claude/claude_desktop_config.json を編集します
(Windows の場合:%APPDATA%\Claude\claude_desktop_config.json)
{
"mcpServers": {
"openresearch": {
"command": "uvx",
"args": ["openresearch-mcp", "--stdio"]
}
}
}
保存後、Claude Desktop を再起動します。サーバーは stdio モードで実行されるため、ポートは不要です。
Cursor
~/.cursor/mcp.json(グローバル)または .cursor/mcp.json(プロジェクトごと)を作成または編集します。
{
"mcpServers": {
"openresearch": {
"command": "uvx",
"args": ["openresearch-mcp", "--stdio"]
}
}
}
HTTP エージェント(OpenCode、Open WebUI、カスタム)
サーバーを起動します:
uvx openresearch-mcp
# or: openresearch-mcp
エージェントの接続先:
http://localhost:8000/mcp
ツール
~Tok 列は各ツールの完全な定義(名前+説明+JSON 入力スキーマ。tools/list で送信されるもの)で、すべてのリクエストでエージェントのコンテキストに挿入されます。
| ツール | ソース | 備考 | ~Tok |
|---|---|---|---|
web_search | DuckDuckGo | ドメインに範囲を絞るための任意の site= パラメーター(例:arxiv.org) | 251 |
read_url | 任意のウェブページ | ナビゲーション/スクリプトを除去し、整形済みテキストを返します | 164 |
read_pdf | 任意の PDF または arXiv | /abs/、/pdf/、/html/ の arXiv URL を相互に受け付けます | 181 |
read_repo | GitHub の公開リポジトリ | README+ファイルツリー+主要ドキュメント。5k req/hr の利用には GITHUB_TOKEN を設定します | 211 |
search_hacker_news | Algolia 経由の HN | ポイント数とコメント数を含むストーリー検索 | 206 |
search_stackoverflow | Stack Overflow API | より高い利用上限には STACKEXCHANGE_KEY を設定します | 212 |
search_openalex | OpenAlex | 2億5,000万件以上の研究成果、レート制限なし。優先プールの利用には OPENALEX_EMAIL を設定します | 231 |
get_youtube_transcript | YouTube の字幕 | 完全な URL、youtu.be/ リンク、ショート動画、または動画 ID のみを受け付けます | 194 |
get_current_date | サーバーの時計 | 現在の UTC 日付/時刻 — 推測ではなく相対的なリクエスト(「過去30日間」など)の基準になります | 240 |
get_weather_forecast | Open-Meteo | 地名による現在の状況と最大16日間の予報。キー不要。ライセンスに関する注意事項は以下を参照してください | 229 |
get_historical_weather | Open-Meteo | 地名と日付範囲による1940年以降の気候データ。月別/年別に集計。キー不要。ライセンスに関する注意事項は以下を参照してください | 328 |
search_indicators | World Bank | キーワード(「GDP」、「migration」など)で指標コードを検索し、get_country_indicator に渡します | 240 |
get_country_indicator | World Bank | 国とコードによる年次の社会経済データ(GDP、人口、インフレ、移住、平均余命など)。キー不要 | 338 |
get_fx_rate | Frankfurter (ECB) | 通貨レート:最新値、過去の日付、または日付範囲の系列(週/月単位に間引き)。キー不要 | 367 |
get_crypto_price | CoinGecko | コイン ID/シンボルと基準通貨による暗号資産価格(現在値または日次履歴)。キー不要 | 284 |
search_news | GDELT | トピックに関する最新の世界ニュース(多言語)。read_url に渡す記事を返します。キー不要(レート制限:約5秒に1回) | 481 |
search_europepmc | Europe PMC | 生物医学/生命科学の論文。オープンアクセスかどうかを示し、read_pdf に渡す PDF URL を提供します。キー不要 | 264 |
search_bluesky_users | Bluesky | 名前、ハンドル、または自己紹介文から研究者/開発者のプロフィールを検索します。キー不要 | 227 |
get_bluesky_profile | Bluesky | ハンドルの自己紹介全文+フォロワー数/投稿数。キー不要 | 200 |
read_bluesky_feed | Bluesky | ユーザーの最近のオリジナル投稿(リポスト/返信は除外)。キー不要 | 228 |
get_company_financials | SEC EDGAR | ティッカーによる米国上場企業の年間売上高、利益、資産(10-K 提出書類)。キー不要(大量利用には SEC_USER_AGENT を設定します) | 233 |
search_sec_filings | SEC EDGAR | キーワード/企業名で提出書類(10-K/10-Q/8-K)を全文検索します。read_url/read_pdf に渡すドキュメント URL を返します。キー不要 | 300 |
| 全22件のツール定義 | 5,609 | ||
サーバーの instructions | 選択ガイド+連携レシピ | 815 | |
| リクエストあたりの合計 | 200K のコンテキストウィンドウの約3% | 6,424 |
トークン数は tiktoken の o200k_base(GPT-4o/o-series のエンコーディング)でオフライン測定しています。Claude のトークナイザーでは約±10~15%異なります。この表は自動生成されます — uv run python scripts/context_cost.py --write を実行してください。CI は差異があると失敗します。
オプションの環境変数
すべてのツールはキーなしで動作します。レート制限を引き上げるには、次の値を設定してください。
| 変数 | 効果 |
|---|---|
GITHUB_TOKEN | GitHub:60 → 5,000 リクエスト/時 |
OPENALEX_EMAIL | OpenAlex の優先利用枠(上限が引き上げられます) |
STACKEXCHANGE_KEY | Stack Overflow:1 日あたりのクォータが引き上げられます |
SEC_USER_AGENT | SEC EDGAR の適正なアクセスのための連絡先(例:メールアドレス)。設定しない場合はデフォルト値が使用されます |
キーを使う例:
GITHUB_TOKEN=ghp_... [email protected] uvx openresearch-mcp
または、Claude Desktop の設定で:
{
"mcpServers": {
"openresearch": {
"command": "uvx",
"args": ["openresearch-mcp", "--stdio"],
"env": {
"GITHUB_TOKEN": "ghp_...",
"OPENALEX_EMAIL": "[email protected]"
}
}
}
}
セキュリティ
openresearch-mcp は、メンテナーが開発した OWASP 準拠の AI エージェントセキュリティレビュー用スキル、agent-security-skill を使用してレビューされ、セキュリティが強化されました。
このレビューにより、このサーバーでは具体的な強化が直接行われました。内容は、SSRF に耐性のある URL フェッチ、ツール出力の信頼できないコンテンツの分離、ダウンロードサイズの制限、GitHub Actions のバージョン固定、依存関係のメジャーバージョン上限の設定、セキュリティ上重要な動作に対する回帰テストです。
強化に関する注記と現在のセキュリティ状況については、SECURITY.md をご覧ください。
ヘルスチェック
HTTP モードで実行している場合は、到達可能なソースを確認できます。
curl http://localhost:8000/health
{
"status": "ok",
"sources": {
"duckduckgo": { "status": "ok", "latency_ms": 173 },
"github": { "status": "ok", "latency_ms": 101 },
"hacker_news": { "status": "ok", "latency_ms": 308 },
"stackoverflow": { "status": "ok", "latency_ms": 247 },
"openalex": { "status": "ok", "latency_ms": 412 },
"worldbank": { "status": "ok", "latency_ms": 296 },
"frankfurter": { "status": "ok", "latency_ms": 184 },
"europepmc": { "status": "ok", "latency_ms": 356 },
"bluesky": { "status": "ok", "latency_ms": 152 },
"youtube": { "status": "ok", "latency_ms": 320 }
}
}
status は "ok"(正常)、"degraded"(一部のソースが停止)、または "down"(すべて到達不能)です。HTTP 200 / 503 が返されます。
/health は上流サービスへの到達可能性を簡易確認するもので、ツールごとのステータス一覧ではありません。
レート制限やポリシーの影響を受けるソース(GDELT、SEC、CoinGecko など)は、各ツールの呼び出し時に確認されます。
既知の制限事項
- Reddit / Zenodo:認証なしのスクレイピングをブロックするため、対象に含まれていません
- YouTube:大規模な利用ではレート制限されます。個人利用や低頻度の利用には適しています
- Weather(Open-Meteo):データは CC BY 4.0 でライセンスされており、1 日あたり約 10,000 リクエストまでは非営利で無料利用できます。商用利用には Open-Meteo の有料プランまたはセルフホストが必要です。有料プランを利用せず、商用製品に
get_weather_forecastを組み込むと、ライセンス上の義務が生じます。Open-Meteo のクレジット表記が必要です。 - PDF の解析:
read_pdfは、信頼できない PDF をプロセス内で解析します(ダウンロードサイズとページ数に上限があります)。個人利用や低頻度の利用には問題ありませんが、公開環境で大量に利用する場合は、CPU とメモリに制限を設けたサブプロセス内で解析する必要があります。
ロードマップ
- Reddit OAuth(ブラウザベースで、ユーザーによるキー管理は不要)
- GitHub Device Flow ログイン
- PubMed / NCBI(オプションのキー)
- NewsAPI のサポート(オプションのキー)
ライセンス
Apache 2.0
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。