MCP Server: Ollama Deep Researcher について
Ollama Deep Researcherは、mcpcentralモノレポへ移行済みのアーカイブされたDXT拡張リポジトリです。ウェブ検索とLLMによる統合を組み合わせたトピック調査を目的としていました。
主な機能
- 01ウェブ検索とLLMによる調査結果の統合
- 02調査ループ数・モデル・検索APIの設定
- 03調査状況の追跡
- 04MCPリソースとしての結果取得
活用シーン
- 01トピックに関する調査結果の生成
- 02調査ループや検索設定の調整
- 03進行中の調査状況の確認
MCP 対応
ローカルのstdio MCP サーバーがresearch、get_status、configureツールを提供し、調査結果をリソースとして公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
⛔ アーカイブ済み — このコードは移動しました
2026-07-23 に mcpcentral platform monorepo へ移行しました(ADR-043)。
今後はこちらで作業してください:
mcpcentral-io/mcpcentral→apps/deep-researcher/ワーカー:mcpcentral-deep-researcherこのリポジトリは読み取り専用で、履歴のために保持されています。DEPRECATED.md を参照してください。
Ollama Deep Researcher DXT 拡張機能
概要
Ollama Deep Researcher は、ローカル MCP サーバーを利用し、ウェブ検索と LLM による統合を通じて高度なトピック調査を可能にするデスクトップ拡張機能(DXT)です。調査パラメーターの設定、ステータスの追跡、リソースへのアクセスに対応し、DXT エコシステムとシームレスに統合できるよう設計されています。
- ウェブ検索 API(Tavily、Perplexity、Exa)と LLM(Ollama、DeepSeek など)を使って、あらゆるトピックを調査
- 調査ループの最大回数、LLM モデル、検索 API を設定
- 進行中の調査のステータスを追跡
- MCP プロトコルを介して、調査結果にリソースとしてアクセス
機能
- ローカルで安全に動作するよう、stdio 経由で MCP プロトコルを実装
- 防御的プログラミング:エラー処理、タイムアウト、検証
- stderr 経由のログ記録とデバッグ
- DXT ホスト環境に対応
ディレクトリ構成
.
├── manifest.json # DXT manifest (see MANIFEST.md for spec)
├── src/
│ ├── index.ts # MCP server entrypoint (Node.js, stdio transport)
│ └── assistant/ # Python research logic
│ └── run_research.py
├── README.md # This documentation
└── ...
インストールとセットアップ
-
リポジトリをクローンし、依存関係をインストールします:
git clone <your-repo-url> cd mcp-server-ollama-deep-researcher npm install -
アシスタント用の Python 依存関係をインストールします:
cd src/assistant pip install -r requirements.txt # or use pyproject.toml/uv if preferred -
ウェブ検索 API に必要な環境変数を設定します:
- Tavily の場合:
TAVILY_API_KEY - Perplexity の場合:
PERPLEXITY_API_KEY - Exa の場合:
EXA_API_KEY(https://dashboard.exa.ai/api-keys で取得できます) - オプション:
LANGSMITH_API_KEY、LANGSMITH_TRACING=true、OLLAMA_BASE_URL(デフォルトはhttp://localhost:11434) - 例:
export TAVILY_API_KEY=your_tavily_key export PERPLEXITY_API_KEY=your_perplexity_key export EXA_API_KEY=your_exa_key - キーを平文のままディスクに保存したくない場合は? 以下のオプション:1Password でシークレットを安全に管理するを参照してください。
- Tavily の場合:
-
TypeScript サーバーをビルドします(必要な場合):
npm run build -
テスト用に拡張機能をローカルで実行します:
node dist/index.js # Or use the DXT host to load the extension per DXT documentation
使い方
- トピックを調査する:
{ "topic": "Your subject" }を指定してresearchツールを使用します
- 調査ステータスを取得する:
get_statusツールを使用します
- 調査パラメーターを設定する:
maxLoops、llmModel、searchApiのいずれかを指定してconfigureツールを使用します
マニフェスト
ツールのスキーマとリソーステンプレートを含む、DXT マニフェストの全体は manifest.json を参照してください。DXT MANIFEST.md に準拠しています。
ログ記録とデバッグ
- デバッグ用に、サーバーのログとエラーはすべて
stderrに出力されます。 - ハングを防ぐため、調査のサブプロセスは 30 分後に終了します。
- 無効なリクエストや設定エラーには、明確で構造化されたエラーメッセージが返されます。
セキュリティとベストプラクティス
- すべてのツールスキーマは、実行前に検証されます。
- ウェブ検索 API には API キーが必要で、キーがログに記録されることはありません。
- ローカルで安全に通信するために、stdio 経由で MCP プロトコルを使用します。
テストと検証
- DXT 対応ホストに読み込んで、拡張機能を検証します。
- すべてのツール呼び出しが、有効で構造化された JSON 応答を返すことを確認します。
- マニフェストが読み込まれ、拡張機能が DXT として登録されることを確認します。
トラブルシューティング
- API キーがない: 使用する検索 API に応じて、環境に
TAVILY_API_KEY、PERPLEXITY_API_KEY、またはEXA_API_KEYが設定されていることを確認します。 - Python エラー: Python の依存関係と
stderrのログを確認します。 - タイムアウト: 調査のサブプロセスは 30 分に制限されています。
検索 API の比較
- Tavily: 生コンテンツの抽出に対応した、高速で網羅的なウェブ検索
- Perplexity: 自然言語による要約と引用を備えた AI 検索
- Exa: ハイライト機能を備え、セマンティック検索に最適化されたニューラル検索エンジン
任意:1Password でシークレットを安全に管理する
1Password を使用している場合、平文の API キーをディスク上に保存せず、AI コーディングエージェントのコンテキストにも含めずに済みます。これはオプトイン方式で、追加設定です。上記の平文を使った設定は、変更せずに引き続き動作します。前提条件は、Mac または Linux 用の 1Password、op CLI(brew install --cask 1password-cli)、および sqlite3 です。
次の 8 つの変数を含む 1Password Environment を1 つ作成します(4 つのキーはシークレットで、残りはシークレットではない設定値です)。
| 変数 | シークレット? |
|---|---|
TAVILY_API_KEY、PERPLEXITY_API_KEY、EXA_API_KEY、LANGSMITH_API_KEY | はい |
OLLAMA_BASE_URL、LANGSMITH_TRACING、LANGSMITH_ENDPOINT、LANGSMITH_PROJECT | いいえ |
Environment の作成時に、既存の .env を直接インポートできます。作成したら、以下の 3 つの方法から選択してください(A は AI コーディング向けのパターン、B は 1Password 推奨の MCP 起動方法、C は op を実行できないホスト向けの代替手段です)。
A. マウントした .env と検証フック(LLM のコンテキストに平文を含めない)
1Password Environments はローカルの .env を UNIX 名前付きパイプ(FIFO)としてマウントします。内容は許可された読み取り側に必要に応じてストリーミングされ、ディスクには一切保存されません。Claude Code の PreToolUse フックが、エージェントによるシェルコマンドの実行前にマウントを検証します。
- 1Password デスクトップアプリで、Environment → Destinations → Local
.envfile → Choose file path →.env→ Mount を開きます。cat .envを実行して確認します(Touch ID で承認します。認証は 1Password がロックされるまで有効です)。 .1password/environments.toml(コミット済み)で、フックが検証するパスを指定します。すでにmount_paths = [".env"]に設定されています。- 検証フックをローカルにインストールします。
これによりgit clone https://github.com/1Password/agent-hooks /tmp/agent-hooks /tmp/agent-hooks/install.sh --agent claude-code --target-dir ..claude/claude-code-1password-hooks-bundle/と.claude/settings.jsonが作成されます(どちらも gitignore 対象です)。フックはフェイルオープンです。1Password またはsqlite3が利用できない場合は実行を許可するため、1Password を使わないコントリビューターには影響しません。 - テストします。ロック解除中は
echo '{"command":"echo test","workspace_roots":["'"$PWD"'"]}' | .claude/claude-code-1password-hooks-bundle/bin/run-hook.sh 1password-validate-mounted-env-files→{"permission":"allow"}が返され、ロック中は修正手順を示すdenyが返されます。
B. MCP サーバーの起動に op run --environment を使う
.mcp.json.1password.example を .mcp.json にコピーし(gitignore 対象)、<ENVIRONMENT_ID> を Environment ID に置き換えると、MCP ホストは起動時に op run を通じてシークレットを解決します。シークレットではない設定値は env ブロックに残り、シークレットは Environment から注入されます。このテンプレートでは、GUI から起動するホスト(例:Claude Desktop)がシェルの $PATH を引き継がないため、絶対パス /opt/homebrew/bin/op を使用しています。op が別の場所にある場合は調整してください(which op)。
opCLI に--environmentがない場合の代替手段(environmentサブコマンドは 1Password Environments のベータ版に含まれており、opv2.34.x など、一部のビルドにはありません):代わりに、op://参照を記述した通常の.envに対してop run --env-file .envを使用します。アイテムを一度作成し(op item create --vault "Your Vault" --category "Login" --title "ollama-deep-researcher" "TAVILY_API_KEY[concealed]=..." …)、その後 gitignore 対象の.envに参照を書き込み、起動コマンドから指定します。# .env(gitignore 対象)— 参照のみ。平文は含みません # TAVILY_API_KEY=op://Your Vault/ollama-deep-researcher/TAVILY_API_KEY # … op run --env-file .env -- node build/index.js同じ
.envは Docker でも使用できるため(下記参照)、1 つの参照ファイルで両方の起動方法に対応できます。op runは起動ごとに 1 回、Touch ID を求めます。
C. .mcp.json 用の op inject テンプレート
op run を使用できない MCP ホストの場合は、.mcp.json.template を作業用ファイルにコピーし、<vault> をボルト名に置き換えてから、{{ op://... }} の参照を実際の値に展開します。
op inject -i .mcp.json.template -o .mcp.json
op inject は、ファイルモード 0600 で出力を書き込みます。.mcp.json は Git の追跡対象外です。1Password でシークレットをローテーションした後は、再コンパイルしてください。(標準的なアイテム/ボルトのサポートには op CLI が必要です。オプション B の op run --environment 形式には、さらに 1Password Environments のベータ版が必要です。)
Docker
docker-compose.yml は、環境から 8 つすべての変数を補間します。op run --env-file を使って Compose を実行し、.env(または A で設定した場合は FIFO マウント)内の op:// 参照を解決してコンテナに渡します。
op run --env-file .env -- docker compose up
参考資料
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。