关于 ChemDraw MCP (unofficial)
ChemDraw MCP (unofficial) 是面向化学学习与实验报告的 MCP 服务,可将分子名称或 SMILES 转为结构图,也能生成反应图并查询分子数据。绘图在本地通过 RDKit 完成,结构可在聊天面板中预览。
主要功能
- 01名称或 SMILES 转为分子结构图
- 02生成反应示意图
- 03比较分子并标出差异
- 04导出 PNG、SVG 和可选 CDXML
- 05查询 PubChem 属性与 GHS 安全信息
适用场景
- 01为实验报告制作统一风格的结构图
- 02并排比较候选分子
- 03绘制带反应条件的反应方案
- 04查看分子属性与危险信息
MCP 相关
它向 MCP 客户端提供分子绘制、批量生成、比较、反应图生成和分子数据查询等工具;默认 MVP 暴露其中部分工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
chemdraw-mcp
聊天 → 化学结构。 在 Claude Desktop 中说 “画出阿司匹林”,即可获得 正确、可直接用于印刷的结构图——由 RDKit 在本地渲染,并可直接在聊天中交互。

此演示经过剪辑,以缩短 PubChem 的加载等待时间。
- 准确匹配分子,而非相似结构。 名称(也包括德语俗名)、IUPAC 名称和 SMILES 会通过 OPSIN、PubChem 和 NCI 解析;一项固定的身份测试会将 24 个输入与其 InChIKey 进行核对。
- 可直接用于实验室报告。 以统一的出版物风格输出 PNG 和 SVG,还可选择 ChemDraw CDXML——无需 ChemDraw 许可证。
- 理解结构,而不只是绘制。 悬停在官能团上即可查看其位置,切换到包含 GHS 安全信息的 PubChem 数据表,还可比较结构并高亮显示差异。
安装:下载 Claude Desktop 扩展(.mcpb,双击即可)——或者运行 uv tool install chemdraw-mcp && chemdraw-install。
免费且开源(Apache-2.0),无需 API 密钥,也无需注册。
| 不使用 chemdraw-mcp | 使用 chemdraw-mcp |
|---|---|
| Claude 用文字描述结构,或生成需要你粘贴到其他地方的 SMILES | 结构直接显示在聊天中,可立即导出 |
| 在 ChemDraw 或 ChemSketch 中手绘图形 | 每张图只需一句话即可生成,整份报告风格统一 |
| 从三个不同的网站查找摩尔质量、CAS 和危害信息 | 一份数据表,数据来自 PubChem |
30 秒试用
- 下载 Claude Desktop 扩展
(
chemdraw-mcp-<version>.mcpb) 并双击安装。在 Claude Desktop 中确认。 - 打开一个新聊天,说 “使用 ChemDraw MCP:画出咖啡因”——随后会出现一个显示结构的面板。
- 接着试试下面这些指令:
| 提问 | 结果 |
|---|---|
| “并排画出布洛芬和萘普生,并标出差异” | 显示两种结构,并高亮差异 |
| “画出阿司匹林、咖啡因和对乙酰氨基酚” | 分别生成结构和文件 |
| “画出乙醇与乙酸反应生成乙酸乙酯和水” | 反应示意图 |
| “显示咖啡因的数据表” | 结构、PubChem 属性和 GHS 安全信息 |
无需 API 密钥,无需注册,也无需 ChemDraw 许可证。结构渲染在你的电脑上运行。 详情和其他安装方式请参阅安装。 如果它为你节省了时间,点个 ⭐ 就能帮助其他学生发现它。
输出示例
“画出咖啡因”——由 generate_molecule 生成的可直接用于印刷的 PNG:

“布洛芬与萘普生和酮洛芬有何区别?”——
compare_molecules 会以中性色显示共同骨架,并高亮不同之处:

“展示乙醇与乙酸的 Fischer 酯化反应” —
generate_reaction 会在聊天面板中实时绘制反应式,带有平衡箭头(⇌),并在箭头上方和下方标出反应条件:

其他示例 — 仅适用于完整配置
以下示例包含在 MVP 中暂未启用的功能。使用
CHEMDRAW_PROFILE=full 可启用完整功能集。
“逐步展示 Fischer 酯化反应机理” —
generate_mechanism 会在交互面板中绘制弯曲的电子流箭头:

概览会将每一步排列在同一列中,且键长一致,让反应物、过渡态和产物一目了然:

“为我的 Suzuki 偶联反应制作一张底物适用范围图:3a 92%,3b 反应 12 h 后为 88%,
3c 64%,ee 为 94%,dr 为 10:1,3d 71%” — generate_scope_table 会在上方设置带反应条件的通用反应式,并在下方排列产物,所有结构共用键长和标题基线:

“绘制乙酸乙酯的 IR 光谱” — generate_spectrum(根据给定数据绘制峰值,并采用各类型对应的坐标轴惯例):

“我的酯化反应的 TLC:原料在 0.30,产物在 0.65,共点样显示两者,还有一些原料剩余” — generate_tlc 会绘制实验报告所需的薄层色谱板,并将展开剂和检测方法写入标题:

“以 3D 形式展示咖啡因” — generate_3d 会嵌入分子(ETKDG + 力场),并在聊天面板中打开可拖动旋转的球棍模型查看器:

“磷酸用 NaOH 滴定的滴定曲线,以酚酞为指示剂” —
generate_titration_curve 会根据精确的电荷平衡计算 pH,并显示当量点、缓冲点(pH = pKa)和指示剂变色范围;其配套工具 generate_species_distribution 则会显示每个 pH 下占主导地位的质子化物种:
“创建一个包含重要分子的 Anki 卡组,并在 Anki 中打开” —
export_anki_deck 会生成可直接导入的 .apkg 文件,
其中嵌入了渲染好的结构;如果安装了可选的 AnkiConnect 插件,
卡片会直接进入正在运行的 Anki,无需点击:
药理学
仅限完整配置(CHEMDRAW_PROFILE=full,参见配置文件)。
药理学课程总会要求绘制的曲线,可根据你提供的数据生成。
图表及其背后的计算(calculate_pharmacokinetics)使用相同的
公式,因此图形和数值始终一致。
“绘制口服 500 mg、每 8 小时一次的血浆浓度曲线(F 0.8,Vd 70 L,半衰期 4.6 h,ka 1.2/h),治疗窗为 2–6 mg/L” —
generate_pk_curve 会模拟至稳态,并输出 Cmax、tmax、AUC、蓄积情况以及达到 90 % 稳态所需的时间:

“绘制 EC50 为 10 nM 的激动剂量效曲线,并展示竞争性拮抗剂(20 nM,KB 10 nM)的作用” —
generate_dose_response 会按剂量比使曲线右移,并保持 Emax 不变:

完整配置功能参考
CHEMDRAW_PROFILE=full 时提供的全部 23 个工具。默认 MVP 仅注册
generate_molecule、batch_generate、compare_molecules、generate_reaction、
export_anki_deck、lookup_molecule_data 以及面板内部的 save_png。
文件写入 ~/ChemDraw-Output/;
每个绘图工具还会返回实时预览,供聊天面板显示。
结构和反应方案
generate_molecule— 名称/SMILES → 2D 结构图,输出 PNG + SVG (可选 CDXML),并提供性质、官能团检测和 Lipinski 五规则检查batch_generate— 一次调用即可生成一整组结构generate_reaction— 反应物 + 产物 + 条件 → 反应方案 条件显示在箭头上方和下方;支持正向(→)、平衡(⇌)或 逆合成(⇒)箭头,分子式中的数字会以下标显示(H2SO4 → H₂SO₄)generate_mechanism— 逐步绘制弯箭头反应机理(SN1、SN2、Fischer 酯化)generate_scope_table— 绘制方法学文献中的底物范围图:顶部为带反应条件的通用方程式,下方为 产物网格,每个产物都标注编号(“1a”)和产率(“78%”),还可选 ee/dr/时间。所有结构共用一种键长,所有说明共用一条 基线;无法解析的条目会报告出来,但不会导致失败compare_molecules— 并排比较 2–4 个结构,突出显示差异, 将共有骨架(MCS)显示为中性色generate_3d— 在聊天面板中显示可旋转的 3D 球棍构象(ETKDGv3 + 力场), 并支持导出 SDF
实验室结果与分析
generate_spectrum— 根据峰列表绘制示意光谱(IR、NIR、 Raman、UV/Vis、荧光、ORD、CD、¹H/¹³C NMR、MS),并遵循各类型的坐标轴 规范——只绘制给定的峰,不预测光谱generate_tlc— 根据 Rf 值绘制 TLC 板示意图:底部为起始线, 顶部为溶剂前沿;每个点样位置(起始物 / 反应液 / 共点样)对应一条带标题的泳道; 在每个斑点旁标注 Rf,并将流动相和检测方式作为标题打印出来——这正是实验报告所需的示意图generate_titration_curve— 根据精确电荷平衡绘制 pH 与滴定剂体积的关系曲线, 并标出当量点、缓冲点(pH = pKa)和指示剂变色范围generate_species_distribution— 绘制质子化物种的分数随 pH 变化的曲线(Henderson–Hasselbalch),并标出 pKa 交叉点generate_calibration_curve— 对标准样品进行最小二乘拟合, 并像用直尺读取那样从拟合线上读出未知样品的结果。超出校准范围的样品会标记为外推, 不会被悄悄报告为正常结果;还会提供检出限和定量限 (DIN 32645),以供验证
实验台计算(既要给出数值,也要展示计算过程——实验报告两者都需要)
generate_pk_curve— 单室模型中的血浆浓度随时间变化: 单次给药或重复给药(包括达到稳态的累积过程),口服或 i.v. 给药, 并绘出治疗窗generate_dose_response— 对数坐标轴上的 Hill 曲线,标出 EC50; 竞争性拮抗剂会使曲线平行右移(剂量比 r = 1 + [B]/KB,Emax 不变)calculate_solution— 需要称取多少物质(m = c · V · M)、实际得到多少、 如何稀释(明确写出溶剂体积,C₁V₁ = C₂V₂)、 如何进行交叉混合,以及包括CuSO₄·5H₂O等水合物在内的摩尔质量。 如果计算出的取样量低于分析天平的分辨能力,则会发出警告——此时应改为称取更多物质后再稀释calculate_content— 按照规程要求进行含量测定:每次测量得到一个含量 → Grubbs 异常值检验 → 均值、s、RSD → 与标示含量进行 t 检验。提供滴定法(包括通过基准滴定测定滴定度)和光度法, 以及脂肪特性测定(酸值、皂化值、酯值和碘值)和 Karl Fischer 水分测定等其他methodcalculate_ph— 弱酸、强酸、弱碱、强碱、缓冲液,以及精确到可称量质量的缓冲液配方。 通过精确电荷平衡求解,并在旁边列出教科书近似结果:两者不一致时,会指出近似法不再满足其假设。 10⁻⁸ M HCl 的结果是 pH 6.98,而不是 8calculate_pharmacokinetics— 单室模型及其计算过程: 半衰期、浓度随时间的变化、AUC、口服给药后的 tmax/Cmax、 蓄积和稳态、负荷剂量和维持剂量。提供 Vd 以及 ke、半衰期或清除率中的任一项; 如果数值相互矛盾,会明确指出,不会悄悄替你做出取舍
物质数据(在线查询)
lookup— 以文本形式提供事实,每个问题选择一个topic:properties(分子式、质量、CAS、InChIKey——默认选项)、safety(GHS 危险说明、象形图、信号词)、physical(熔点 / 沸点、溶解度、密度)、biochem(ChEBI 分类及相关 UniProt 条目)、pathway(来自 KEGG 的代谢通路)lookup_molecule_data— 将 PubChem 和 GHS 数据整合为一份数据表, 供聊天内面板使用,并包含结构predict_spectrum— 预测结构应有的 IR 吸收带(包括强度和谱带形状), 判断测得的波数可能对应什么,以及预期的 ¹H 信号数量和积分比。该工具采用确定性方法, 因此会说明自身的能力边界:不提供 ppm 化学位移,也会将非对映异位质子计作一个信号
考试准备
export_anki_deck— 将抽认卡导出为可直接导入 Anki 的.apkg文件: 结构↔名称练习(可选反向:一条笔记,两个方向),完形填空卡片、鉴别/检测反应、光谱波段分配——嵌入渲染后的图像,并支持逐卡标签和Parent::Child子牌组;重新导出牌组会更新卡片,而不是重复添加。也可以通过 AnkiConnect 插件直接发送到正在运行的 Anki。传入curated_deck_id代替自备卡片,即可使用经过公式验证的小型入门牌组(经典镇痛药、Ph.Eur. 鉴别反应)
每个工具都属于五个领域之一——绘图、实验室图形、查询、计算、Anki——并且会明确说明自身的用途和非用途,以避免双向误用,因此“绘制 aspirin”不会进入底物范围网格,“我的缓冲液 pH 是多少?”也不会进入绘图工具。还有一个工具不属于这些领域:save_png 是面板导出按钮对应的服务端部分,只会在你点击按钮时调用,不会自行运行。
只有在设置了 CHEMDRAW_VAULT_PATH 时,完整配置才会包含两个可选知识库工具(search_vault、read_vault_entry);未设置时,该配置恰好会提供上述 23 个工具。MVP 从不注册知识库工具。
绘图工具的选项
formats— 默认为["png","svg"];generate_molecule、generate_reaction和batch_generate还可额外使用"cdxml"。图形工具(generate_scope_table、generate_tlc、generate_spectrum)不支持 CDXML,并会给出明确错误,而不会写入无意义的内容。abbreviate_groups=True— 将常见取代基绘制为化学家实际使用的标签:Ph、Bn、OMe、OAc、tBu、CO₂H、Boc、Ts、TBS。在单元格变小时尤其有用——范围图仍然清晰易读,因为只有底物之间不同的部分会完整显示。适用于generate_molecule、generate_reaction、generate_scope_table、batch_generate。render_style— 在同样的四个工具中,可选择命名样式,而不必逐一设置一堆渲染参数。双栏排版中的小图适合使用"compact"(细键、限制标签尺寸、紧凑边距);演示文稿幻灯片适合使用"presentation"(加粗双键、最小字号、增加留白);黑白打印适合使用"grayscale",避免红色和蓝色最终变成两种难以区分的灰色。留空则保持未经修改的默认样式。annotate_stereo=True— 在二维绘图中打印 CIP 描述符(R/S、E/Z)(generate_molecule、batch_generate)。
配置
默认的 MVP 配置侧重于五项任务:绘制分子、绘制多个独立结构、比较化合物、绘制反应方案,以及将结构转换为 Anki 抽认卡。面板还支持化合物数据表、PNG 导出和“添加到 Anki”按钮。总共会注册七个工具。这是一套适用于学习、教学和实验室报告的通用化学工作流。
其他功能仍保留在代码和可选的 完整配置中,但不会在 MVP 中注册或调用。单独的浏览器练习训练器仍然保留,不属于 MCP MVP 的范围。
切换配置
在仓库根目录运行(更改配置后重启服务):
uv run chemdraw-tool-server # MVP, the default
CHEMDRAW_PROFILE=full uv run chemdraw-tool-server # restore all 23 tools
对于在 claude_desktop_config.json 中注册的服务,请在该服务条目中设置 "env": {"CHEMDRAW_PROFILE": "full"},同时保留任何现有环境变量,然后重启 Claude Desktop。删除该变量或将其设为 mvp,即可返回 MVP。Shell 变量不会自动配置已经运行的 Desktop 应用。无效的配置名称会导致启动失败并报错。
安装
有四种安装方式;任选一种即可——重复安装会导致服务被注册两次,模型看到的每个工具都会变成两个。选项 2 和 3 会幂等地合并到配置中,操作前请先备份,并且不会更改你配置的其他 MCP 服务。之后重启 Claude Desktop 并询问:“画出咖啡因”。
选项 0 — 安装包(macOS/Linux,无需终端):从最新版本下载 chemdraw-mcp-<version>.mcpb,双击并在 Claude Desktop 中确认。首次启动时会通过 uv 从 PyPI 获取软件包(如未安装,会为你安装 uv)——约 40 MB,请稍等片刻;之后每次启动都无需联网。安装后重启一次 Claude Desktop。
如果你已经通过选项 1 或 2 安装,请先移除相应条目。
选项 1 — 克隆仓库(如果你想阅读或修改代码,推荐此方式;如果缺少 uv,会先安装 uv,再同步依赖并注册服务):
git clone https://github.com/jurimaxam-dotcom/chemdraw-mcp.git
cd chemdraw-mcp && ./install.sh
选项 2 — 从 PyPI 安装,无需克隆(需要 uv):
uv tool install chemdraw-mcp
chemdraw-install
chemdraw-install 会使用已安装启动器的绝对路径为你写入 Claude Desktop 条目,并打印已注册的启动命令。
**选项 3 — 手动编辑配置。**将以下内容添加到 claude_desktop_config.json 的 mcpServers 下(macOS:
~/Library/Application Support/Claude/claude_desktop_config.json):
"chemdraw-tool": {
"command": "/opt/homebrew/bin/uvx",
"args": ["chemdraw-mcp"]
}
所有手动安装都可能踩的坑:Claude Desktop 不会从登录 shell 启动 MCP 服务——它使用的是精简的 GUI PATH。在那里无法解析单独的
"uvx"或"uv",服务会启动失败且不作提示。务必将which uvx在你的机器上打印的绝对路径填入command。选项 1 和 2 会为你完成这一步。
可选组件
- Java 运行时(例如
brew install openjdk)可让 OPSIN 离线解析系统 IUPAC 名称,包括数据库中没有索引的名称。没有 Java 时,解析器会继续使用 PubChem/NCI 在线查询。 - AnkiConnect 插件可让
export_anki_deck将卡片直接推送到正在运行的 Anki 中。没有它,你会得到.apkg文件,需要自行导入。 - ChemDraw(macOS)绝非必需:如果你想继续在其中编辑,可请求
formats=["cdxml"],然后自行打开文件。
无法正常工作?运行诊断工具
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
建议首先尝试此操作——它能将“服务什么也不做”转化为明确的原因。它会检查导致服务在聊天中看起来毫无响应的六项内容(RDKit 渲染、Java/OPSIN 运行时、uv 路径、Claude Desktop 条目、名称数据库、输出目录),并针对每个问题打印出修复它的确切命令。诊断结果分为三个级别:[OK]、[LIMITED](可用,但受限)和 [FAIL](故障);[NOTE] 表示不适用的检查,例如未安装 Claude Desktop。只要服务可用,退出代码就保持为 0,因此可以在脚本中运行。(通过 PyPI 安装时,uv 和 Claude Desktop 检查会报告 [NOTE]——这些检查与仓库安装程序有关。)
局限性
先说明在前,避免报告中出现意外:
- Java 是可选的,但需要付出代价。 如果没有 JRE,OPSIN 将被跳过,名称会通过 PubChem/NCI 在线解析——因此,名称查询需要互联网连接,而且仅适用于这些数据库收录的名称。 SMILES 输入不会访问网络。
- 光谱是示意图。
generate_spectrum会绘制传入的峰,并采用适用于该光谱类型的坐标轴约定。它不会测量或预测任何内容——如果峰值来自聊天内容而非仪器,请在将其写入报告前进行核实。 - TLC 强度只是绘图提示。 可选参数
intensity(0…1)用于让示意图中的斑点颜色变浅。它不是密度测定,也不具有定量意义。 - CDXML 是辅助输出。 它根据 RDKit 分子生成,并经过往返验证;但 PNG/SVG 才是主要输出,也是像素测试覆盖的格式。CDXML 默认关闭,且仅适用于结构和反应方案——TLC 板、反应范围图和光谱不支持该格式。
- 3D 仅使用一个构象。
generate_3d使用 ETKDGv3 嵌入构象,并使用 MMFF 进行优化(无法使用时则回退到 UFF)。生成的几何结构适合查看,但这并非构象搜索,也不代表能量结论。 - ChemDraw 桥接功能仅适用于 macOS,并且需要在本地安装 ChemDraw。其他所有功能均无需它。
工作原理
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)
开发
Python 3.11+,包管理器为 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
600 多项测试,采用测试优先的方式编写。端到端测试会在无头 Chromium 中栅格化真实的 RDKit SVG,并与精确的像素快照进行比较——导出路径和聊天中的预览使用相同的绘图常量。
反馈、错误报告和愿望
本项目面向学生,后续开发方向取决于你遇到的问题。
- 遇到问题了?提交错误报告——
表单会要求提供
chemdraw-doctor的输出,它能在大多数问题被提出前就给出答案。 - 课程中缺少某项功能?告诉我们你想绘制或计算什么—— 请说明主题和考试题目;这比只提供一个功能名称更有帮助。
- **化学内容有误?**请使用错误报告表单,并注明化合物和图示。这里最重要的是结构正确。
- 有问题,或想分享你用它做的东西?讨论区——“展示与分享”是分享用途的地方。
- **觉得好用?**在仓库点一个 ⭐ 是本项目唯一的分析数据来源。
许可证
Apache-2.0——详见 LICENSE。版权所有 2026 jurimaxam-dotcom。
**免责声明:**本项目为非官方独立项目,与 Revvity 无关联,也未获其认可。 ChemDraw 是 Revvity Signals Software, Inc. 的商标。本工具不包含 ChemDraw,也不要求安装 ChemDraw;但可选择导出为开放的 CDXML 格式文件。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。