Agntic AI for Research Papers

Busca y extrae información sobre artículos de investigación de arXiv.

Documentación

MCP Agntic AI para Artículos de Investigación

Este proyecto implementa un chatbot utilizando el Protocolo de Contexto de Modelo (MCP) para buscar y recuperar información sobre artículos de investigación de arXiv. El chatbot permite consultar artículos por tema y extraer información detallada sobre artículos específicos.

Descripción General

El sistema consta de dos componentes principales:

  1. Servidor: Un servidor FastMCP que proporciona herramientas para buscar artículos en arXiv y extraer información de los mismos.
  2. Cliente: Un cliente MCP que se integra con el modelo GPT de OpenAI para procesar consultas de usuarios e interactuar con el servidor.

El servidor almacena información de artículos en archivos JSON organizados por tema, mientras que el cliente proporciona una interfaz de chat interactiva para que los usuarios ingresen consultas.

Características

  • Buscar Artículos: Busca artículos en arXiv por tema, con resultados máximos configurables.
  • Extraer Información de Artículos: Recupera información detallada (título, autores, resumen, URL del PDF, fecha de publicación) para un artículo específico usando su ID de arXiv.
  • Almacenamiento Persistente: La información de los artículos se guarda en archivos JSON bajo un directorio papers, organizados por tema.
  • Chatbot Interactivo: Los usuarios pueden interactuar con el chatbot a través de una interfaz de línea de comandos, con soporte para consultas en lenguaje natural impulsadas por el modelo GPT de OpenAI.

Requisitos

  • Python 3.12+
  • Dependencias (instalar vía uv o pip):
    • arxiv
      • mcp
      • openai
      • nest-asyncio
      • python-dotenv
  • Clave API de OpenAI (almacenada en src/keys.json)
  • uv (recomendado, para ejecutar el servidor y el cliente)

Instalación

  1. Clonar el repositorio:
    git clone <repository-url>
    cd <repository-directory>
    
  2. Instalar dependencias usando uv (recomendado):
    uv pip install -r pyproject.toml
    
    O con pip:
    pip install -r pyproject.toml
    
  3. Crear un archivo src/keys.json con tu clave API de OpenAI:
    {
        "open_ai_api": "your-openai-api-key"
    }
    
  4. Asegurarse de que la configuración del servidor MCP en src/server_config.json esté configurada correctamente:
    {
        "mcpServers": {
            "filesystem": {
                "command": "npx",
                "args": [
                    "-y",
                    "@modelcontextprotocol/server-filesystem",
                    "."
                ]
            },
            "research": {
                "command": "uv",
                "args": ["run", "research_server.py"]
            },
            "fetch": {
                "command": "uvx",
                "args": ["mcp-server-fetch"]
            }
        }
    }
    

Uso

  1. Iniciar el servidor MCP:
    uv run src/research_server.py
    
    Esto ejecuta el servidor con la configuración research, proporcionando herramientas para búsqueda y extracción de artículos.
  2. Ejecutar el cliente en una terminal separada:
    uv run main.py
    
    El cliente se conecta al servidor, inicializa el chatbot e inicia el bucle de chat interactivo.
  3. Interactuar con el chatbot:
    • Ingresa una consulta como "Buscar artículos sobre computación cuántica" o "Obtener información del artículo 1234.56789".
      • Escribe 'quit' para salir.

MCP Server

Estructura del Proyecto

├── papers/                   # Directory for storing paper information (auto-created)
├── src/
│   ├── mcp_chatbot.py        # MCP client with chatbot implementation
│   ├── research_server.py    # FastMCP server with arXiv search tools
│   ├── keys.json             # API keys (not tracked in git)
│   ├── server_config.json    # MCP server configuration
├── README.md
├── main.py                   # Entry point

Consultas de Ejemplo

  • Buscar artículos:
    Query: Find 3 papers on machine learning
    
    Salida: Lista de IDs de artículos, con detalles guardados en papers/machine_learning/papers_info.json.
  • Extraer información de artículos:
    Query: Get info for paper 2103.12345
    
    Salida: Detalles del artículo en formato JSON (título, autores, resumen, etc.) si se encuentra.

Notas

  • El servidor crea un directorio papers para almacenar archivos JSON que contienen información de artículos, organizados por tema (por ejemplo, papers/quantum_computing/papers_info.json).
  • El cliente usa gpt-4o-mini por defecto. Actualiza el modelo en src/mcp_chatbot.py si es necesario.
  • El sistema asume que uv está instalado para ejecutar scripts. Modifica el command en server_config.json si usas una herramienta diferente (por ejemplo, python).

Mejoras Futuras

  • Agregar soporte para filtrar artículos por fecha, autor o categoría.
  • Implementar descarga y almacenamiento de PDFs de artículos.
  • Mejorar el chatbot con mayor comprensión del lenguaje natural para consultas complejas.
  • Agregar una interfaz web para una mejor interacción con el usuario.

Licencia

Este proyecto está licenciado bajo la Licencia MIT. Consulta el archivo LICENSE para más detalles.