PubTator-MCP-Server

by JackKuo666
Verified

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

Integrations

  • Provides containerized deployment of the PubTator MCP server with a ready-to-use Dockerfile for easy setup and isolation

  • Requires Python 3.10+ to run the server, with explicit configuration examples and installation instructions for Python environments

  • Supports exporting PubTator annotation results in biocxml format for biomedical literature annotations

Servidor MCP de PubTator

🔍 Un servidor de anotación de literatura biomédica y minería de relaciones basado en PubTator3, que proporciona un acceso conveniente a través de la interfaz MCP.

El servidor MCP de PubTator proporciona a los asistentes de IA acceso al sistema de anotación de literatura biomédica PubTator3 mediante el Protocolo de Contexto de Modelo (MCP). Permite a los modelos de IA buscar literatura científica mediante programación, obtener información de anotaciones y analizar relaciones entre entidades.

🤝 Contribuir • 📝 Informar problemas

✨ Características principales

  • Exportación de anotaciones de literatura: Admite la exportación de resultados de anotaciones de PubTator en múltiples formatos ✅
  • 🚀 Búsqueda de ID de entidad: consulta identificadores estándar para conceptos biológicos a través de texto libre ✅
  • 📊 Minería de Relaciones: Descubre relaciones biomédicas entre entidades ✅
  • 📄 Búsqueda de literatura: Admite la recuperación de literatura mediante palabras clave e ID de entidad ✅
  • 🧠 Procesamiento por lotes: Admite la exportación por lotes de información de anotaciones de los resultados de búsqueda ✅

🚀 Inicio rápido

Requisitos

  • Python 3.10+
  • Biblioteca FastMCP

Instalación

Vía Smithery

Utilice Smithery para instalar automáticamente PubTator Server:

Claude
npx -y @smithery/cli@latest install @JackKuo666/pubtator-mcp-server --client claude --config "{}"
Cursor

Pegar en Configuración → Configuración del cursor → MCP → Agregar nuevo servidor:

  • Mac/Linux
npx -y @smithery/cli@latest run @JackKuo666/pubtator-mcp-server --client cursor --config "{}"
Windsurf
npx -y @smithery/cli@latest install @JackKuo666/pubtator-mcp-server --client windsurf --config "{}"
Línea C
npx -y @smithery/cli@latest install @JackKuo666/pubtator-mcp-server --client cline --config "{}"

Instalación manual

  1. Clonar el repositorio:
    git clone https://github.com/JackKuo666/PubTator-MCP-Server.git cd PubTator-MCP-Server
  2. Instalar dependencias:
    pip install -r requirements.txt

📊 Uso

Ejecutar el servidor directamente

Inicie el servidor MCP:

python pubtator_server.py

El servidor ahora admite los transportes stdio y TCP. De forma predeterminada, utiliza el transporte TCP. Puede configurar las siguientes variables de entorno:

  • MCP_TRANSPORT : Establézcalo en "tcp" para el transporte TCP o "stdio" para el transporte stdio (el valor predeterminado es "tcp")
  • MCP_HOST : El host al que vincularse (el valor predeterminado es "0.0.0.0")
  • MCP_PORT : El puerto para escuchar (el valor predeterminado es 8080)

Ejemplo de inicio del servidor con configuraciones personalizadas:

MCP_TRANSPORT=tcp MCP_HOST=127.0.0.1 MCP_PORT=8888 python pubtator_server.py

El servidor implementa una inicialización diferida y un manejo adecuado de errores. Gestionará correctamente las señales de apagado (SIGINT y SIGTERM) y registrará cualquier error que se produzca durante el inicio o la operación.

Usando Docker

Proporcionamos un Dockerfile para facilitar la implementación. Para usar el contenedor Docker:

  1. Construya la imagen de Docker:
    docker build -t pubtator-mcp-server .
  2. Ejecute el contenedor Docker:
    docker run -p 8080:8080 pubtator-mcp-server

Esto iniciará el servidor PubTator MCP dentro de un contenedor Docker, exponiéndolo en el puerto 8080.

Solución de problemas

Si encuentra algún problema al iniciar el servidor:

  1. Verifique la salida de la consola para ver si hay mensajes de error.
  2. Asegúrese de que todas las dependencias necesarias estén instaladas (consulte la sección Requisitos).
  3. Verifique que las variables de entorno estén configuradas correctamente.
  4. Si el servidor no se inicia, intente ejecutarlo con mayor nivel de detalle:
python -v pubtator_server.py

Esto proporcionará información de registro más detallada para ayudar a identificar la fuente de cualquier problema.

Al usar Docker, puedes comprobar los registros con:

docker logs <container_id>

Configuración

Configuración del escritorio de Claude

Agregar a claude_desktop_config.json :

(Mac OS)

{ "mcpServers": { "pubtator": { "command": "python", "args": ["-m", "pubtator-mcp-server"] } } }

(Ventanas)

{ "mcpServers": { "pubtator": { "command": "C:\\Users\\YOUR\\PATH\\miniconda3\\envs\\mcp_server\\python.exe", "args": [ "D:\\code\\YOUR\\PATH\\PubTator-MCP-Server\\pubtator_server.py" ], "env": {}, "disabled": false, "autoApprove": [] } } }

Configuración de CLine

{ "mcpServers": { "pubtator": { "command": "bash", "args": [ "-c", "source /home/YOUR/PATH/mcp-server-pubtator/.venv/bin/activate && python /home/YOUR/PATH/pubtator_server.py" ], "env": { "MCP_TRANSPORT": "stdio" }, "disabled": false, "autoApprove": [] } } }

Para utilizar el transporte TCP, modifique la configuración de la siguiente manera:

{ "mcpServers": { "pubtator": { "command": "bash", "args": [ "-c", "source /home/YOUR/PATH/mcp-server-pubtator/.venv/bin/activate && python /home/YOUR/PATH/pubtator_server.py" ], "env": { "MCP_TRANSPORT": "tcp", "MCP_HOST": "127.0.0.1", "MCP_PORT": "8888" }, "disabled": false, "autoApprove": [] } } }

🛠 Funciones de la API

El servidor PubTator MCP ofrece las siguientes características principales:

1. Exportar publicaciones (export_publications)

Exportar resultados de anotaciones de PubTator para la literatura PMID especificada:

result = await export_publications( ids=["32133824", "34170578"], id_type="pmid", format="biocjson", # Supported: pubtator, biocxml, biocjson full_text=False # Whether to include full text )

2. Búsqueda de ID de entidad (find_entity_id)

Consulta de identificadores estándar para conceptos biológicos a través de texto libre:

result = await find_entity_id( query="COVID-19", concept="disease", # Optional: gene, disease, chemical, species, mutation limit=5 # Optional: limit number of results )

Buscar otras entidades relacionadas con una entidad específica:

result = await find_related_entities( entity_id="@DISEASE_COVID_19", relation_type="treat", # Optional: treat, cause, interact, etc. target_entity_type="chemical", # Optional: gene, disease, chemical max_results=5 # Optional: limit number of results )

4. Búsqueda bibliográfica (search_pubtator)

Buscar en la base de datos de PubTator:

results = await search_pubtator( query="COVID-19", max_pages=1 # Optional: maximum number of pages to retrieve )

Búsqueda y exportación por lotes de anotaciones bibliográficas:

results = await batch_export_from_search( query="COVID-19", format="biocjson", max_pages=1, full_text=False, batch_size=5 )

Nota: Las llamadas a funciones reales pueden variar según su implementación. Estos ejemplos se basan en nuestras pruebas recientes y podrían requerir ajustes para que coincidan con su API.

⚠️ Limitaciones de uso

  • Límite de frecuencia de solicitudes de API: máximo 3 solicitudes por segundo
  • Al exportar por lotes, utilice un tamaño de lote razonable para evitar el tiempo de espera de la solicitud
  • Para las consultas de relación, los ID de entidad deben comenzar con "@", por ejemplo, "@DISEASE_COVID-19"

📄 Licencia

Este proyecto está licenciado bajo la licencia MIT.

⚠️ Descargo de responsabilidad

Esta herramienta es solo para fines de investigación. Por favor, cumpla con los términos de servicio de PubTator y úsela con responsabilidad.

ID: o73lb2h19m