Live Chemdraw Mcp

io.github.MALeitch由 GitHub 账号 MALeitch 发布v1.2.0更新于 Oct 24, 2026

Connects AI assistants to a live ChemDraw window on Windows via COM automation.

已验证STDIO仅桌面开发者工具媒体与设计

概览

AI 生成的概览

让助手通过 COM 自动化在 Windows 上直接操作正在运行的 ChemDraw 窗口,绘制、编辑和整理化学结构。

可以做什么
连接到正在运行的 ChemDraw 窗口(或启动一个),并操作当前打开的文档:以 SMILES、名称、molfile、InChI 或 CDXML 插入和导出结构,导出图片或剪贴板内容,构建底物范围表格,收缩或展开简写基团,并把结构排入面板框。它还能读取和设置立体化学、检测重复结构、给出价态警告、生成 IUPAC 名称和 HRMS 文本、应用期刊样式预设、用 RDKit 属性枚举衍生物库,并添加箭头、符号、同位素标记、聚合物括号和 TLC 板。
适用场景
适合已经在 ChemDraw 中工作的化学和化学信息学流程,希望助手直接在打开的文档中构建或整理图、表格和反应式,而不是另存文件。适用于面向发表的绘图、结构质控以及重复性的排版或标注任务。
运行要求
仅限 Windows 桌面;作为本地 Python 进程由 MCP 客户端启动。需要 Python 3.14 并安装 pywin32、rdkit 和 mcp[cli],以及同一台机器上正在运行或可启动的已授权 ChemDraw(基于 Windows 11 上的 ChemDraw 26 构建和验证)。未声明 API 密钥或环境变量。
安装前请注意
它会写入并修改 ChemDraw 中当前打开的文档,可能影响未保存的工作;恢复备份保存在本地应用数据目录下。部分操作不可靠或不受支持:箭头、符号、括号和 TLC 板是自由浮动的,不会随结构移动,括号方向可能出错,单个 TLC 泳道最多只能放两个斑点。这是独立的非官方项目,与 Revvity 或 PerkinElmer 无关联,也不受其支持。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Live Chemdraw Mcp,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

live-chemdraw-mcp

[Tests]

MCP server that connects AI assistants to a live ChemDraw window on Windows via COM automation — draw, edit, and organize structures directly in the document you have open.

Capabilities:

  • Insert & export — SMILES, name, molfile, InChI, CDXML; export as an image, structure text, or straight to the clipboard
  • Substrate-scope tables — build a whole scope figure in one call, sized for journal columns, with labels/yields placed under each structure
  • Shorthand groups — detect and contract functional groups inline (chemdraw_contract_group: Ph, TES, Boc, Ts... ~40 groups, SMARTS-matched via RDKit), or contract/expand a whole structure to a single label, including a one-call bulk expand across the whole document
  • Figure layout — chemdraw_describe_canvas gives one semantic read of a whole page (structures, captions matched to their owners, panel boxes, overlap/overflow violations); chemdraw_arrange_in_region fits structures into a panel box in one call, captions riding along, nothing ever rescaled; chemdraw_get_layout/chemdraw_move_objects for raw-geometry plans with automatic collateral-movement detection
  • Chemistry QC — read/set stereochemistry (wedge/hash, "and1"/"or1" enhanced-stereo grouping), duplicate detection, valence warnings, IUPAC naming, HRMS text generation
  • Publication tools — journal style presets, reaction schemes, and derivative-library enumeration with RDKit-computed properties
  • Annotations — mechanism/reaction arrows (chemdraw_make_arrow: solid/ hollow/angle heads, single-barb "fishhook" electron-pushing arrows, crossed-out "no-go" pathway markers, dipole markers) and symbols (chemdraw_make_symbol: racemic/absolute/relative stereo-descriptor labels; lone pairs/radicals/daggers also place but currently render at a tiny, apparently unscalable default size — see the tool's own docstring). Isotope labeling (chemdraw_edit_atom(..., isotope=13, ...)) survives export as real isotope notation, not just a ChemDraw-display label. Limitation: arrows/symbols are free-floating — moving a nearby structure with chemdraw_move_objects/chemdraw_transform will NOT carry them along, the same class of gap already documented for captions below. Curved/arc arrows and true double-object ⇌ equilibrium-arrow pairs aren't supported yet — both were probed live and need more COM investigation before a design commitment (see docs/com_typelib/)
  • Polymer repeat-unit brackets (chemdraw_make_bracket: square/curly/ round glyph, SRU/monomer/copolymer/crosslink/... usage with ChemDraw's own auto-generated abbreviation label — "n"/"mon"/"xl"/etc.) wraps a structure (or an explicit rectangle) with an opening + closing bracket pair. Limitations, confirmed live, not solved: RepeatCount/SRULabel/ ComponentOrder cannot be set via COM at all (both get and put reliably raise); the pair's mirrored orientation ("[...]" vs two identically- oriented marks) is unreliable once a second bracket exists in one automation session — always check the exported image; brackets are purely decorative (not bound to real atom/bond membership despite ChemDraw exposing InsideAtoms/ContainedAtoms/CrossingBonds properties — confirmed these don't reflect true geometry) and share the same free-floating/doesn't-move-with-the-structure limitation as arrows/ symbols above
  • TLC plates (chemdraw_make_tlc_plate: rectangular plate outline with labeled Rf-spot lanes for reaction-monitoring figures) — a spot's vertical position is driven entirely by its rf (0-1) property, which ChemDraw itself interpolates between the plate's origin/solvent-front lines (confirmed live via measured screenshot pixel positions, within ~1% of the expected fraction) — no manual position math needed. Supports show_rf (auto "Rf = 0.NN" label), filled/bold/dashed (a hollow dashed-outline circle is visually confirmed distinct from a solid dot), and an experimental tail (comet-tail smear) whose visual effect could not be confirmed at available screenshot resolution. Hard limit, confirmed live and enforced by the tool (raises before any COM call): a single lane can hold at most 2 spots — ChemDraw's own AddSpot is a silent no-op past that, with no error at all. Same free-floating/ doesn't-move-with-the-structure limitation as arrows/symbols/brackets above.

This README covers setup and usage — not a per-tool reference (each tool's exact parameters, return shape, and usage notes live in its own docstring, visible to any MCP client via its tool listing) and not internal architecture or ChemDraw-COM implementation notes (see AGENTS.md for those — useful reading whenever you're looking at the source, whether you're debugging something, curious how it works, or extending it, not only for the last one).

Built and validated against ChemDraw 26 (Revvity) on Windows 11 / Python 3.14.

This is an independent, unofficial project. It is not affiliated with, endorsed by, or supported by Revvity or PerkinElmer. "ChemDraw" is a trademark of its respective owner; it's referenced here only to describe compatibility. You'll need your own licensed copy of ChemDraw to use this.

Setup

powershell
cd live-chemdraw-mcp
python -m venv .venv
.venv\Scripts\python -m pip install pywin32 rdkit "mcp[cli]" pytest

Register in %APPDATA%\Claude\claude_desktop_config.json (replace C:\\path\\to\\live-chemdraw-mcp with wherever you cloned it):

json
"mcpServers": {
  "chemdraw": {
    "command": "C:\\path\\to\\live-chemdraw-mcp\\.venv\\Scripts\\python.exe",
    "args": ["C:\\path\\to\\live-chemdraw-mcp\\server.py"]
  }
}

Restart the Claude desktop app. No ChemDraw-side installation is needed — the server attaches to a running ChemDraw (or launches one) over COM.

Testing

  • .venv\Scripts\python -m pytest — unit tests for the pure logic, all running against fakes/fixtures with no live ChemDraw required: layout math, style presets, HRMS text, dedup, numbering, diff, RDKit enumeration, CDXML parsing/graph-building, substructure/SMARTS matching, canvas/caption classification, reagent-text subscript formatting, and bond-splitting, plus connector-internals coverage for the COM worker's timeout/nudge state machine and targets.py's target-resolution and stale-cache-retry logic.
  • .venv\Scripts\python test_smoke_visual.py — live smoke test; drives a visible ChemDraw window end to end. Watch it run.

Development

Package layout, and the ChemDraw COM quirks this connector was built around (COM crash traps, silent no-ops, timing/caching gotchas) — see AGENTS.md whenever you're looking at the source, not only if you're extending it. None of it matters if you're just talking to the server through Claude (that's what the rest of this README covers), but it's the fastest way to understand why the code is shaped the way it is if you're reading it for any reason.

Troubleshooting

  • In-progress canvas text edit / text tool left active — puts ChemDraw's UI thread in a modal loop that blocks COM. The connector auto-recovers: on a timeout it posts an Escape to ChemDraw's focused control via Win32 (com/nudge.py, a channel separate from the blocked COM one) and retries, so a stray edit no longer wedges the session. Only if that fails do you see the "not responding" error below.
  • "ChemDraw is not responding to automation" — a modal dialog is open (or an edit the auto-nudge couldn't clear); dismiss the dialog or press Escape / click empty canvas, then retry.
  • "ChemDraw stopped responding during this operation" — ChemDraw crashed and was relaunched; recover unsaved work from the automatic backups at %LOCALAPPDATA%\chemdraw-mcp\backups.
  • Tools report structure ids like claude-a1b2c3d4; if one "no longer exists," the structure was deleted/rebuilt — ask Claude to call chemdraw_get_document_state to re-inventory the page.

License

MIT

来源:README.md,提交 a9cebc6

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v1.2.0最新Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分