PubChem MCP Server

Busca y accede a información de compuestos químicos desde la base de datos PubChem.

Documentación

Servidor MCP de PubChem

smithery badge

🧪 Permite que los asistentes de IA busquen y accedan a información de compuestos químicos a través de una interfaz MCP sencilla.

El Servidor MCP de PubChem proporciona un puente entre los asistentes de IA y la base de datos química de PubChem mediante el Protocolo de Contexto de Modelo (MCP). Permite que los modelos de IA busquen compuestos químicos y accedan a su información detallada de forma programática.

🤝 Contribuir • 📝 Reportar un error

✨ Características principales

  • 🔎 Búsqueda de compuestos: Consulta compuestos de PubChem por nombre, SMILES o CID ✅
  • 🧪 Estructura química: Accede a estructuras moleculares e identificadores ✅
  • 📊 Datos de propiedades: Recupera propiedades químicas y físicas detalladas ✅
  • 🔬 Búsqueda avanzada: Combina múltiples parámetros para consultas precisas ✅
  • 🧬 Visualización molecular: Genera y muestra estructuras moleculares 📝
  • 📈 Análisis de propiedades: Compara propiedades entre múltiples compuestos 📝
  • 🗃️ Almacenamiento local: Guarda compuestos de uso frecuente para un acceso más rápido 📝
  • 📝 Indicaciones de química: Indicaciones especializadas para análisis químico 📝

🚀 Inicio rápido

Instalación mediante Smithery

Para instalar PubChem Server para Claude Desktop automáticamente a través de Smithery:

Claude

npx -y @smithery/cli@latest install @JackKuo666/pubchem-mcp-server --client claude --config "{}"

Cursor

Pega lo siguiente en Configuración → Configuración de Cursor → MCP → Añadir nuevo servidor:

  • Mac/Linux
npx -y @smithery/cli@latest run @JackKuo666/pubchem-mcp-server --client cursor --config "{}" 

Windsurf

npx -y @smithery/cli@latest install @JackKuo666/pubchem-mcp-server --client windsurf --config "{}"

CLine

npx -y @smithery/cli@latest install @JackKuo666/pubchem-mcp-server --client cline --config "{}"

Instalación manual

Instala usando uv:

uv tool install pubchem-mcp-server

Para desarrollo:

# Clone and set up development environment
git clone https://github.com/JackKuo666/PubChem-MCP-Server.git
cd PubChem-MCP-Server

# Create and activate virtual environment
uv venv
source .venv/bin/activate
uv pip install -r requirements.txt

📊 Uso

Inicia el servidor MCP:

python pubchem_server.py

Una vez que el servidor esté en ejecución, puedes usar las herramientas MCP proporcionadas en tu asistente de IA o aplicación. Aquí tienes algunos ejemplos de cómo usar las herramientas:

Ejemplo 1: Buscar compuestos por nombre

result = await mcp.use_tool("search_pubchem_by_name", {
    "name": "aspirin",
    "max_results": 3
})
print(result)

Ejemplo 2: Buscar compuestos por notación SMILES

result = await mcp.use_tool("search_pubchem_by_smiles", {
    "smiles": "CC(=O)OC1=CC=CC=C1C(=O)O",  # Aspirin's SMILES
    "max_results": 2
})
print(result)

Ejemplo 3: Obtener información detallada de un compuesto específico

result = await mcp.use_tool("get_pubchem_compound_by_cid", {
    "cid": 2244  # Aspirin's CID
})
print(result)

Ejemplo 4: Realizar una búsqueda avanzada con múltiples parámetros

result = await mcp.use_tool("search_pubchem_advanced", {
    "name": "caffeine",
    "formula": "C8H10N4O2",
    "max_results": 2
})
print(result)

Estos ejemplos demuestran cómo usar las cuatro herramientas principales proporcionadas por el Servidor MCP de PubChem. Ajusta los parámetros según sea necesario para tu caso de uso específico.

🛠 Herramientas MCP

El Servidor MCP de PubChem proporciona las siguientes herramientas:

search_pubchem_by_name

Busca compuestos químicos en PubChem usando un nombre de compuesto.

Parámetros:

  • name (str): Nombre del compuesto químico
  • max_results (int, opcional): Número máximo de resultados a devolver (predeterminado: 5)

Devuelve: Lista de diccionarios que contienen información del compuesto

search_pubchem_by_smiles

Busca compuestos químicos en PubChem usando una cadena SMILES.

Parámetros:

  • smiles (str): Notación SMILES del compuesto químico
  • max_results (int, opcional): Número máximo de resultados a devolver (predeterminado: 5)

Devuelve: Lista de diccionarios que contienen información del compuesto

get_pubchem_compound_by_cid

Obtiene información detallada sobre un compuesto químico usando su CID de PubChem.

Parámetros:

  • cid (int): ID de compuesto de PubChem (CID)

Devuelve: Diccionario que contiene información del compuesto

search_pubchem_advanced

Realiza una búsqueda avanzada de compuestos en PubChem.

Parámetros:

  • name (str, opcional): Nombre del compuesto químico
  • smiles (str, opcional): Notación SMILES del compuesto químico
  • formula (str, opcional): Fórmula molecular
  • cid (int, opcional): ID de compuesto de PubChem
  • max_results (int, opcional): Número máximo de resultados a devolver (predeterminado: 5)

Devuelve: Lista de diccionarios que contienen información del compuesto

Uso con Claude Desktop

Añade esta configuración a tu claude_desktop_config.json:

(Mac OS)

{
  "mcpServers": {
    "pubchem": {
      "command": "python",
      "args": ["-m", "pubchem-mcp-server"]
      }
  }
}

(Versión de Windows):

{
  "mcpServers": {
    "pubchem": {
      "command": "C:\\Users\\YOUR_USERNAME\\AppData\\Local\\Programs\\Python\\Python311\\python.exe",
      "args": [
        "-m",
        "pubchem-mcp-server"
      ]
    }
  }
}

Uso con Cline

{
  "mcpServers": {
    "pubchem": {
      "command": "bash",
      "args": [
        "-c",
        "source /home/YOUR/PATH/mcp-hub/PubChem-MCP-Server/.venv/bin/activate && python /home/YOUR/PATH/mcp-hub/PubChem-MCP-Server/pubchem_server.py"
      ],
      "env": {},
      "disabled": false,
      "autoApprove": []
    }
  }
}

Después de reiniciar Claude Desktop, estarán disponibles las siguientes capacidades:

Búsqueda de compuestos

Puedes pedirle a Claude que busque compuestos químicos usando consultas como:

Can you search PubChem for information about aspirin?

La búsqueda devolverá información básica sobre los compuestos coincidentes, incluyendo:

• Nombre del compuesto

• CID (ID de compuesto de PubChem)

• Fórmula molecular

• Peso molecular

Obtención de detalles del compuesto

Una vez que tengas un CID, puedes pedir más detalles:

Can you show me the details for compound with CID 2244?

Esto devolverá:

• Nombre IUPAC

• Fórmula molecular

• Peso molecular

• Notación SMILES

• InChI e InChIKey

• Propiedades físicas y químicas

• Sinónimos

📝 PENDIENTE

visualize_compound

Genera y muestra una visualización 2D o 3D de un compuesto químico.

compare_compounds

Compara propiedades y estructuras de múltiples compuestos.

save_compound

Guarda un compuesto localmente para un acceso más rápido.

list_saved_compounds

Lista todos los compuestos guardados.

📝 Indicaciones de química

El servidor ofrecerá indicaciones especializadas para ayudar a analizar compuestos químicos:

Indicación de análisis de compuestos

Un flujo de trabajo integral para analizar compuestos químicos que solo requiere un ID de compuesto:

result = await call_prompt("deep-compound-analysis", {
    "compound_id": "2244"
})

Esta indicación incluirá:

  • Instrucciones detalladas para usar las herramientas disponibles
  • Un flujo de trabajo sistemático para el análisis de compuestos
  • Estructura de análisis integral que cubre:
    • Estructura química y propiedades
    • Propiedades farmacológicas
    • Actividades biológicas
    • Aplicaciones y usos
    • Información de seguridad y toxicidad
    • Compuestos relacionados

📁 Estructura del proyecto

  • pubchem_server.py: La implementación principal del servidor MCP usando FastMCP
  • pubchem_search.py: Contiene código de ejemplo para buscar en PubChem

🔧 Dependencias

  • Python 3.10+
  • FastMCP
  • asyncio
  • logging
  • pubchempy (para acceso a la API de PubChem)
  • pandas (para manejo de datos)

Puedes instalar las dependencias requeridas usando:

pip install mcp pubchempy pandas

🤝 Contribuciones

¡Las contribuciones son bienvenidas! No dudes en enviar una Solicitud de Extracción (Pull Request).

📄 Licencia

Este proyecto está licenciado bajo la Licencia MIT.

⚠️ Aviso legal

Esta herramienta es solo para fines de investigación. Respeta los términos de servicio de PubChem y usa esta herramienta de manera responsable.