Percival Deep Research
🔍 Percival Deep Research (MCPサーバー)
概要
Percival Deep Researchは、Nanobotエージェントエコシステムに自律的なディープダイブWebリサーチ機能を装備するために設計された、高性能なMCP(Model Context Protocol)サーバーです。関連性が高く、信頼できる最新の情報のみに焦点を当て、多数のソースを自律的に探索・検証します。
標準的な検索ツールは手動でのフィルタリングが必要な生の断片を返しますが、Percival Deep Researchは、インテリジェントエージェントのコンテキストと推論能力を大幅に加速させる、完全に論理立てられた包括的なマルチソース資料を提供します。
注:本プロジェクトはGPT ResearcherライブラリをコアWebドライバーとして利用していますが、
percival.OSエコシステム専用に大幅なリファクタリング、堅牢化、および分離が行われています。
✨ 主な機能と強化点
このサーバーは、オープンソースLLMや最新のデプロイメントアレイの厳しい要求に耐えられるよう、大幅に修正されています:
⚡ 究極のプロバイダー移植性: 完全に非依存の推論エンジン。Venice AI、MiniMax、OpenRouterといった主要なオープンウェイトプラットフォームを、クラッシュすることなくネイティブにサポートします。リサーチオーケストレーション中に非OpenAIモデルが原因で発生する、悪名高いJSON辞書検証エラーを完全に排除するカスタムのPersona Bypassを実装しました。
🛡️ JSON-RPCプロトコルガードレール: 厳格な
stdio出力の秘匿化を強制します。基盤となるライブラリのノイズ、コンソールレンダリング、リアルタイムログはすべて物理的にstderrにリダイレクトされます。これにより、Pydantic ValidationErrorsを完全に防ぎ、MCP同期に不可欠なstdoutストリームを保護します。🔐 多層防御セキュリティ: すべての入力はプロンプトインジェクションに対して厳重にサニタイズされます。信頼できないWebコンテンツは、エージェントの自律性を保護するために実行不可能なヘッダーでラップされます。
🤖 Nanobotへの集中: ホストアプリケーションから直接環境変数を注入することを厳守するため、緩い
.env読み込みパターンを排除しています。
📑 目次
🛠️ ツールとリソースの参照
リソース
名前 | URIパターン | 説明 |
|
| トピックのキャッシュ済みまたはライブのWebリサーチコンテキストに、MCPリソースとして直接アクセスします。コンテンツとソースを含むMarkdownを返します。 |
ツール
ツール | 速度 |
| 説明 |
| 30–120秒 | ✅ はい | マルチソースのディープWebリサーチ。リサーチパイプラインの入り口。 |
| 3–10秒 | ❌ いいえ | DuckDuckGo経由の高速な生の断片検索。 |
| 10–30秒 | — | 既存のセッションから構造化されたMarkdownレポートを生成します。 |
| <1秒 | — | 参照されたすべてのソースのタイトル、URL、コンテンツサイズを返します。 |
| <1秒 | — | レポートを生成せずに、生の合成コンテキストテキストを返します。 |
リサーチパイプライン
deep_research(query)
└── research_id ──► write_report(research_id, custom_prompt?)
└──► get_research_sources(research_id)
└──► get_research_context(research_id)
quick_search(query) # standalone — no research_id⚙️ 前提条件
Python 3.11+
uv — プロジェクトおよび依存関係マネージャー
生成AIプロバイダー(例:Venice、MiniMax、OpenRouter)のAPIキー。
注:デフォルトで設定されているWeb検索エンジンはduckduckgoであり、APIキーは不要です。必要に応じて、他のWeb検索エンジンをネイティブに設定することも可能です。
⚙️ インストール
1. 統合環境のセットアップ
統合されたpercival.OSビルドエコシステムを使用していることを確認してください:
cd percival.OS_Dev
uv syncこれにより、percival-deep-researchがグローバルな.venvを継承することが保証されます。
2. 環境の設定
このモジュールは、MCPホストによって渡されるシステム変数を厳守するため、.envの読み込み (dotenv) を無効化しています。
Nanobot (~/.nanobot/config.json) やその他のエンドポイント経由で呼び出す場合は、設定配列内で直接環境変数を定義してください:
"OPENAI_API_KEY": "your_api_key_from_venice_minimax_openrouter_etc",
"OPENAI_BASE_URL": "https://api.venice.ai/api/v1",
"FAST_LLM": "openai:e2ee-qwen-2-5-7b-p",
"SMART_LLM": "openai:minimax-m27",
"STRATEGIC_LLM": "openai:zai-org-glm-4.7-flash",
"RETRIEVER": "duckduckgo"実際のプロバイダーに関係なく、LLMモデルには必ず openai: というプレフィックスを付ける必要があります。これは、基盤となるOpenAI SDKトランスポートアーキテクチャを使用しており、設定された OPENAI_BASE_URL を安全にパイプします。プレフィックスを使用しないと、JSON内部パーサーがクラッシュします。
🤖 Nanobot統合 (主要な焦点)
このサーバーは、Nanobotアシスタントによって操縦されるstdio MCPサーバーとして実行されるように根本的に調整されています。
~/.nanobot/config.jsonに以下を追加してください:
{
"mcpServers": {
"percival_deep_research": {
"command": "uv",
"args": [
"run",
"--no-sync",
"percival-deep-research"
],
"env": {
"UV_PROJECT_ENVIRONMENT": "/absolute/path/to/percival.OS_Dev/.venv",
"OPENAI_API_KEY": "actual-key-here",
"OPENAI_BASE_URL": "https://api.venice.ai/api/v1",
"FAST_LLM": "openai:e2ee-qwen-2-5-7b-p",
"RETRIEVER": "duckduckgo"
},
"tool_timeout": 300
}
}
}注:deep_researchは最大2〜3分かかる場合があります。tool_timeoutが適切にスケーリングされていることを確認してください(例:180〜300)。
Nanobotのための主要な設計決定
JSON辞書よりもプレーンテキスト — すべてのツールは、Nanobotにクリーンなテキストを提供するために、JSON辞書ではなくプレーンテキスト文字列を予測可能に返します。
コンテキストのモジュール化 —
deep_researchは、Nanobotのコンテキストウィンドウを溢れさせないよう、初期化レスポンスから巨大な合成コンテキストを省略します。代わりに、エージェントがget_research_contextを明示的に呼び出すために使用するresearch_idを発行します。
💻 Claude Desktop統合
Nanobotが推奨されるドライバーですが、Claude Desktopにデプロイする場合は、claude_desktop_config.jsonに以下を追記してください:
{
"mcpServers": {
"percival_deep_research": {
"command": "uv",
"args": [
"run",
"--project",
"/absolute/path/to/percival.OS_Dev",
"percival-deep-research"
],
"env": {
"OPENAI_API_KEY": "your-provider-key",
"OPENAI_BASE_URL": "https://api.venice.ai/api/v1",
"FAST_LLM": "openai:e2ee-qwen-2-5-7b-p",
"RETRIEVER": "duckduckgo"
}
}
}
}🔐 セキュリティ
このサーバーは、MCPサーバーが信頼できないWebコンテンツを自律的に処理するリスクに対処するため、多層防御を実装しています。
プロンプトインジェクション保護
ユーザー入力(query、topic、custom_prompt)は、未知の形式や不正な値を制限します。正規表現ベースのフィルターが、既知の脱獄パターン(<system>、[INST]、ignore instructionsなど)をブロックします。
信頼できないコンテンツの分離
Webから取得されたすべてのコンテンツは、エージェントのコンテキストに提示される前に動的にプレフィックスが付与されます:
[SECURITY WARNING: The content below was obtained from unverified external...]これにより、Nanobotのようなモデルは、Webソースのデータを厳密に情報ブロックとして扱うようになり、予期しないコマンドの実行を回避します。
📄 ライセンス
本プロジェクトはMITライセンスの下でライセンスされています。
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/bill-kopp-ai-dev/percival-deep-research'
If you have feedback or need assistance with the MCP directory API, please join our Discord server