STRING-MCP

Interaja com a API do banco de dados de interação proteína-proteína STRING.

Documentação

STRING-MCP

Um pacote Python abrangente para interagir com a API do banco de dados STRING por meio de uma ponte Model Context Protocol (MCP).

Instalação

Instale o pacote em modo de desenvolvimento:

pip install -e .

Ou instale a partir do PyPI (quando disponível):

pip install string-mcp

Configuração do Claude

  "mcpServers": {
    "string-mcp": {
      "command": "/path/to/python/env/bin/string-mcp-server",
      "env": {}
    }
  }
}

Uso

Servidor MCP (Caso de Uso Principal)

O pacote fornece um servidor MCP para integração com clientes compatíveis com MCP:

# Run the MCP server
string-mcp-server

O servidor MCP fornece as seguintes ferramentas:

  • map_identifiers: Mapear identificadores de proteínas para IDs STRING
  • get_network_interactions: Obter dados de interações de rede
  • get_functional_enrichment: Realizar análise de enriquecimento funcional
  • get_network_image: Gerar imagens de visualização de rede
  • get_version_info: Obter informações da versão do banco de dados STRING

Interface de Linha de Comando

O pacote também fornece um comando string-mcp para uso autônomo:

# Run demo
string-mcp demo

# Get help
string-mcp --help

# Map protein identifiers
string-mcp map TP53 BRCA1 EGFR --species 9606

# Get network interactions
string-mcp network TP53 BRCA1 --species 9606

# Generate network image
string-mcp image TP53 BRCA1 --output network.png --species 9606

API Python

from stringmcp.main import StringDBBridge

# Initialize the bridge
bridge = StringDBBridge()

# Map protein identifiers
proteins = ["TP53", "BRCA1", "EGFR"]
mapped = bridge.map_identifiers(proteins, species=9606)  # 9606 = human

# Get network interactions
interactions = bridge.get_network_interactions(proteins, species=9606)

# Perform functional enrichment
enrichment = bridge.get_functional_enrichment(proteins, species=9606)

Recursos

  • Mapeamento de Identificadores de Proteínas: Converter vários identificadores de proteínas para IDs STRING
  • Análise de Rede: Recuperar redes de interação proteína-proteína
  • Enriquecimento Funcional: Realizar análise de enriquecimento de ontologia genética e vias
  • Visualização de Rede: Gerar imagens de rede em vários formatos
  • Parceiros de Interação: Encontrar todos os parceiros de interação para proteínas
  • Anotações Funcionais: Obter anotações funcionais detalhadas
  • Similaridade de Proteínas: Calcular pontuações de similaridade entre proteínas
  • Enriquecimento de PPI: Testar enriquecimento de interação proteína-proteína
  • Integração MCP: Implementação completa do servidor Model Context Protocol

Métodos da API

Métodos Principais

  • map_identifiers(): Mapear identificadores de proteínas para IDs STRING
  • get_network_interactions(): Obter dados de interação de rede
  • get_network_image(): Gerar imagens de visualização de rede
  • get_interaction_partners(): Encontrar todos os parceiros de interação
  • get_functional_enrichment(): Realizar análise de enriquecimento
  • get_functional_annotation(): Obter anotações funcionais
  • get_protein_similarity(): Calcular pontuações de similaridade
  • get_ppi_enrichment(): Testar enriquecimento de PPI
  • get_version_info(): Obter versão do banco de dados STRING

Configuração

O pacote usa uma classe StringConfig para configuração:

from stringmcp.main import StringConfig, StringDBBridge

config = StringConfig(
    base_url="https://string-db.org/api",
    version_url="https://version-12-0.string-db.org/api",
    caller_identity="my_app",
    request_delay=1.0  # Delay between requests in seconds
)

bridge = StringDBBridge(config)

Formatos de Saída

O pacote suporta vários formatos de saída:

  • JSON: Dados estruturados (padrão)
  • TSV: Valores separados por tabulação
  • XML: Formato XML
  • IMAGE: Imagens de visualização de rede
  • SVG: Gráficos vetoriais escaláveis
  • PSI_MI: Formato PSI-MI

Suporte a Espécies

O pacote suporta todas as espécies disponíveis no STRING. IDs de espécies comuns:

  • Humano: 9606
  • Camundongo: 10090
  • Rato: 10116
  • Levedura: 4932
  • E. coli: 511145

Configuração do Servidor MCP

Para usar o servidor MCP com um cliente MCP, configure-o da seguinte forma:

{
  "mcpServers": {
    "string-mcp": {
      "command": "string-mcp-server",
      "env": {}
    }
  }
}

O servidor lidará automaticamente com:

  • Comunicação JSON-RPC
  • Descoberta e invocação de ferramentas
  • Tratamento e relatório de erros
  • Codificação Base64 para dados de imagem

Desenvolvimento

Configurar Ambiente de Desenvolvimento

# Install in development mode with dev dependencies
pip install -e .[dev]

# Format code
black stringmcp/

# Type checking
mypy stringmcp/

# Lint code
flake8 stringmcp/

Nota: Os arquivos de teste não estão atualmente incluídos neste repositório. Para adicionar testes, crie um diretório tests/ e adicione arquivos de teste seguindo a configuração do pytest em pyproject.toml.

Estrutura do Projeto

STRINGmcp/
├── pyproject.toml          # Package configuration and dependencies
├── README.md              # This file
├── LICENSE                # MIT License
├── .gitignore             # Git ignore patterns
├── stringmcp/             # Main package
│   ├── __init__.py        # Package initialization
│   └── main.py            # Core STRING API bridge and MCP server
└── string_mcp.egg-info/   # Package metadata (generated during install)
    ├── PKG-INFO           # Package information
    ├── SOURCES.txt        # Source files list
    ├── dependency_links.txt
    ├── entry_points.txt   # CLI entry points
    ├── requires.txt       # Dependencies
    └── top_level.txt      # Top-level package names

Licença

Licença MIT - consulte o arquivo LICENSE para obter detalhes.

Contribuindo

  1. Faça um fork do repositório
  2. Crie um branch de recurso
  3. Faça suas alterações
  4. Adicione testes
  5. Execute a suíte de testes
  6. Envie um pull request

Suporte

Para problemas e perguntas, use o rastreador de problemas do GitHub.

Exemplo de Uso

Análise Completa de Proteínas de Reparo de DNA

Este exemplo demonstra a funcionalidade abrangente da ponte MCP STRING-DB ao analisar um conjunto de proteínas humanas bem conhecidas de reparo de DNA: TP53, BRCA1, BRCA2, ATM e ATR.

2. Mapeamento de Identificadores de Proteínas

Mapeie símbolos de genes para identificadores STRING:

[
  {
    "queryIndex": 0,
    "queryItem": "TP53",
    "stringId": "9606.ENSP00000269305",
    "ncbiTaxonId": 9606,
    "taxonName": "Homo sapiens",
    "preferredName": "TP53",
    "annotation": "Cellular tumor antigen p53; Acts as a tumor suppressor in many tumor types; induces growth arrest or apoptosis depending on the physiological circumstances and cell type..."
  },
  {
    "queryIndex": 1,
    "queryItem": "BRCA1",
    "stringId": "9606.ENSP00000418960",
    "ncbiTaxonId": 9606,
    "taxonName": "Homo sapiens",
    "preferredName": "BRCA1",
    "annotation": "Breast cancer type 1 susceptibility protein; E3 ubiquitin-protein ligase that specifically mediates the formation of 'Lys-6'-linked polyubiquitin chains..."
  },
  {
    "queryIndex": 2,
    "queryItem": "BRCA2",
    "stringId": "9606.ENSP00000369497",
    "ncbiTaxonId": 9606,
    "taxonName": "Homo sapiens",
    "preferredName": "BRCA2",
    "annotation": "Breast cancer type 2 susceptibility protein; Involved in double-strand break repair and/or homologous recombination..."
  },
  {
    "queryIndex": 3,
    "queryItem": "ATM",
    "stringId": "9606.ENSP00000278616",
    "ncbiTaxonId": 9606,
    "taxonName": "Homo sapiens",
    "preferredName": "ATM",
    "annotation": "Serine-protein kinase ATM; Serine/threonine protein kinase which activates checkpoint signaling upon double strand breaks..."
  },
  {
    "queryIndex": 4,
    "queryItem": "ATR",
    "stringId": "9606.ENSP00000343741",
    "ncbiTaxonId": 9606,
    "taxonName": "Homo sapiens",
    "preferredName": "ATR",
    "annotation": "Serine/threonine-protein kinase ATR; Serine/threonine protein kinase which activates checkpoint signaling upon genotoxic stresses..."
  }
]

3. Rede de Interação Proteína-Proteína

Examine as interações de rede entre essas proteínas:

[
  {
    "stringId_A": "9606.ENSP00000269305",
    "stringId_B": "9606.ENSP00000369497",
    "preferredName_A": "TP53",
    "preferredName_B": "BRCA2",
    "score": 0.995
  },
  {
    "stringId_A": "9606.ENSP00000269305",
    "stringId_B": "9606.ENSP00000343741",
    "preferredName_A": "TP53",
    "preferredName_B": "ATR",
    "score": 0.996
  },
  {
    "stringId_A": "9606.ENSP00000269305",
    "stringId_B": "9606.ENSP00000278616",
    "preferredName_A": "TP53",
    "preferredName_B": "ATM",
    "score": 0.999
  },
  {
    "stringId_A": "9606.ENSP00000269305",
    "stringId_B": "9606.ENSP00000418960",
    "preferredName_A": "TP53",
    "preferredName_B": "BRCA1",
    "score": 0.999
  },
  {
    "stringId_A": "9606.ENSP00000278616",
    "stringId_B": "9606.ENSP00000369497",
    "preferredName_A": "ATM",
    "preferredName_B": "BRCA2",
    "score": 0.995
  },
  {
    "stringId_A": "9606.ENSP00000278616",
    "stringId_B": "9606.ENSP00000418960",
    "preferredName_A": "ATM",
    "preferredName_B": "BRCA1",
    "score": 0.999
  },
  {
    "stringId_A": "9606.ENSP00000278616",
    "stringId_B": "9606.ENSP00000343741",
    "preferredName_A": "ATM",
    "preferredName_B": "ATR",
    "score": 0.999
  },
  {
    "stringId_A": "9606.ENSP00000343741",
    "stringId_B": "9606.ENSP00000369497",
    "preferredName_A": "ATR",
    "preferredName_B": "BRCA2",
    "score": 0.831
  },
  {
    "stringId_A": "9606.ENSP00000343741",
    "stringId_B": "9606.ENSP00000418960",
    "preferredName_A": "ATR",
    "preferredName_B": "BRCA1",
    "score": 0.996
  },
  {
    "stringId_A": "9606.ENSP00000369497",
    "stringId_B": "9606.ENSP00000418960",
    "preferredName_A": "BRCA2",
    "preferredName_B": "BRCA1",
    "score": 0.999
  }
]

Principais Descobertas: Todas as interações mostram pontuações de confiança muito altas (>0,8), com a maioria excedendo 0,99, indicando que essas proteínas formam um módulo funcional fortemente interconectado.

4. Estatísticas da Rede

Verifique se esta rede é significativamente enriquecida para interações:

{
  "number_of_nodes": 5,
  "number_of_edges": 10,
  "average_node_degree": 4.0,
  "local_clustering_coefficient": 1.0,
  "expected_number_of_edges": 5,
  "p_value": 0.0122
}

Significância Estatística: A rede mostra agrupamento perfeito (coeficiente = 1,0) e é significativamente enriquecida para interações (p = 0,0122), com o dobro de arestas do que o esperado ao acaso.

5. Análise de Enriquecimento Funcional

Analise quais vias biológicas estão enriquecidas neste conjunto de proteínas:

Principais Vias de Reparo de DNA (Resultados Selecionados):

[
  {
    "category": "Process",
    "term": "GO:0071479",
    "number_of_genes": 5,
    "preferredNames": ["TP53", "ATM", "ATR", "BRCA2", "BRCA1"],
    "p_value": 9.72e-13,
    "fdr": 1.52e-08,
    "description": "Cellular response to ionizing radiation"
  },
  {
    "category": "Process",
    "term": "GO:0042770",
    "number_of_genes": 5,
    "preferredNames": ["TP53", "ATM", "ATR", "BRCA2", "BRCA1"],
    "p_value": 1.69e-11,
    "fdr": 1.32e-07,
    "description": "Signal transduction in response to DNA damage"
  },
  {
    "category": "Process",
    "term": "GO:0006281",
    "number_of_genes": 5,
    "preferredNames": ["TP53", "ATM", "ATR", "BRCA2", "BRCA1"],
    "p_value": 1.05e-08,
    "fdr": 1.10e-05,
    "description": "DNA repair"
  },
  {
    "category": "KEGG",
    "term": "hsa03440",
    "number_of_genes": 3,
    "preferredNames": ["ATM", "BRCA2", "BRCA1"],
    "p_value": 8.34e-08,
    "fdr": 2.80e-05,
    "description": "Homologous recombination"
  },
  {
    "category": "KEGG",
    "term": "hsa04115",
    "number_of_genes": 3,
    "preferredNames": ["TP53", "ATM", "ATR"],
    "p_value": 5.27e-07,`
    "fdr": 5.44e-05,`
    "description": "p53 signaling pathway"
  }
]

Associações a Doenças:

[
  {
    "category": "DISEASES",
    "term": "DOID:1612",
    "number_of_genes": 4,
    "preferredNames": ["TP53", "ATM", "BRCA2", "BRCA1"],
    "p_value": 5.72e-10,
    "fdr": 2.02e-06,
    "description": "Breast cancer"
  },
  {
    "category": "DISEASES",
    "term": "DOID:3012",
    "number_of_genes": 3,
    "preferredNames": ["TP53", "BRCA2", "BRCA1"],
    "p_value": 6.59e-10,
    "fdr": 2.02e-06,
    "description": "Li-Fraumeni syndrome"
  }
]

O pacote pode gerar visualizações de rede de interação de proteínas mostrando associações funcionais baseadas em evidências.

Exemplo de Visualização de Rede: Ver Rede de Interação de Proteínas DNA Repair Protein Network Esta visualização mostra a rede de interação proteína-proteína para TP53, BRCA1, BRCA2, ATM e ATR com interações de alta confiança (pontuação ≥ 400).

7. Visualização de Enriquecimento Funcional

O pacote também pode criar gráficos de dispersão de enriquecimento mostrando os processos biológicos mais significativamente enriquecidos.

Exemplo de Visualização de Enriquecimento: Ver Gráfico de Enriquecimento Funcional Functional Enrichment Plot

Esta visualização exibe os 10 processos biológicos e vias mais significativamente enriquecidos para o conjunto de proteínas de reparo de DNA, mostrando valores de p e contagens de genes para cada termo enriquecido.

Resumo

Esta análise abrangente demonstra que a ponte MCP STRING-DB com sucesso:

  • Identificou todas as 5 proteínas de reparo de DNA com anotações detalhadas
  • Descobriu 10 interações de proteínas de alta confiança (todas com pontuação >0,8)
  • Revelou enriquecimentos significativos de vias com valores de p < 1e-8
  • Confirmou a significância estatística da rede (p = 0,0122)
  • Gerou visualizações de rede e de enriquecimento

Os resultados validam essas proteínas como um módulo central de resposta a danos no DNA, com enriquecimento excepcionalmente forte para:

  • Resposta celular à radiação ionizante (p = 1,52e-8)
  • Sinalização de danos ao DNA (p = 1,32e-7)
  • Recombinação homóloga (p = 2,8e-5)
  • Via de sinalização p53 (p = 5,44e-5)
  • Associações a câncer de mama (p = 2,02e-6)v Isso demonstra a funcionalidade completa da ponte MCP STRING-DB para análise de redes de interação de proteínas e anotação funcional.