UniProt MCP Server

Acesse informações de proteínas do UniProt, incluindo dados de função e sequência.

Documentação

MseeP.ai Security Assessment Badge

Servidor MCP da UniProt

Um servidor Model Context Protocol (MCP) que fornece acesso às informações de proteínas da UniProt. Este servidor permite que assistentes de IA obtenham informações sobre função e sequência de proteínas diretamente da UniProt.

UniProt Server MCP server

Recursos

  • Obter informações de proteínas pelo número de acesso da UniProt
  • Recuperação em lote de múltiplas proteínas
  • Cache para melhor desempenho (TTL de 24 horas)
  • Tratamento de erros e registro de logs
  • As informações incluem:
    • Nome da proteína
    • Descrição da função
    • Sequência completa
    • Comprimento da sequência
    • Organismo

Início Rápido

  1. Certifique-se de ter Python 3.10 ou superior instalado
  2. Clone este repositório:
    git clone https://github.com/TakumiY235/uniprot-mcp-server.git
    cd uniprot-mcp-server
    
  3. Instale as dependências:
    # Using uv (recommended)
    uv pip install -r requirements.txt
    
    # Or using pip
    pip install -r requirements.txt
    

Configuração

Adicione ao arquivo de configuração do Claude Desktop:

  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "uniprot": {
      "command": "uv",
      "args": ["--directory", "path/to/uniprot-mcp-server", "run", "uniprot-mcp-server"]
    }
  }
}

Exemplos de Uso

Após configurar o servidor no Claude Desktop, você pode fazer perguntas como:

Can you get the protein information for UniProt accession number P98160?

Para consultas em lote:

Can you get and compare the protein information for both P04637 and P02747?

Referência da API

Ferramentas

  1. get_protein_info

    • Obter informações de uma única proteína
    • Parâmetro obrigatório: accession (número de acesso da UniProt)
    • Exemplo de resposta:
      {
        "accession": "P12345",
        "protein_name": "Example protein",
        "function": ["Description of protein function"],
        "sequence": "MLTVX...",
        "length": 123,
        "organism": "Homo sapiens"
      }
      
  2. get_batch_protein_info

    • Obter informações de múltiplas proteínas
    • Parâmetro obrigatório: accessions (matriz de números de acesso da UniProt)
    • Retorna uma matriz de objetos com informações das proteínas

Desenvolvimento

Configurando o ambiente de desenvolvimento

  1. Clone o repositório
  2. Crie um ambiente virtual:
    python -m venv .venv
    source .venv/bin/activate  # On Windows: .venv\Scripts\activate
    
  3. Instale as dependências de desenvolvimento:
    pip install -e ".[dev]"
    

Executando testes

pytest

Estilo de código

Este projeto utiliza:

  • Black para formatação de código
  • isort para ordenação de importações
  • flake8 para linting
  • mypy para verificação de tipos
  • bandit para verificações de segurança
  • safety para verificação de vulnerabilidades de dependências

Execute todas as verificações:

black .
isort .
flake8 .
mypy .
bandit -r src/
safety check

Detalhes Técnicos

  • Construído usando o SDK Python do MCP
  • Utiliza httpx para requisições HTTP assíncronas
  • Implementa cache com TTL de 24 horas usando um cache baseado em OrderedDict
  • Lida com limitação de taxa e tentativas
  • Fornece mensagens de erro detalhadas

Tratamento de Erros

O servidor lida com vários cenários de erro:

  • Números de acesso inválidos (respostas 404)
  • Problemas de conexão com a API (erros de rede)
  • Limitação de taxa (respostas 429)
  • Respostas malformadas (erros de análise JSON)
  • Gerenciamento de cache (limites de TTL e tamanho)

Contribuindo

Aceitamos contribuições! Sinta-se à vontade para enviar um Pull Request. Veja como você pode contribuir:

  1. Faça um fork do repositório
  2. Crie sua branch de recurso (git checkout -b feature/amazing-feature)
  3. Faça commit das suas alterações (git commit -m 'Add some amazing feature')
  4. Envie para a branch (git push origin feature/amazing-feature)
  5. Abra um Pull Request

Certifique-se de atualizar os testes conforme apropriado e seguir o estilo de código existente.

Licença

Este projeto é licenciado sob a Licença MIT - consulte o arquivo LICENSE para detalhes.

Agradecimentos

  • UniProt por fornecer a API de dados de proteínas
  • Anthropic pela especificação do Model Context Protocol
  • Contribuidores que ajudam a melhorar este projeto