Percival Deep Research
🔍 Percival Deep Research (MCP-сервер)
Обзор
Percival Deep Research — это мощный MCP-сервер (Model Context Protocol), разработанный для оснащения экосистемы агентов Nanobot возможностями автономного глубокого веб-исследования. Он самостоятельно изучает и проверяет многочисленные источники, фокусируясь только на актуальной, достоверной и свежей информации.
В то время как стандартные инструменты поиска возвращают «сырые» фрагменты, требующие ручной фильтрации, Percival Deep Research предоставляет полностью обоснованный, всесторонний материал из нескольких источников, что значительно расширяет контекстные и аналитические возможности интеллектуальных агентов.
Примечание: В этом проекте в качестве основного веб-драйвера используется библиотека GPT Researcher, однако она была существенно переработана, усилена и адаптирована специально для экосистемы
percival.OS.
✨ Ключевые особенности и улучшения
Этот сервер был значительно модифицирован, чтобы соответствовать строгим требованиям open-source LLM и современных сред развертывания:
⚡ Максимальная переносимость провайдеров: Полностью независимый движок вывода. Нативная поддержка без сбоев ведущих платформ с открытыми весами, таких как Venice AI, MiniMax и OpenRouter. Мы реализовали специальный обход персоны (Persona Bypass), который полностью устраняет печально известные ошибки валидации JSON-словарей, ранее возникавшие при работе с моделями не от OpenAI во время оркестрации исследований.
🛡️ Защитные механизмы протокола JSON-RPC: Обеспечивает строгое подавление вывода в
stdio. Весь «шум» базовых библиотек, рендеринг консоли и логи в реальном времени физически перенаправляются вstderr. Это полностью предотвращаетPydantic ValidationErrorsи защищает потокstdout, который жизненно важен для синхронизации MCP.🔐 Эшелонированная защита: Все входные данные тщательно очищаются от попыток инъекции промптов. Недоверенный веб-контент оборачивается в неисполняемые заголовки для защиты автономности вашего агента.
🤖 Фокус на Nanobot: Исключает использование шаблонов чтения
.env, чтобы строго соблюдать внедрение переменных окружения непосредственно из хост-приложения.
📑 Содержание
🛠️ Справочник инструментов и ресурсов
Ресурс
Имя | Шаблон URI | Описание |
|
| Доступ к кэшированному или актуальному контексту веб-исследования по теме напрямую как к ресурсу MCP. Возвращает Markdown с контентом и источниками. |
Инструменты
Инструмент | Скорость | Возвращает | Описание |
| 30–120 с | ✅ Да | Глубокое веб-исследование по нескольким источникам. Точка входа в конвейер исследования. |
| 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 — менеджер проектов и зависимостей
API-ключ для провайдера генеративных LLM (например, Venice, MiniMax, OpenRouter).
Примечание: По умолчанию настроена поисковая система duckduckgo, которая не требует API-ключа. Вы можете дополнительно настроить другие поисковые системы нативно.
⚙️ Установка
1. Настройка единой среды
Убедитесь, что вы используете единую экосистему сборки percival.OS:
cd percival.OS_Dev
uv syncЭто гарантирует, что percival-deep-research наследует глобальный .venv.
2. Настройка окружения
Этот модуль отключает загрузку .env (dotenv), чтобы строго соблюдать системные переменные, передаваемые вашим MCP-хостом.
При вызове через 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"ВыОБЯЗАНЫ добавлять префикс openai: к моделям LLM, независимо от вашего реального провайдера. Это использует базовую архитектуру транспорта OpenAI SDK, которая безопасно передает данные через ваш настроенный OPENAI_BASE_URL. Неиспользование префикса приведет к сбою внутреннего парсера JSON.
🤖 Интеграция с Nanobot (основной фокус)
Этот сервер фундаментально настроен на работу в качестве stdio MCP-сервера, управляемого ассистентом Nanobot.
Добавьте следующее в ваш ~/.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-словарей — Все инструменты предсказуемо возвращают строки обычного текста, а не JSON-словари, чтобы предоставлять Nanobot чистый текст.
Модульность контекста —
deep_researchопускает огромный синтезированный контекст из своего ответа при инициализации, чтобы не переполнять контекстное окно Nanobot. Вместо этого он выдаетresearch_id, который агент затем использует для явного вызоваget_research_context.
💻 Интеграция с 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-сервер автономно обрабатывает недоверенный веб-контент.
Защита от инъекции промптов
Входные данные пользователя (query, topic, custom_prompt) ограничивают неизвестные и некорректные значения. Фильтр на основе регулярных выражений блокирует известные шаблоны джейлбрейка (<system>, [INST], ignore instructions и т.д.).
Изоляция недоверенного контента
Весь контент, полученный из сети, динамически снабжается префиксом перед тем, как быть представленным в контексте агента:
[SECURITY WARNING: The content below was obtained from unverified external...]Это заставляет такие модели, как Nanobot, рассматривать данные из сети строго как информационные блоки, избегая непредвиденного выполнения команд.
📄 Лицензия
Этот проект лицензирован по лицензии 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