mcpField
M
MCP Server: Ollama Deep Researcher

MCP Server: Ollama Deep Researcher

ローカル
github.com/Cam10001110101AI・エージェント1614 週間前に更新

MCP Server: Ollama Deep Researcher について

Ollama Deep Researcherは、mcpcentralモノレポへ移行済みのアーカイブされたDXT拡張リポジトリです。ウェブ検索とLLMによる統合を組み合わせたトピック調査を目的としていました。

主な機能

  1. 01ウェブ検索とLLMによる調査結果の統合
  2. 02調査ループ数・モデル・検索APIの設定
  3. 03調査状況の追跡
  4. 04MCPリソースとしての結果取得

活用シーン

  1. 01トピックに関する調査結果の生成
  2. 02調査ループや検索設定の調整
  3. 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
└── ...

インストールとセットアップ

  1. リポジトリをクローンし、依存関係をインストールします:

    git clone <your-repo-url>
    cd mcp-server-ollama-deep-researcher
    npm install
    
  2. アシスタント用の Python 依存関係をインストールします:

    cd src/assistant
    pip install -r requirements.txt
    # or use pyproject.toml/uv if preferred
    
  3. ウェブ検索 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 でシークレットを安全に管理するを参照してください。
  4. TypeScript サーバーをビルドします(必要な場合):

    npm run build
    
  5. テスト用に拡張機能をローカルで実行します:

    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 フックが、エージェントによるシェルコマンドの実行前にマウントを検証します。

  1. 1Password デスクトップアプリで、Environment → Destinations → Local .env file → Choose file path → .env → Mount を開きます。cat .env を実行して確認します(Touch ID で承認します。認証は 1Password がロックされるまで有効です)。
  2. .1password/environments.toml(コミット済み)で、フックが検証するパスを指定します。すでに mount_paths = [".env"] に設定されています。
  3. 検証フックをローカルにインストールします。
    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 を使わないコントリビューターには影響しません。
  4. テストします。ロック解除中は 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)。

op CLI に --environment がない場合の代替手段(environment サブコマンドは 1Password Environments のベータ版に含まれており、op v2.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

参考資料


コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。