live-chemdraw-mcp について
live-chemdraw-mcpは、COMオートメーションを介してWindows上で開いているChemDraw文書にAIアシスタントを接続します。MCPクライアントから構造編集、図の配置、化学的な確認、出版向けの操作を行えます。
主な機能
- 01化学構造の挿入とエクスポート
- 02基質スコープ表の作成
- 03略記基の展開・縮約
- 04図のレイアウト確認と調整
- 05立体化学と重複構造の確認
- 06反応注釈とTLCプレートの作成
活用シーン
- 01ChemDrawで開いた構造の編集
- 02構造と説明文の図パネルへの配置
- 03立体化学や原子価の確認
- 04反応スキームや基質スコープ図の作成
MCP 対応
MCPサーバーは、構造編集、レイアウト、化学的な確認、図の作成など、起動中のChemDrawを操作するツールを公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
live-chemdraw-mcp
Windows 上の COM オートメーションを介して AI アシスタントを起動中の ChemDraw ウィンドウに接続する MCP サーバーです。開いているドキュメント内で、構造を直接描画、編集、整理できます。 機能:
- 挿入とエクスポート — SMILES、名称、molfile、InChI、CDXML に対応。画像、構造式テキストとしてエクスポートするか、クリップボードに直接コピーできます
- 基質適用範囲表 — 1 回の呼び出しで適用範囲全体の図を作成できます。学術誌のカラム幅に合わせてサイズを調整し、各構造式の下にラベルと収率を配置します
- 略記基 — インラインで官能基を検出して短縮します(
chemdraw_contract_group:Ph、TES、Boc、Ts など約 40 種の基。RDKit 経由で SMARTS にマッチ)。また、構造式全体を 1 つのラベルに短縮/展開できます。文書全体を 1 回の呼び出しで一括展開することもできます - 図のレイアウト —
chemdraw_describe_canvasはページ全体を意味的に読み取り、構造式、対応する所有者と組み合わされたキャプション、パネル枠、重なり/はみ出しの違反を示します。chemdraw_arrange_in_regionは 1 回の呼び出しで構造式をパネル枠内に収め、キャプションも一緒に移動します。サイズ変更は一切行いません。生のジオメトリに基づく計画にはchemdraw_get_layout/chemdraw_move_objectsを使えます。自動で巻き添え移動を検出します - 化学構造の QC — 立体化学の読み取り/設定(くさび線/破線、「and1」/「or1」による拡張立体化学のグループ化)、重複検出、原子価の警告、IUPAC 命名、HRMS テキストの生成
- 出版用ツール — 学術誌スタイルのプリセット、反応スキーム、RDKit で特性を計算した誘導体ライブラリの列挙
- 注釈 — 反応機構/反応矢印(
chemdraw_make_arrow:塗りつぶし/中抜き/角度付きの矢尻、電子の移動を示す単一かぎ矢印、取り消し線付きの「進行不可」経路マーカー、双極子マーカー)と記号(chemdraw_make_symbol:ラセミ体/絶対配置/相対配置の立体記述子ラベル。孤立電子対/ラジカル/ダガーも配置できますが、現在は非常に小さく、拡大できないように見える既定サイズで描画されます。ツール自身の docstring を参照してください)。 同位体標識(chemdraw_edit_atom(..., isotope=13, ...))は、ChemDraw の表示ラベルにとどまらず、実際の同位体表記としてエクスポート後も保持されます。 制限: 矢印/記号は独立して浮いています。chemdraw_move_objects/chemdraw_transformで近くの構造式を移動しても、一緒には移動しません。これは後述するキャプションについて既に記載されているものと同種の問題です。 曲線/弧状矢印と、2 つのオブジェクトから成る真の ⇌ 平衡矢印ペアには、まだ対応していません。どちらも実際に動作を確認しましたが、設計を確定するには、さらなる COM 調査が必要です(docs/com_typelib/を参照)。 - ポリマー繰り返し単位の括弧(
chemdraw_make_bracket:角括弧/波括弧/丸括弧のグリフ、SRU/モノマー/コポリマー/架橋などの用途。ChemDraw が自動生成する略記ラベル(「n」/「mon」/「xl」など)付き)で、構造式(または明示的な長方形)を開き括弧と閉じ括弧のペアで囲みます。 制限(実動作で確認済み、未解決): RepeatCount/SRULabel/ComponentOrder は COM 経由では設定できません(get と put の両方で確実に例外が発生します)。2 つ目の括弧を同じ自動化セッション内で作成すると、ペアの鏡像方向(「[...]」か、同じ向きのマーク 2 つか)が不安定になります。エクスポートした画像を必ず確認してください。括弧は純粋な装飾要素です(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 呼び出し前に例外が発生します:1 つのレーンに配置できるスポットは最大 2 つです — それを超えると、ChemDraw 自身のAddSpotは何もせず、エラーも発生しません。上記の矢印/記号/括弧と同じく、独立して浮いており、構造式と一緒には移動しません。 この README では、セットアップと使い方を説明します。各ツールの正確なパラメーター、戻り値の形式、使用上の注意を記載した、ツールごとのリファレンスではありません。これらは各ツールの docstring に記載されており、MCP クライアントのツール一覧から確認できます。また、内部アーキテクチャや ChemDraw-COM の実装に関する説明もありません(それらについてはAGENTS.mdを参照してください。ソースコードを確認する際に役立つ内容で、デバッグ中や仕組みに興味がある場合、拡張する場合だけでなく、どんな理由であれ参考になります)。
Windows 11 / Python 3.14 上の ChemDraw 26(Revvity) を対象に構築し、検証しています。
これは独立した非公式プロジェクトです。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 側でのインストールは不要です。サーバーは COM 経由で、起動中の ChemDraw に接続するか、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 からサーバーを使うだけなら、これらを知る必要はありません(この README の残りで説明しています)。ただし、どんな理由であれコードを読む場合、コードがこのような形になっている理由を理解する最も早い方法です。
トラブルシューティング
- 編集中のキャンバステキスト/テキストツールがアクティブなまま — ChemDraw の UI スレッドがモーダルループに入り、COM がブロックされます。コネクターは自動で復旧します。タイムアウト時に Win32 経由で ChemDraw のフォーカス中のコントロールに Escape を送信し(ブロックされた COM とは別のチャネルである
com/nudge.pyを使用)、再試行するため、編集状態が残っていてもセッションが止まることはありません。この処理に失敗した場合にのみ、以下の「応答していません」というエラーが表示されます。 - 「ChemDraw is not responding to automation」 — モーダルダイアログが開いているか、自動ナッジで解除できなかった編集状態があります。ダイアログを閉じるか、Escape キーを押すか、空白のキャンバスをクリックしてから再試行してください。
- 「ChemDraw stopped responding during this operation」 — ChemDraw がクラッシュして再起動されました。
%LOCALAPPDATA%\chemdraw-mcp\backupsにある自動バックアップから、未保存の作業を復元してください。 - ツールが
claude-a1b2c3d4のような構造 ID を返すことがあります。「もう存在しない」と表示された場合は、構造が削除または再構築されています。Claude にchemdraw_get_document_stateを呼び出してもらい、ページの内容を再確認してください。
ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。