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 STRINGget_network_interactions(): Obter dados de interação de redeget_network_image(): Gerar imagens de visualização de redeget_interaction_partners(): Encontrar todos os parceiros de interaçãoget_functional_enrichment(): Realizar análise de enriquecimentoget_functional_annotation(): Obter anotações funcionaisget_protein_similarity(): Calcular pontuações de similaridadeget_ppi_enrichment(): Testar enriquecimento de PPIget_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çãoXML: Formato XMLIMAGE: Imagens de visualização de redeSVG: Gráficos vetoriais escaláveisPSI_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
- Faça um fork do repositório
- Crie um branch de recurso
- Faça suas alterações
- Adicione testes
- Execute a suíte de testes
- 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
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
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.