Skip to main content
Glama

chemdraw-mcp

CI Release License: Apache-2.0

Chat → estructura química. Un servidor MCP para Claude Desktop: describes una molécula, una reacción o un resultado de laboratorio en palabras sencillas, y él dibuja la figura — un PNG/SVG listo para imprimir renderizado localmente con RDKit, además de una vista previa interactiva dentro del chat. "Dibuja aspirina" ya es un comando completo.

Diseñado para estudiantes de farmacia y química que pierden demasiado tiempo haciendo clic en hexágonos. 20 herramientas cubren lo que un informe o una diapositiva necesitan de verdad: estructuras, esquemas de reacción, mecanismos paso a paso, figuras de alcance de sustrato, placas de TLC, curvas de valoración, espectros esquemáticos, fichas de datos de sustancias, cálculos de ensayo Ph.Eur. y mazos de Anki.

Lo que te cuesta: un comando de instalación. Apache-2.0, sin clave de API, sin registro para el servidor, sin licencia de ChemDraw — necesitas Claude Desktop y uv, todo lo demás se descarga una sola vez. El renderizado se ejecuta íntegramente en tu máquina; solo la resolución de nombres y las consultas a bases de datos llegan a internet. El CDXML de ChemDraw es un formato extra opcional para quienes quieran seguir editando allí, nunca un requisito.

Ejemplo de salida

"Dibuja cafeína" — PNG listo para imprimir, generado por generate_molecule:

"Muestra la esterificación de Fischer del etanol con ácido acético"generate_reaction renderiza el esquema con las condiciones sobre la flecha, en vivo en el panel del chat:

"Muestra el mecanismo de la esterificación de Fischer paso a paso"generate_mechanism renderiza flechas curvas de flujo electrónico en el panel interactivo:

"Haz una figura de alcance de mis acoplamientos de Suzuki: 3a 92%, 3b 88% tras 12 h, 3c 64% con ee 94% y dr 10:1, 3d 71%"generate_scope_table coloca la ecuación general con sus condiciones arriba y los productos debajo, con una longitud de enlace compartida y una línea base de leyenda compartida:

"Dibuja el espectro IR del acetato de etilo"generate_spectrum (dibuja los picos que se le dan, con convenciones de ejes por tipo):

"TLC de mi esterificación: educto en 0,30, producto en 0,65, el co-spot muestra ambos, queda algo de educto"generate_tlc dibuja la placa que pide el informe de laboratorio, con fase móvil y detección como leyenda:

"Muestra la cafeína en 3D"generate_3d incrusta la molécula (ETKDG + campo de fuerza) y abre un visor de bolas y varillas arrastrable para rotar en el panel del chat:

"¿Qué distingue al ibuprofeno del naproxeno y del ketoprofeno?"compare_molecules mantiene neutro el andamiaje compartido (MCS) y resalta todo lo que difiere:

"Curva de valoración del ácido fosfórico con NaOH, fenolftaleína como indicador"generate_titration_curve calcula el pH a partir del balance de carga exacto, con puntos de equivalencia, puntos tampón (pH = pKa) y la banda del indicador; su gemelo generate_species_distribution muestra qué especie de protonación domina en cada pH:

"Crea un mazo de Anki con moléculas importantes y ábrelo en Anki"export_anki_deck construye un .apkg listo para importar con estructuras renderizadas incrustadas; con el complemento opcional AnkiConnect las tarjetas llegan directamente a Anki en ejecución, sin clics:

Related MCP server: ChemCP

Características

Las 20 herramientas que expone el servidor. Los archivos se escriben en ~/ChemDraw-Output/; cada herramienta de dibujo también devuelve una vista previa en vivo para el panel del chat.

Estructuras y esquemas

  • generate_molecule — nombre/SMILES → estructura 2D como PNG + SVG (opcionalmente CDXML), con propiedades, detección de grupos funcionales y una comprobación de la regla de Lipinski

  • batch_generate — una lista completa de estructuras en una sola llamada

  • generate_reaction — eductos + productos + condiciones → esquema de reacción con las condiciones colocadas sobre la flecha

  • generate_mechanism — mecanismos con flechas curvas (SN1, SN2, esterificación de Fischer) paso a paso

  • generate_scope_table — la figura de alcance de sustrato de la literatura metodológica: la ecuación general con sus condiciones arriba, debajo una cuadrícula de productos, cada uno con su identificador ("1a") y rendimiento ("78%") más ee/dr/tiempo opcionales. Todas las estructuras comparten una longitud de enlace, todas las leyendas una línea base; una entrada que no se puede resolver se notifica, no es fatal

  • compare_molecules — 2–4 estructuras lado a lado, diferencias resaltadas, andamiaje compartido (MCS) neutro

  • generate_3d — conformero 3D de bolas y varillas rotable en el panel del chat (ETKDGv3 + campo de fuerza) más exportación SDF

Resultados de laboratorio y análisis

  • generate_spectrum — espectros esquemáticos a partir de listas de picos (IR, NIR, Raman, UV/Vis, fluorescencia, ORD, CD, ¹H/¹³C RMN, EM) con convenciones de ejes por tipo — dibuja los picos dados, no predice espectros

  • generate_tlc — dibujo de placa de TLC a partir de valores de Rf: línea de inicio abajo, frente de disolvente arriba, un carril con leyenda por punto de aplicación (educto / reacción / co-spot), Rf anotado en cada mancha, fase móvil y detección impresas como leyenda — el dibujo que pide un informe de laboratorio

  • generate_titration_curve — pH frente a volumen de valorante a partir del balance de carga exacto, con puntos de equivalencia, puntos tampón (pH = pKa) y banda de transición del indicador

  • generate_species_distribution — fracciones de especies de protonación frente al pH (Henderson–Hasselbalch) con los cruces de pKa marcados

  • generate_calibration_curve — recta de mínimos cuadrados a través de tus patrones, y las incógnitas leídas de ella como harías con una regla. Una muestra fuera del rango calibrado se etiqueta como extrapolada en lugar de notificarse en silencio; los límites de detección y cuantificación (DIN 32645) vienen incluidos para la cuestión de validación

Cálculos de banco (el número y el desarrollo — un informe de laboratorio pide ambos)

  • calculate_solution — qué pesar (m = c · V · M), lo que realmente obtuviste, diluciones (C₁V₁ = C₂V₂ con el volumen de disolvente especificado), el cuadrado de mezclas y masas molares incluyendo hidratos como CuSO₄·5H₂O. Avisa cuando la porción calculada cae por debajo de lo que resuelve una balanza analítica — entonces diluir una porción mayor es lo correcto

  • calculate_content — una determinación de contenido como la quiere el protocolo: un contenido por medición → prueba de outliers de Grubbs → media, s, RSD → prueba t contra el contenido declarado. Valoración (con determinación de título a partir de valoraciones de referencia) y fotometría, además de los índices de grasas (ácido, saponificación, éster y yodo) y el contenido de agua por Karl Fischer como methods adicionales

  • calculate_ph — ácidos y bases débiles y fuertes, tampones y recetas de tampones hasta masas pesables. Resuelto mediante el balance de carga exacto con la aproximación de libro impresa al lado: donde ambas discrepan, la aproximación ha perdido sus supuestos y lo dice. HCl 10⁻⁸ M sale a pH 6,98, no 8

Datos de sustancias (consultas en línea)

  • lookup — los datos como texto, un topic por pregunta: properties (fórmula, masa, CAS, InChIKey — el valor predeterminado), safety (indicaciones de peligro GHS, pictogramas, palabra de advertencia), physical (punto de fusión/ebullición, solubilidad, densidad), biochem (clasificación ChEBI más entradas UniProt relacionadas), pathway (rutas metabólicas de KEGG)

  • lookup_molecule_data — PubChem + GHS combinados en una sola ficha de datos para el panel del chat, estructura incluida

  • predict_spectrum — qué bandas IR debería mostrar una estructura (con intensidad y forma de banda), a qué podría corresponder un número de onda medido y cuántas señales de ¹H esperar con su relación integral. Determinista, así que dice lo que no puede hacer: sin desplazamientos químicos en ppm, y los protones diastereotópicos se cuentan como una sola señal

Preparación de exámenes

  • export_anki_deck — tarjetas flash como un .apkg de Anki listo para importar: ejercicios de estructura↔nombre (opcionalmente invertidos: una nota, ambas direcciones), tarjetas de cloze/rellenar el hueco, reacciones de identidad/detección, asignación de bandas espectrales — con imágenes renderizadas incrustadas, etiquetas por tarjeta, subdecks Parent::Child; reexportar un mazo actualiza las tarjetas en lugar de duplicarlas. Entrega opcional directamente en Anki en ejecución mediante el complemento AnkiConnect. Pasa curated_deck_id en lugar de tus propias tarjetas para un mazo inicial pequeño y verificado por fórmulas (analgésicos clásicos, reacciones de identidad Ph.Eur.)

Cada herramienta pertenece a una de cinco áreas — dibujar, gráficos de laboratorio, consultar, calcular, Anki — y cada una dice para qué no sirve, en ambas direcciones, de modo que "dibuja aspirina" no puede acabar en una cuadrícula de alcance de sustrato y "¿qué pH tiene mi tampón?" no puede acabar en una herramienta de trazado. Una herramienta queda fuera de ellas: save_png es la mitad del servidor del botón de exportación del panel, se llama al hacer clic en él, nunca por sí sola.

Dos herramientas opcionales de vault (search_vault, read_vault_entry) aparecen solo cuando CHEMDRAW_VAULT_PATH está definido; sin él, el servidor expone exactamente las 20 herramientas anteriores.

Opciones de las herramientas de dibujo

  • formats["png","svg"] por defecto; "cdxml" además de eso para generate_molecule, generate_reaction y batch_generate. Las herramientas de figuras (generate_scope_table, generate_tlc, generate_spectrum) rechazan CDXML con un error claro en lugar de escribir algo sin sentido.

  • abbreviate_groups=True — dibuja los sustituyentes comunes como las etiquetas que los químicos escriben de verdad: Ph, Bn, OMe, OAc, tBu, CO₂H, Boc, Ts, TBS. Merece la pena siempre que las celdas se hacen pequeñas — una figura de alcance sigue siendo legible porque solo lo que difiere entre los sustratos permanece escrito. Disponible en generate_molecule, generate_reaction, generate_scope_table, batch_generate.

  • render_style — un aspecto con nombre en lugar de un montón de parámetros de renderizado, en las mismas cuatro herramientas. "compact" (enlaces finos, tamaño de etiqueta limitado, márgenes ajustados) para una figura pequeña en un diseño de dos columnas, "presentation" (doble grosor de enlace, tamaño de fuente mínimo, más relleno) para una diapositiva de clase, "grayscale" para impresión en blanco y negro, donde el rojo y el azul se convertirían en dos grises indistinguibles. Vacío significa el aspecto predeterminado, sin tocar.

  • annotate_stereo=True — imprime descriptores CIP (R/S, E/Z) en el dibujo 2D (generate_molecule, batch_generate).

Instalación

Tres formas de entrar; elige una. Las opciones 1 y 2 se fusionan en la configuración de forma idempotente, haz una copia de seguridad primero y deja intacto cualquier otro servidor MCP que tengas configurado. Después reinicia Claude Desktop y pregunta: "dibuja cafeína".

Opción 1 — clonar el repositorio (recomendada si quieres leer o cambiar el código; instala uv si falta, sincroniza las dependencias, registra el servidor):

git clone https://github.com/jurimaxam-dotcom/chemdraw-mcp.git
cd chemdraw-mcp && ./install.sh

Opción 2 — desde PyPI, sin clonar (necesita uv):

uv tool install chemdraw-mcp
chemdraw-install

chemdraw-install escribe la entrada de Claude Desktop por ti, usando la ruta absoluta del lanzador instalado, e imprime el comando de inicio que registró.

Opción 3 — editar la configuración a mano. Añade esto a claude_desktop_config.json bajo mcpServers (macOS: ~/Library/Application Support/Claude/claude_desktop_config.json):

"chemdraw-tool": {
  "command": "/opt/homebrew/bin/uvx",
  "args": ["chemdraw-mcp"]
}

El único escollo que rompe toda instalación manual: Claude Desktop no inicia los servidores MCP desde un shell de inicio de sesión — usa el PATH mínimo de la GUI. Un "uvx" o "uv" desnudo no se puede resolver allí, y el servidor falla al iniciar sin decirlo. Pon siempre la ruta absoluta que which uvx imprime en tu máquina en command. Las opciones 1 y 2 hacen esto por ti.

Extras opcionales

  • Un runtime de Java (p. ej. brew install openjdk) permite que OPSIN analice nombres IUPAC sistemáticos sin conexión — incluidos los que ninguna base de datos indexa. Sin Java el resolvedor simplemente continúa con la búsqueda en línea de PubChem/NCI.

  • El complemento AnkiConnect permite que export_anki_deck envíe tarjetas directamente a un Anki en ejecución. Sin él obtienes el archivo .apkg y lo importas tú mismo.

  • ChemDraw (macOS) nunca es necesario: solicita formats=["cdxml"] y abre el archivo tú mismo si quieres seguir editando allí.

¿Algo no funciona? Ejecuta el doctor

chemdraw-doctor                            # after "uv tool install chemdraw-mcp"
uv run chemdraw-doctor                     # in the cloned repo
uvx --from chemdraw-mcp chemdraw-doctor    # without installing anything

Esto es lo primero que hay que probar — convierte "el servidor no hace nada" en una causa con nombre. Comprueba las seis cosas que hacen que el servidor parezca muerto en el chat (renderizado de RDKit, el runtime de Java/OPSIN, la ruta de uv, la entrada de Claude Desktop, las bases de datos de nombres, el directorio de salida) e imprime, para cada problema, el comando exacto que lo arregla. Se distinguen tres niveles: [OK], [LIMITED] (funciona, pero restringido) y [FAIL] (roto); [NOTE] marca comprobaciones que simplemente no aplican, como no tener Claude Desktop instalado. El código de salida permanece en 0 mientras el servidor sea utilizable, para que pueda ejecutarse en scripts. (Desde una instalación de PyPI las comprobaciones de uv y Claude Desktop informan [NOTE] — se relacionan con el instalador del repositorio.)

Limitaciones

Dicho de antemano, para que nada te sorprenda en un informe:

  • Java es opcional, y eso tiene un precio. Sin un JRE, OPSIN se omite y los nombres se resuelven en línea vía PubChem/NCI — así que las búsquedas de nombres necesitan conexión a internet y solo funcionan para nombres que esas bases de datos indexan. La entrada SMILES nunca toca la red.

  • Los espectros son esquemáticos. generate_spectrum dibuja los picos que se le dan, con las convenciones de eje correctas para el tipo de espectro. No mide nada ni predice nada — si los valores de los picos vinieron del chat en lugar de tu instrumento, verifícalos antes de que entren en un informe.

  • La intensidad de TLC es una pista de dibujo. La intensity opcional (0…1) hace que una mancha sea más tenue en el boceto. No es densitometría y no tiene significado cuantitativo.

  • CDXML es un camino lateral. Se escribe desde la molécula de RDKit y se valida de ida y vuelta, pero PNG/SVG son las salidas principales y las que cubren las pruebas de píxeles. CDXML está desactivado por defecto y limitado a estructuras y esquemas de reacción — las placas de TLC, las figuras de alcance y los espectros lo rechazan.

  • 3D es un conformero. generate_3d incrusta con ETKDGv3 y optimiza con MMFF (UFF como respaldo). Es una geometría plausible para mirar, no una búsqueda conformacional ni una declaración de energía.

  • El puente de ChemDraw es solo para macOS y necesita un ChemDraw instalado localmente. Todo lo demás funciona sin él.

Cómo funciona

name / SMILES
   │
   ▼
resolver ──► OPSIN (systematic IUPAC names, offline) ──► PubChem / NCI (names)  ·  direct parse (SMILES)
   │
   ▼
RDKit 2D coordinates ──► validation (sanity, round-trip)
   │
   ├──► image_export   → PNG + SVG files          (primary, offline)
   ├──► svg_renderer   → interactive chat preview (MCP App resource)
   └──► cdxml_writer   → ChemDraw CDXML           (optional, on request)

Desarrollo

Python 3.11+, gestor de paquetes uv.

uv sync                      # backend deps
cd chemdraw_tool/ui && npm install && npx playwright install chromium  # frontend, once
./test.sh                    # the gate: pytest + JS unit + headless-Chromium e2e

Más de 600 pruebas, escritas primero la prueba. La prueba e2e rasteriza un SVG real de RDKit en Chromium sin interfaz y lo compara contra una captura de píxeles exacta — la ruta de exportación y la vista previa en el chat se mantienen con las mismas constantes de dibujo.

Licencia

Apache-2.0 — ver LICENSE. Copyright 2026 jurimaxam-dotcom.

Aviso: Este es un proyecto no oficial e independiente, no afiliado ni respaldado por Revvity. ChemDraw es una marca comercial de Revvity Signals Software, Inc. Esta herramienta no incluye ni requiere ChemDraw; puede exportar opcionalmente archivos en el formato abierto CDXML.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    C
    quality
    B
    maintenance
    Enables chemical reaction predictions (retrosynthesis, product, reagents), molecule validation, and property calculation through the Model Context Protocol, integrating with AI assistants.
    5
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Renders interactive 2D molecular structure diagrams from SMILES notation and computes molecular properties like molecular weight, LogP, and TPSA, directly in the chat.
    1
    55
    1
    ISC
  • F
    license
    Not graded
    quality
    C
    maintenance
    Provides in-process RDKit cheminformatics operations — descriptors, fingerprints, similarity and substructure search, reaction enumeration, standardization, and 3D conformer generation — for AI agents.
    -