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 STRING
  • get_network_interactions(): Obtiene datos de interacciones de red
  • get_network_image(): Genera imágenes de visualización de redes
  • get_interaction_partners(): Encuentra todos los socios de interacción
  • get_functional_enrichment(): Realiza análisis de enriquecimiento
  • get_functional_annotation(): Obtiene anotaciones funcionales
  • get_protein_similarity(): Calcula puntuaciones de similitud
  • get_ppi_enrichment(): Prueba el enriquecimiento de PPI
  • get_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 tabulaciones
  • XML: Formato XML
  • IMAGE: Imágenes de visualización de redes
  • SVG: Gráficos vectoriales escalables
  • PSI_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

  1. Haga un fork del repositorio
  2. Cree una rama de características
  3. Realice sus cambios
  4. Agregue pruebas
  5. Ejecute el conjunto de pruebas
  6. 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 DNA Repair Protein Network 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 Functional Enrichment Plot

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.