关于 live-chemdraw-mcp
live-chemdraw-mcp 通过 COM 自动化,将 AI 助手连接到 Windows 上打开的 ChemDraw 文档。它支持结构编辑、图形排版、化学检查和面向出版的操作,可由 MCP 客户端调用。
主要功能
- 01插入和导出化学结构
- 02构建底物范围表
- 03收缩或展开简写基团
- 04查看并调整图形布局
- 05检查立体化学与重复结构
- 06创建反应标注和 TLC 板
适用场景
- 01编辑 ChemDraw 中打开的结构
- 02将结构与说明文字排入图形面板
- 03检查立体化学或价态问题
- 04制作反应方案和底物范围图
MCP 相关
MCP 服务提供操作实时 ChemDraw 窗口的工具,包括结构编辑、布局、化学检查和图形制作。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
live-chemdraw-mcp
一个 MCP 服务,通过 COM 自动化将 AI 助手连接到 Windows 上的实时 ChemDraw 窗口——直接在已打开的文档中绘制、编辑和整理结构。 功能:
- 插入与导出 — 支持 SMILES、名称、molfile、InChI、CDXML;可导出为图像、结构文本,或直接复制到剪贴板
- 底物范围表格 — 一次调用即可构建完整的范围图,尺寸适合期刊栏宽,并将标签/收率放在各结构下方
- 简写基团 — 在行内检测并缩写官能团
(
chemdraw_contract_group:Ph、TES、Boc、Ts……约 40 种基团,通过 RDKit 进行 SMARTS 匹配),或将整个结构缩写/展开为单个标签;还支持一次调用即可批量展开整个文档 - 图形布局 —
chemdraw_describe_canvas可对整页进行一次语义读取(结构、与所属对象匹配的说明文字、面板框、重叠/溢出违规);chemdraw_arrange_in_region可在一次调用中将结构适配到面板框内,说明文字随之移动,且绝不重新缩放;chemdraw_get_layout/chemdraw_move_objects可用于制定原始几何布局方案,并自动检测连带移动 - 化学质控 — 读取/设置立体化学(楔形/虚线键、“and1”/“or1”增强型立体化学分组)、重复项检测、价态警告、IUPAC 命名、生成 HRMS 文本
- 出版工具 — 期刊样式预设、反应方案,以及使用 RDKit 计算属性的衍生物库枚举
- 注释 — 机理/反应箭头(
chemdraw_make_arrow:实心/空心/角形箭头、单倒刺“鱼钩”电子推动箭头、划掉的“不可行”路径标记、偶极标记)和符号 (chemdraw_make_symbol:外消旋/绝对/相对立体描述符标签;孤对电子/自由基/匕首符号也能放置,但目前渲染尺寸极小,且似乎无法缩放——参见工具自身的文档字符串)。 同位素标记(chemdraw_edit_atom(..., isotope=13, ...))在导出时会保留为真实的同位素标记,而不只是 ChemDraw 显示标签。 限制: 箭头/符号是独立浮动对象——使用chemdraw_move_objects/chemdraw_transform移动附近结构时,它们不会随之移动;这与下文已记录的说明文字问题属于同一类缺陷。 目前不支持弧形/曲线箭头,也不支持真正的双对象 ⇌ 平衡箭头对——这两项都已进行实时探测,但在做出设计承诺前还需进一步调查 COM(参见docs/com_typelib/) - 聚合物重复单元括号(
chemdraw_make_bracket:方形/花括号/圆括号字形;用于 SRU/单体/共聚物/交联……,并使用 ChemDraw 自动生成的缩写标签——“n”/“mon”/“xl”等)可用一对开括号与闭括号包围结构(或显式矩形)。 限制,已通过实时测试确认,尚未解决: 无法通过 COM 设置 RepeatCount/SRULabel/ComponentOrder(读取和写入都会稳定地报错);同一自动化会话中出现第二个括号后,这一对括号的镜像方向(“[...]”与两个朝向相同的标记)并不可靠——务必检查导出的图像;括号纯属装饰(并未绑定真实的原子/键成员关系,尽管 ChemDraw 提供了 InsideAtoms/ContainedAtoms/CrossingBonds 属性——已确认这些属性不能反映真实几何位置),且与上文的箭头/符号一样,属于独立浮动对象,不会随结构移动 - TLC 板(
chemdraw_make_tlc_plate:带标注 Rf 斑点泳道的矩形板框,用于反应监测图)——斑点的垂直位置完全由其rf(0-1)属性决定;ChemDraw 会自行在板的原点线与溶剂前沿线之间进行插值(已通过测量屏幕截图中的像素位置实时确认,与预期比例相差约 1%),无需手动计算位置。支持show_rf(自动生成“Rf = 0.NN”标签)、filled/bold/dashed(已通过视觉确认,空心虚线圆与实心圆点明显不同),以及实验性的tail(彗尾状拖尾);但在现有截图分辨率下无法确认其视觉效果。硬性限制,已通过实时测试确认并由工具强制执行(在任何 COM 调用之前报错):单个泳道最多只能容纳 2 个斑点——超过此数量后,ChemDraw 自身的AddSpot会静默地不执行任何操作,且完全不报错。与上文的箭头/符号/括号一样,TLC 板也属于独立浮动对象,不会随结构移动。 本 README 介绍安装和使用方法,不是逐个工具的参考文档(每个工具的确切参数、返回格式和使用说明均位于各自的文档字符串中,任何 MCP 客户端都可以通过工具列表查看),也不介绍内部架构或 ChemDraw-COM 的实现细节(请参阅AGENTS.md了解这些内容。无论你是在调试、好奇它的工作原理,还是要扩展它,只要查看源代码,这份文档都值得一读,不只是最后一种情况)。
基于 ChemDraw 26(Revvity) 在 Windows 11 / Python 3.14 上构建并验证。
这是一个独立的非官方项目,与 Revvity 或 PerkinElmer 没有关联,也未获其认可或支持。“ChemDraw” 是其各自所有者的商标;此处仅用于说明兼容性。使用本项目需要你拥有 ChemDraw 的有效许可副本。
安装
cd live-chemdraw-mcp
python -m venv .venv
.venv\Scripts\python -m pip install pywin32 rdkit "mcp[cli]" pytest
在 %APPDATA%\Claude\claude_desktop_config.json 中注册(将
C:\\path\\to\\live-chemdraw-mcp 替换为你克隆项目的位置):
"mcpServers": {
"chemdraw": {
"command": "C:\\path\\to\\live-chemdraw-mcp\\.venv\\Scripts\\python.exe",
"args": ["C:\\path\\to\\live-chemdraw-mcp\\server.py"]
}
}
重启 Claude 桌面应用。无需在 ChemDraw 端安装任何内容——MCP 服务会通过 COM 连接到正在运行的 ChemDraw(或启动一个实例)。
测试
.venv\Scripts\python -m pytest— 纯逻辑的单元测试,全部使用模拟对象/固定数据运行,无需启动 ChemDraw:布局计算、样式预设、HRMS 文本、去重、编号、差异比较、RDKit 枚举、CDXML 解析/图构建、子结构/SMARTS 匹配、画布/说明文字分类、试剂文本下标格式化、键拆分,以及对 COM 工作线程内部逻辑的测试,涵盖超时/唤醒状态机和targets.py的目标解析及缓存过期重试逻辑。.venv\Scripts\python test_smoke_visual.py— 实时冒烟测试;端到端操作可见的 ChemDraw 窗口。请观察运行过程。
开发
包布局,以及此连接器针对 ChemDraw COM 的种种特性(COM 崩溃陷阱、静默无操作、时序/缓存问题)——查看源代码时请参阅 AGENTS.md,不只是要扩展代码时才看。如果你只是通过 Claude 与 MCP 服务交互(本 README 的其余部分就是介绍这一点),这些内容都无关紧要;但只要你在阅读代码,它们就是理解代码为何如此设计的最快途径。
故障排除
- 画布文本编辑尚未完成 / 文本工具仍处于激活状态 — 会使 ChemDraw 的 UI 线程陷入模态循环,从而阻塞 COM。连接器会自动恢复:超时时,它会通过 Win32 向 ChemDraw 当前聚焦的控件发送 Escape(
com/nudge.py,使用独立于受阻 COM 的通道),然后重试,因此意外遗留的编辑不会再卡住会话。只有自动恢复失败时,才会出现下方的“无响应”错误。 - “ChemDraw 未响应自动化请求” — 存在模态对话框(或自动唤醒操作未能清除的编辑);关闭对话框或按 Escape / 单击空白画布,然后重试。
- “ChemDraw 在此操作期间停止响应” — ChemDraw 崩溃后已重新启动;请从
%LOCALAPPDATA%\chemdraw-mcp\backups中的自动备份恢复未保存的工作。 - 工具会报告形如
claude-a1b2c3d4的结构 ID;如果某个结构“已不存在”,则说明该结构已被删除/重建——请让 Claude 调用chemdraw_get_document_state重新盘点页面。
许可证
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。