PubTator MCP Server

Um servidor para anotação de literatura biomédica e mineração de relacionamentos, baseado no PubTator3.

Documentação

Servidor MCP PubTator

smithery badge

🔍 Um servidor de mineração de relacionamentos e anotação de literatura biomédica baseado no PubTator3, fornecendo acesso conveniente por meio da interface MCP.

O PubTator MCP Server fornece aos assistentes de IA acesso ao sistema de anotação de literatura biomédica PubTator3 por meio do Model Context Protocol (MCP). Ele permite que modelos de IA pesquisem literatura científica programaticamente, obtenham informações de anotação e analisem relacionamentos entre entidades.

🤝 Contribua • 📝 Relate Problemas

✨ Recursos Principais

  • 🔎 Exportação de Anotações de Literatura: Suporte à exportação de resultados de anotação do PubTator em múltiplos formatos ✅
  • 🚀 Consulta de ID de Entidade: Consulte identificadores padrão para conceitos biológicos por meio de texto livre ✅
  • 📊 Mineração de Relacionamentos: Descubra relacionamentos biomédicos entre entidades ✅
  • 📄 Pesquisa de Literatura: Suporte à recuperação de literatura por palavras-chave e IDs de entidades ✅
  • 🧠 Processamento em Lote: Suporte à exportação em lote de informações de anotação a partir de resultados de pesquisa ✅

🚀 Início Rápido

Requisitos

  • Python 3.10+
  • Biblioteca FastMCP

Instalação

Via Smithery

Use Smithery para instalar automaticamente o PubTator Server:

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

Cole em Configurações → Configurações do Cursor → MCP → Adicionar novo 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 "{}"
CLine
npx -y @smithery/cli@latest install @JackKuo666/pubtator-mcp-server --client cline --config "{}"

Instalação Manual

  1. Clone o repositório:

    git clone https://github.com/JackKuo666/PubTator-MCP-Server.git
    cd PubTator-MCP-Server
    
  2. Instale as dependências:

    pip install -r requirements.txt
    

📊 Uso

Executando o Servidor Diretamente

Inicie o servidor MCP:

python pubtator_server.py

O servidor agora suporta transportes stdio e TCP. Por padrão, ele usa o transporte TCP. Você pode configurar as seguintes variáveis de ambiente:

  • MCP_TRANSPORT: Defina como "tcp" para transporte TCP ou "stdio" para transporte stdio (o padrão é "tcp")
  • MCP_HOST: O host ao qual vincular (o padrão é "0.0.0.0")
  • MCP_PORT: A porta para escutar (o padrão é 8080)

Exemplo de inicialização do servidor com configurações personalizadas:

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

O servidor implementa inicialização preguiçosa e tratamento adequado de erros. Ele lidará graciosamente com sinais de desligamento (SIGINT e SIGTERM) e registrará quaisquer erros que ocorram durante a inicialização ou operação.

Usando Docker

Fornecemos um Dockerfile para implantação fácil. Para usar o contêiner Docker:

  1. Construa a imagem Docker:

    docker build -t pubtator-mcp-server .
    
  2. Execute o contêiner Docker:

    docker run -p 8080:8080 pubtator-mcp-server
    

Isso iniciará o servidor MCP PubTator dentro de um contêiner Docker, expondo-o na porta 8080.

Solução de Problemas

Se você encontrar problemas ao iniciar o servidor:

  1. Verifique a saída do console para mensagens de erro.
  2. Certifique-se de que todas as dependências necessárias estejam instaladas (consulte a seção Requisitos).
  3. Verifique se as variáveis de ambiente estão configuradas corretamente.
  4. Se o servidor falhar ao iniciar, tente executá-lo com verbosidade aumentada:
python -v pubtator_server.py

Isso fornecerá informações de registro mais detalhadas para ajudar a identificar a origem de quaisquer problemas.

Ao usar Docker, você pode verificar os logs com:

docker logs <container_id>

Configuração

Configuração do Claude Desktop

Adicione a claude_desktop_config.json:

(Mac OS)

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

(Windows)

{
  "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": []
    }
  }
}

Configuração do 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 usar o transporte TCP, modifique a configuração da seguinte forma:

{
  "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": []
    }
  }
}

🛠 Recursos da API

O PubTator MCP Server fornece os seguintes recursos principais:

1. Exportar Publicações (export_publications)

Exporte resultados de anotação do PubTator para 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. Consulta de ID de Entidade (find_entity_id)

Consulte identificadores padrão para conceitos biológicos por meio de texto livre:

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

3. Consulta de Relacionamentos (find_related_entities)

Encontre outras entidades relacionadas a uma entidade especificada:

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. Pesquisa de Literatura (search_pubtator)

Pesquise no banco de dados PubTator:

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

5. Exportação em Lote (batch_export_from_search)

Pesquise e exporte anotações de literatura em lote:

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

Observação: As chamadas de função reais podem variar dependendo da sua implementação. Esses exemplos são baseados em nossos testes recentes e podem precisar ser ajustados para corresponder à sua API exata.

⚠️ Limitações de Uso

  • Limite de taxa de solicitação da API: máximo de 3 solicitações por segundo
  • Ao exportar em lote, use um batch_size razoável para evitar tempo limite de solicitação
  • Para consultas de relacionamento, os IDs de entidade devem começar com "@", por exemplo, "@DISEASE_COVID-19"

📄 Licença

Este projeto é licenciado sob a Licença MIT.

⚠️ Aviso Legal

Esta ferramenta é apenas para fins de pesquisa. Por favor, cumpra os termos de serviço do PubTator e use esta ferramenta com responsabilidade.