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

Percival Deep Research

🔍 Percival Deep Research (Servidor MCP)

Python License: MIT

Descripción general

Percival Deep Research es un servidor MCP (Model Context Protocol) de alta capacidad diseñado para dotar al ecosistema de agentes Nanobot de capacidades de investigación web autónoma y profunda. Explora y valida de forma autónoma numerosas fuentes, centrándose únicamente en información relevante, confiable y actualizada.

Mientras que las herramientas de búsqueda estándar devuelven fragmentos sin procesar que requieren filtrado manual, Percival Deep Research ofrece material completo, razonado y de múltiples fuentes que acelera significativamente las capacidades de contexto y razonamiento de los agentes inteligentes.

Nota: Este proyecto utiliza la biblioteca GPT Researcher como su motor web principal, pero ha sido ampliamente refactorizado, endurecido y desacoplado específicamente para el ecosistema percival.OS.


✨ Características y mejoras clave

Este servidor ha sido modificado profundamente para sobrevivir a las estrictas demandas de los LLM de código abierto y las matrices de despliegue modernas:

  • ⚡ Portabilidad definitiva de proveedores: Motor de inferencia totalmente agnóstico. Soporte nativo y sin fallos para plataformas líderes de pesos abiertos como Venice AI, MiniMax y OpenRouter. Hemos implementado un Persona Bypass personalizado que elimina por completo los notorios fallos de validación de diccionarios JSON causados anteriormente por modelos que no son de OpenAI durante la orquestación de la investigación.

  • 🛡️ Barandillas del protocolo JSON-RPC: Aplica una redacción estricta de la salida stdio. Todo el ruido de la biblioteca subyacente, el renderizado de consola y los registros en tiempo real se redirigen físicamente a stderr. Esto evita por completo los Pydantic ValidationErrors y protege el flujo stdout que es vital para la sincronización de MCP.

  • 🔐 Seguridad de defensa en profundidad: Todas las entradas están fuertemente saneadas contra la inyección de prompts. El contenido web no confiable se envuelve en encabezados no ejecutables para proteger la autonomía de su agente.

  • 🤖 Enfoque principal en Nanobot: Elimina los patrones de lectura de .env sueltos para respetar estrictamente la inyección de entorno directamente desde la aplicación host.


📑 Tabla de contenidos


🛠️ Referencia de herramientas y recursos

Recurso

Nombre

Patrón de URI

Descripción

research_resource

research://{topic}

Accede al contexto de investigación web en caché o en vivo para un tema directamente como un recurso MCP. Devuelve Markdown con contenido y fuentes.

Herramientas

Herramienta

Velocidad

Devuelve research_id

Descripción

deep_research

30–120s

✅ Sí

Investigación web profunda de múltiples fuentes. Punto de entrada de la tubería de investigación.

quick_search

3–10s

❌ No

Búsqueda rápida de fragmentos sin procesar a través de DuckDuckGo.

write_report

10–30s

Genera un informe Markdown estructurado a partir de una sesión existente. Requiere research_id.

get_research_sources

<1s

Devuelve el título, la URL y el tamaño del contenido de todas las fuentes consultadas. Requiere research_id.

get_research_context

<1s

Devuelve el texto de contexto sintetizado sin procesar sin generar un informe. Requiere research_id.

Tubería de investigación

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

⚙️ Requisitos previos

  • Python 3.11+

  • uv — gestor de proyectos y dependencias

  • Clave de API para el proveedor de LLM generativo (ej. Venice, MiniMax, OpenRouter).

Nota: El motor de búsqueda web predeterminado configurado es duckduckgo, que no requiere clave de API. Opcionalmente, puede configurar otros buscadores web de forma nativa.


⚙️ Instalación

1. Configuración del entorno unificado

Asegúrese de estar utilizando el ecosistema de compilación unificado percival.OS:

cd percival.OS_Dev
uv sync

Esto asegura que percival-deep-research herede el .venv global.

2. Configurar el entorno

Este módulo deshabilita la carga de .env (dotenv) para respetar estrictamente las variables de sistema pasadas por su host MCP.

Al invocar a través de Nanobot (~/.nanobot/config.json) u otros puntos finales, defina las variables de entorno directamente en la matriz de configuración:

"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

DEBE prefijar los modelos LLM con openai: independientemente de su proveedor real. Esto utiliza la arquitectura de transporte del SDK de OpenAI subyacente, que canaliza de forma segura a través de su OPENAI_BASE_URL configurado. No usar el prefijo bloqueará el analizador interno JSON.


🤖 Integración con Nanobot (Enfoque principal)

Este servidor está fundamentalmente ajustado para ejecutarse como un servidor MCP stdio pilotado por el asistente Nanobot.

Agregue lo siguiente a su ~/.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
    }
  }
}

Nota: deep_research puede tardar de 2 a 3 minutos. Asegúrese de que tool_timeout esté escalado correctamente (ej. 180-300).

Decisiones clave de diseño para Nanobot

  • Texto plano sobre diccionarios JSON — Todas las herramientas devuelven de forma predecible cadenas de texto plano en lugar de diccionarios JSON para alimentar a Nanobot con texto limpio.

  • Modularidad del contextodeep_research omite el contexto sintetizado gigante de su respuesta de inicialización para evitar saturar la ventana de contexto de Nanobot. En su lugar, emite un research_id que el agente utiliza luego para invocar explícitamente get_research_context.


💻 Integración con Claude Desktop

Aunque Nanobot es el controlador preferido, si se despliega en Claude Desktop, añada a su 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"
      }
    }
  }
}

🔐 Seguridad

Este servidor implementa defensa en profundidad, abordando los riesgos de que un servidor MCP procese contenido web no confiable de forma autónoma.

Protección contra inyección de prompts

Las entradas del usuario (query, topic, custom_prompt) restringen valores desconocidos y malformados. Un filtro basado en expresiones regulares bloquea patrones de jailbreak conocidos (<system>, [INST], ignore instructions, etc.).

Aislamiento de contenido no confiable

Todo el contenido recuperado de la web se prefija dinámicamente antes de ser presentado al contexto del agente:

[SECURITY WARNING: The content below was obtained from unverified external...]

Esto obliga a modelos como Nanobot a tratar los datos obtenidos de la web estrictamente como bloques informativos, evitando el cumplimiento inesperado de comandos.


📄 Licencia

Este proyecto está bajo la Licencia 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