Skip to main content
Glama
bill-kopp-ai-dev

Percival Deep Research

🔍 Percival Deep Research (MCP-сервер)

Python License: MIT

Обзор

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

Описание

research_resource

research://{topic}

Доступ к кэшированному или актуальному контексту веб-исследования по теме напрямую как к ресурсу MCP. Возвращает Markdown с контентом и источниками.

Инструменты

Инструмент

Скорость

Возвращает research_id

Описание

deep_research

30–120 с

✅ Да

Глубокое веб-исследование по нескольким источникам. Точка входа в конвейер исследования.

quick_search

3–10 с

❌ Нет

Быстрый поиск «сырых» фрагментов через DuckDuckGo.

write_report

10–30 с

Генерирует структурированный отчет в формате Markdown на основе существующей сессии. Требует research_id.

get_research_sources

<1 с

Возвращает заголовок, URL и объем контента для всех изученных источников. Требует research_id.

get_research_context

<1 с

Возвращает «сырой» синтезированный контекстный текст без генерации отчета. Требует research_id.

Конвейер исследования

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"
WARNING

ВыОБЯЗАНЫ добавлять префикс 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.

-
security - not tested
A
license - permissive license
-
quality - not tested

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