Deep Research について
Deep Research は、さまざまな LLM を使って詳細な調査レポートを生成するオープンソースアプリで、SSE API と MCP サーバーを備えています。データはローカルで処理・保存され、調査ツールを自分で配置して管理したいユーザーに向いています。
主な機能
- 01多数の LLM と検索プロバイダーへの対応
- 02思考モデルとタスクモデルの分離
- 03アップロードファイルによるローカルナレッジベース
- 04レポート編集とナレッジグラフ生成
- 05調査履歴の保存と段階ごとの再調査
- 06SSE API と MCP サーバー
活用シーン
- 01特定テーマについて Web 検索を伴う Markdown 形式の調査レポートを生成
- 02ローカルのドキュメントから調査資料を作成
- 03他の AI サービスから MCP 経由で詳細調査を実行
MCP 対応
Deep Research は StreamableHTTP と SSE の各トランスポートで MCP サーバーを公開し、詳細調査機能を MCP クライアントに提供します。調査には時間がかかるため、クライアント側で長めのタイムアウト設定が必要です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
超高速の詳細調査レポート
Deep Research は、さまざまな強力な AI モデルを活用し、わずか数分で詳細な調査レポートを作成します。高度な「思考」モデルと「タスク」モデルをインターネット接続と組み合わせることで、さまざまなトピックについて、迅速で洞察に富んだ分析を提供します。プライバシーを最優先しています。すべてのデータはローカルで処理・保存されます。
✨ 機能
- 迅速な詳細調査: 約2分で包括的な調査レポートを生成し、調査プロセスを大幅に加速します。
- マルチプラットフォーム対応: Vercel、Cloudflare などのプラットフォームに迅速にデプロイできます。
- AI を活用: 高度な AI モデルを活用し、正確で有益な分析を実現します。
- プライバシー重視: すべてのデータはブラウザー内にローカル保存されるため、データのプライバシーと安全性が保たれます。
- 複数の LLM に対応: Gemini、OpenAI、Anthropic、Deepseek、Atlas Cloud、Grok、Mistral、Azure OpenAI、OpenAI 互換の LLM、OpenRouter、Ollama など、さまざまな主要な大規模言語モデルに対応しています。
- ウェブ検索に対応: Searxng、Tavily、Firecrawl、fastCRW、Exa、Bocha、Brave などの検索エンジンに対応しているため、検索に対応していない LLM でも、より手軽にウェブ検索機能を利用できます。
- 思考モデルとタスクモデル: 高度な「思考」モデルと「タスク」モデルを活用し、深さと速度のバランスを取りながら、高品質な結果を迅速に提供します。調査モデルの切り替えにも対応しています。
- 追加調査に対応: プロジェクトのどの段階でも調査内容を調整・修正でき、その段階から再調査することもできます。
- ローカルナレッジベース: テキスト、Office、PDF などのリソースファイルをアップロードして処理し、ローカルナレッジベースを作成できます。
- アーティファクト: 調査内容の編集に対応しており、WYSIWYM と Markdown の 2 つの編集モードを利用できます。読解レベルや記事の長さを調整したり、全文を翻訳したりすることもできます。
- ナレッジグラフ: ワンクリックでナレッジグラフを生成でき、レポートの内容を体系的に理解できます。
- 調査履歴: 調査履歴を保存でき、過去の調査結果をいつでも確認して、さらに深く調査できます。
- ローカル API とサーバー API に対応: ニーズに合わせて、ローカルまたはサーバー側の API 呼び出し方法を選択できます。
- SaaS と MCP に対応: SSE API を通じてこのプロジェクトを詳細調査サービス(SaaS)として利用したり、MCP サービスを通じて他の AI サービスで利用したりできます。
- PWA に対応: プログレッシブウェブアプリ(PWA)技術により、ソフトウェアのようにこのプロジェクトを利用できます。
- 複数キーのペイロードに対応: 複数キーのペイロードに対応し、API の応答効率を向上させます。
- 多言語対応: 英語、简体中文、Español。
- 最新技術を採用: Next.js 15 と Shadcn UI を使用して開発されており、最新で高性能、かつ視覚的に魅力あるユーザー体験を実現します。
- MIT ライセンス: オープンソースで、MIT ライセンスの下、個人利用および商用利用に無料で利用できます。
🎯 ロードマップ
- 調査履歴の保存に対応
- 最終レポートと検索結果の編集に対応
- 他の LLM モデルに対応
- ファイルのアップロードとローカルナレッジベースに対応
- SSE API と MCP サーバーに対応
🚀 はじめに
無料の Gemini を使用(推奨)
-
Gemini API Key を取得します
-
プロジェクトをワンクリックでデプロイします。デプロイ先には Vercel または Cloudflare を選択できます
現在、このプロジェクトは Cloudflare へのデプロイに対応しています。デプロイするには、Cloudflare Pages へのデプロイ方法に従ってください。
-
利用を開始します
その他の LLM を使用
- プロジェクトを Vercel または Cloudflare にデプロイします
- LLM API キーを設定します
- LLM API のベース URL を設定します(任意)
- 利用を開始します
⌨️ 開発
以下の手順に従って、ローカルブラウザーで Deep Research を起動します。
前提条件
インストール
-
リポジトリをクローンします:
git clone https://github.com/u14app/deep-research.git cd deep-research -
依存関係をインストールします:
pnpm install # or npm install or yarn install -
環境変数を設定します:
env.tplファイルを.envに変更するか、.envファイルを作成して、このファイルに変数を記述する必要があります。# For Development cp env.tpl .env.local # For Production cp env.tpl .env -
開発サーバーを起動します:
pnpm dev # or npm run dev or yarn devブラウザーを開き、http://localhost:3000 にアクセスして、Deep Research を利用します。
カスタムモデルリスト
このプロジェクトではカスタムモデルリストを使用できますが、プロキシモードでのみ動作します。.env ファイルまたは環境変数ページで、NEXT_PUBLIC_MODEL_LIST という名前の環境変数を追加してください。
カスタムモデルリストでは、複数のモデルを区切るために , を使用します。モデルを無効にするには、モデル名の前に - を付けます(例:-existing-model-name)。指定したモデルのみを使用可能にするには、-all,+new-model-name を使用します。
🚢 デプロイ
Vercel
Cloudflare
現在、このプロジェクトは Cloudflare へのデプロイに対応しています。デプロイするには、Cloudflare Pages へのデプロイ方法に従ってください。
Docker
Docker のバージョンは 20 以上である必要があります。それより古い場合、イメージが見つからないというメッセージが表示されます。
⚠️ 注意:Docker のバージョンは最新バージョンより 1~2 日遅れることがほとんどです。そのため、デプロイ後も「更新があります」というメッセージが表示され続けますが、これは正常です。
docker pull xiangfa/deep-research:latest
docker run -d --name deep-research -p 3333:3000 xiangfa/deep-research
追加の環境変数を指定することもできます:
docker run -d --name deep-research \
-p 3333:3000 \
-e ACCESS_PASSWORD=your-password \
-e GOOGLE_GENERATIVE_AI_API_KEY=AIzaSy... \
xiangfa/deep-research
または、独自の Docker イメージをビルドできます:
docker build -t deep-research .
docker run -d --name deep-research -p 3333:3000 deep-research
ほかの環境変数を指定する場合は、上記のコマンドに -e key=value を追加して指定してください。
docker-compose.yml を使用してデプロイします:
version: '3.9'
services:
deep-research:
image: xiangfa/deep-research
container_name: deep-research
environment:
- ACCESS_PASSWORD=your-password
- GOOGLE_GENERATIVE_AI_API_KEY=AIzaSy...
ports:
- 3333:3000
または、独自の Docker Compose をビルドできます:
docker compose -f docker-compose.yml build
静的デプロイ
静的ページ版を直接ビルドし、out ディレクトリ内のすべてのファイルを、Github Page、Cloudflare、Vercel などの静的ページに対応したウェブサイトサービスにアップロードすることもできます。
pnpm build:export
⚙️ 設定
「はじめに」のセクションで説明したように、Deep Research ではサーバー側 API の設定に次の環境変数を使用します。
利用可能な環境変数の一覧は、env.tpl ファイルを参照してください。
環境変数に関する重要な注意事項:
-
プライバシーに関する注意: これらの環境変数は、主にサーバー側の API 呼び出しに使用されます。ローカル API モードを使用する場合、API キーやサーバー側の設定は不要なため、プライバシーをさらに保護できます。
-
複数キーのサポート: 複数のキーに対応しています。各キーは
,で区切ります(例:key1,key2,key3)。 -
セキュリティ設定:
ACCESS_PASSWORDを設定すると、サーバー API のセキュリティをより強化できます。 -
変数を有効にする: この環境変数を追加または変更した後、変更を反映するにはプロジェクトを再デプロイしてください。
📄 API ドキュメント
現在、このプロジェクトは Server-Sent Events(SSE)と Model Context Protocol(MCP)の 2 種類の API に対応しています。
Server-Sent Events API
Deep Research API は、複雑な調査タスクを開始し、その進行状況を監視するためのリアルタイムインターフェースを提供します。
API の利用には @microsoft/fetch-event-source の使用を推奨します。最終レポートを取得するには、message イベントをリッスンしてください。データはテキストストリームとして返されます。
POST メソッド
エンドポイント:/api/sse
メソッド:POST
本文:
interface SSEConfig {
// Research topic
query: string;
// AI provider, Possible values include: google, openai, anthropic, deepseek, atlascloud, xai, mistral, azure, openrouter, openaicompatible, pollinations, ollama
provider: string;
// Thinking model id
thinkingModel: string;
// Task model id
taskModel: string;
// Search provider, Possible values include: model, tavily, firecrawl, crw, exa, bocha, searxng
searchProvider: string;
// Response Language, also affects the search language. (optional)
language?: string;
// Maximum number of search results. Default, `5` (optional)
maxResult?: number;
// Whether to include content-related images in the final report. Default, `true`. (optional)
enableCitationImage?: boolean;
// Whether to include citation links in search results and final reports. Default, `true`. (optional)
enableReferences?: boolean;
}
ヘッダー:
interface Headers {
"Content-Type": "application/json";
// If you set an access password
// Authorization: "Bearer YOUR_ACCESS_PASSWORD";
}
詳細については、API ドキュメントを参照してください。
GET メソッド
これは興味深い実装です。動画を見るように、URL からディープリサーチの全工程を直接確認できます。
以下のリンクからディープリサーチレポートにアクセスできます:
http://localhost:3000/api/sse/live?query=AI+trends+for+this+year&provider=pollinations&thinkingModel=openai&taskModel=openai-fast&searchProvider=searxng
クエリパラメーター:
// The parameters are the same as POST parameters
interface QueryParams extends SSEConfig {
// If you set the `ACCESS_PASSWORD` environment variable, this parameter is required
password?: string;
}
Model Context Protocol (MCP) サーバー
現在、StreamableHTTP および SSE のサーバートランスポートをサポートしています。
StreamableHTTP サーバーエンドポイント:/api/mcp、トランスポートタイプ:streamable-http
SSE サーバーエンドポイント:/api/mcp/sse、トランスポートタイプ:sse
{
"mcpServers": {
"deep-research": {
"url": "http://127.0.0.1:3000/api/mcp",
"transportType": "streamable-http",
"timeout": 600
}
}
}
注意: 詳細な調査には時間がかかるため、調査が中断されないよう、タイムアウトを長めに設定してください。
サーバーで ACCESS_PASSWORD を設定している場合、MCP サービスは保護されます。その場合は、追加のヘッダーパラメーターを指定する必要があります。
{
"mcpServers": {
"deep-research": {
"url": "http://127.0.0.1:3000/api/mcp",
"transportType": "streamable-http",
"timeout": 600,
"headers": {
"Authorization": "Bearer YOUR_ACCESS_PASSWORD"
}
}
}
}
MCP サービスを有効にするには、グローバル環境変数を設定する必要があります:
# MCP Server AI provider
# Possible values include: google, openai, anthropic, deepseek, atlascloud, xai, mistral, azure, openrouter, openaicompatible, pollinations, ollama
MCP_AI_PROVIDER=google
# MCP Server search provider. Default, `model`
# Possible values include: model, tavily, firecrawl, crw, exa, bocha, searxng
MCP_SEARCH_PROVIDER=tavily
# MCP Server thinking model id, the core model used in deep research.
MCP_THINKING_MODEL=gemini-2.0-flash-thinking-exp
# MCP Server task model id, used for secondary tasks, high output models are recommended.
MCP_TASK_MODEL=gemini-2.0-flash-exp
注意: MCP サービスを正常に使用できるようにするには、対応するモデルと検索エンジンの環境変数を設定する必要があります。具体的な環境変数のパラメーターについては、env.tpl を参照してください。
🪄 仕組み
-
調査トピック
- 調査トピックを入力します
- ローカルの調査リソースを使用します(任意)
- 思考を開始します(または再考します)
-
アイデアを提案する
- システムが質問します
- システムの質問に回答します(任意)
- 調査計画を作成します(または書き直します)
- システムが調査計画を出力します
- 詳細な調査を開始します(または再調査します)
- システムが SERP クエリを生成します
- システムが質問します
-
情報収集
- 初期調査
- SERP クエリに基づいてローカルの調査リソースを取得します
- SERP クエリに基づいてインターネットから情報を収集します
- 詳細な調査(このプロセスは繰り返し実行できます)
- 調査に関する提案を提示します(任意)
- 新たな情報収集を開始します(プロセスは初期調査と同じです)
- 初期調査
-
最終レポートを生成する
- 執筆の依頼をします(任意)
- すべての調査資料を包括的な Markdown レポートにまとめます
- 調査レポートを再生成します(任意)
flowchart TB
A[Research Topic]:::start
subgraph Propose[Propose your ideas]
B1[System asks questions]:::process
B2[System outputs the research plan]:::process
B3[System generates SERP queries]:::process
B1 --> B2
B2 --> B3
end
subgraph Collect[Information collection]
C1[Initial research]:::collection
C1a[Retrieve local research resources based on SERP queries]:::collection
C1b[Collect information from the Internet based on SERP queries]:::collection
C2[In-depth research]:::recursive
Refine{More in-depth research needed?}:::decision
C1 --> C1a
C1 --> C1b
C1a --> C2
C1b --> C2
C2 --> Refine
Refine -->|Yes| C2
end
Report[Generate Final Report]:::output
A --> Propose
B3 --> C1
%% Connect the exit from the loop/subgraph to the final report
Refine -->|No| Report
%% Styling
classDef start fill:#7bed9f,stroke:#2ed573,color:black
classDef process fill:#70a1ff,stroke:#1e90ff,color:black
classDef recursive fill:#ffa502,stroke:#ff7f50,color:black
classDef output fill:#ff4757,stroke:#ff6b81,color:black
classDef collection fill:#a8e6cf,stroke:#3b7a57,color:black
classDef decision fill:#c8d6e5,stroke:#8395a7,color:black
class A start
class B1,B2,B3 process
class C1,C1a,C1b collection
class C2 recursive
class Refine decision
class Report output
🙋 よくある質問
Ollama または SearXNG が正常に動作せず、TypeError: Failed to fetch エラーが表示されるのはなぜですか?
ブラウザーのセキュリティ制限によってリクエストで CORS が発生する場合、クロスドメインリクエストを許可するように Ollama または SearXNG のパラメーターを設定する必要があります。また、サーバープロキシモードの使用も検討できます。このモードではバックエンドサーバーがリクエストを行うため、クロスドメインの問題を効果的に回避できます。
🛡️ プライバシー
Deep Research は、お客様のプライバシーを考慮して設計されています。すべての調査データと生成されたレポートは、お使いのマシンにローカル保存されます。 お客様が明示的にサーバー側 API 呼び出しを使用している場合(その場合、データは設定済みのプロキシがあればそれを経由して API に送信されます)を除き、調査データを収集したり、外部サーバーに送信したりすることはありません。お客様のプライバシーを最優先に考えています。
🙏 謝辞
- Next.js - 高性能なウェブアプリケーションを構築するための React フレームワークです。
- Shadcn UI - UI 開発の効率化に役立った、美しくデザインされたコンポーネントです。
- AI SDKs - Deep Research のインテリジェントな調査機能を支えています。
- Deep Research - インスピレーションを与えてくれた
dzhng/deep-researchプロジェクトに感謝します。
🤝 コントリビューション
Deep Research へのコントリビューションを歓迎します。改善案、バグ修正、新機能のアイデアがある場合は、ぜひ以下の手順でご参加ください。
- リポジトリをフォークします。
- 機能またはバグ修正用の新しいブランチを作成します。
- 変更を加えてコミットします。
- プルリクエストを送信します。
大規模な変更の場合は、まず issue を作成し、提案する変更について話し合ってください。
✉️ お問い合わせ
質問、提案、フィードバックがある場合は、新しい issue を作成してください。
📝 ライセンス
Deep Research は MIT License のもとで公開されています。このライセンスでは、商用・非商用を問わず、自由な使用、変更、配布が認められています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。