STRING-MCP
Interactúa con la API de la base de datos de interacciones proteína-proteína STRING.
Documentación
STRING-MCP
Un paquete integral de Python para interactuar con la API de la base de datos STRING a través de un puente de Protocolo de Contexto de Modelo (MCP).
Instalación
Instale el paquete en modo de desarrollo:
pip install -e .
O instale desde PyPI (cuando esté disponible):
pip install string-mcp
Configuración de Claude
"mcpServers": {
"string-mcp": {
"command": "/path/to/python/env/bin/string-mcp-server",
"env": {}
}
}
}
Uso
Servidor MCP (Caso de Uso Principal)
El paquete proporciona un servidor MCP para la integración con clientes compatibles con MCP:
# Run the MCP server
string-mcp-server
El servidor MCP proporciona las siguientes herramientas:
- map_identifiers: Mapea identificadores de proteínas a IDs de STRING
- get_network_interactions: Obtiene datos de interacciones de red
- get_functional_enrichment: Realiza análisis de enriquecimiento funcional
- get_network_image: Genera imágenes de visualización de redes
- get_version_info: Obtiene información de la versión de la base de datos STRING
Interfaz de Línea de Comandos
El paquete también proporciona un comando string-mcp para uso independiente:
# 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 de 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)
Características
- Mapeo de Identificadores de Proteínas: Convierte varios identificadores de proteínas a IDs de STRING
- Análisis de Redes: Recupera redes de interacción proteína-proteína
- Enriquecimiento Funcional: Realiza análisis de enriquecimiento de ontología génica y rutas metabólicas
- Visualización de Redes: Genera imágenes de redes en varios formatos
- Socios de Interacción: Encuentra todos los socios de interacción de proteínas
- Anotaciones Funcionales: Obtiene anotaciones funcionales detalladas
- Similitud de Proteínas: Calcula puntuaciones de similitud entre proteínas
- Enriquecimiento de PPI: Prueba el enriquecimiento de interacciones proteína-proteína
- Integración MCP: Implementación completa del servidor de Protocolo de Contexto de Modelo
Métodos de la API
Métodos Principales
map_identifiers(): Mapea identificadores de proteínas a IDs de STRINGget_network_interactions(): Obtiene datos de interacciones de redget_network_image(): Genera imágenes de visualización de redesget_interaction_partners(): Encuentra todos los socios de interacciónget_functional_enrichment(): Realiza análisis de enriquecimientoget_functional_annotation(): Obtiene anotaciones funcionalesget_protein_similarity(): Calcula puntuaciones de similitudget_ppi_enrichment(): Prueba el enriquecimiento de PPIget_version_info(): Obtiene la versión de la base de datos STRING
Configuración
El paquete utiliza una clase StringConfig para la configuración:
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 Salida
El paquete admite múltiples formatos de salida:
JSON: Datos estructurados (predeterminado)TSV: Valores separados por tabulacionesXML: Formato XMLIMAGE: Imágenes de visualización de redesSVG: Gráficos vectoriales escalablesPSI_MI: Formato PSI-MI
Soporte de Especies
El paquete admite todas las especies disponibles en STRING. IDs de especies comunes:
- Humano: 9606
- Ratón: 10090
- Rata: 10116
- Levadura: 4932
- E. coli: 511145
Configuración del Servidor MCP
Para usar el servidor MCP con un cliente MCP, configúrelo de la siguiente manera:
{
"mcpServers": {
"string-mcp": {
"command": "string-mcp-server",
"env": {}
}
}
}
El servidor manejará automáticamente:
- Comunicación JSON-RPC
- Descubrimiento e invocación de herramientas
- Manejo y reporte de errores
- Codificación Base64 para datos de imágenes
Desarrollo
Configuración del Entorno de Desarrollo
# Install in development mode with dev dependencies
pip install -e .[dev]
# Format code
black stringmcp/
# Type checking
mypy stringmcp/
# Lint code
flake8 stringmcp/
Nota: Los archivos de prueba no están incluidos actualmente en este repositorio. Para agregar pruebas, cree un directorio tests/ y agregue archivos de prueba siguiendo la configuración de pytest en pyproject.toml.
Estructura del Proyecto
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
Licencia
Licencia MIT: consulte el archivo LICENSE para obtener más detalles.
Contribuciones
- Haga un fork del repositorio
- Cree una rama de características
- Realice sus cambios
- Agregue pruebas
- Ejecute el conjunto de pruebas
- Envíe una solicitud de extracción
Soporte
Para problemas y preguntas, utilice el rastreador de problemas de GitHub.
Ejemplo de Uso
Análisis Completo de Proteínas de Reparación de ADN
Este ejemplo demuestra la funcionalidad integral del puente MCP de STRING-DB mediante el análisis de un conjunto de proteínas humanas conocidas de reparación de ADN: TP53, BRCA1, BRCA2, ATM y ATR.
2. Mapeo de Identificadores de Proteínas
Mapee símbolos de genes a identificadores de 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. Red de Interacción Proteína-Proteína
Examine las interacciones de red entre estas 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
}
]
Hallazgos Clave: Todas las interacciones muestran puntuaciones de confianza muy altas (>0.8), con la mayoría superando 0.99, lo que indica que estas proteínas forman un módulo funcional estrechamente interconectado.
4. Estadísticas de la Red
Verifique si esta red está significativamente enriquecida en interacciones:
{
"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
}
Significancia Estadística: La red muestra una agrupación perfecta (coeficiente = 1.0) y está significativamente enriquecida en interacciones (p = 0.0122), con el doble de aristas de lo esperado por azar.
5. Análisis de Enriquecimiento Funcional
Analice qué rutas biológicas están enriquecidas en este conjunto de proteínas:
Principales Rutas de Reparación de ADN (Resultados Seleccionados):
[
{
"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"
}
]
Asociaciones con Enfermedades:
[
{
"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"
}
]
El paquete puede generar visualizaciones de redes de interacción de proteínas que muestran asociaciones funcionales basadas en evidencia.
Ejemplo de Visualización de Red: Ver Red de Interacción de Proteínas
Esta visualización muestra la red de interacción proteína-proteína para TP53, BRCA1, BRCA2, ATM y ATR con interacciones de alta confianza (puntuación ≥ 400).
7. Visualización de Enriquecimiento Funcional
El paquete también puede crear diagramas de dispersión de enriquecimiento que muestran los procesos biológicos más significativamente enriquecidos.
Ejemplo de Visualización de Enriquecimiento: Ver Gráfico de Enriquecimiento Funcional
Esta visualización muestra los 10 procesos biológicos y rutas más significativamente enriquecidos para el conjunto de proteínas de reparación de ADN, mostrando valores p y recuentos de genes para cada término enriquecido.
Resumen
Este análisis integral demuestra que el puente MCP de STRING-DB:
- Identificó las 5 proteínas de reparación de ADN con anotaciones detalladas
- Descubrió 10 interacciones de proteínas de alta confianza (todas con puntuación >0.8)
- Reveló enriquecimientos de rutas significativos con valores p < 1e-8
- Confirmó la significancia estadística de la red (p = 0.0122)
- Generó visualizaciones tanto de red como de enriquecimiento
Los resultados validan estas proteínas como un módulo central de respuesta al daño del ADN, con un enriquecimiento excepcionalmente fuerte para:
- Respuesta celular a la radiación ionizante (p = 1.52e-8)
- Señalización de daño al ADN (p = 1.32e-7)
- Recombinación homóloga (p = 2.8e-5)
- Vía de señalización p53 (p = 5.44e-5)
- Asociaciones con cáncer de mama (p = 2.02e-6)v Esto muestra la funcionalidad completa del puente MCP de STRING-DB para el análisis de redes de interacción de proteínas y la anotación funcional.