Skip to main content
Glama

mcp-dm

让 AI 帮你使用 DigitalMicrograph,少点重复的 GUI,少做手动的数据搬运。

English · Agent 安装与使用指南 · 完整技术参考 · 开发者说明

平时在 DM 里看图、裁剪、做 FFT;遇到更复杂的分析,再把数据导出到 Python。mcp-dm 就是为这样的工作方式做的。

它把本机的 Gatan DigitalMicrograph(DM)连接到支持 MCP 的 AI 助手,让助手通过明确的工具读取图像信息、执行已支持的操作、取得带标定的结果。你继续使用熟悉的 DM,不必为了每一次重复操作在它的脚本编辑器里手写程序。

它不是另一个聊天软件,也不是一个替你决定科学结论的图像分析模型。它是让 Agent 使用 DM 的接口。

可以拿它做什么?

安装并连接后,可以从一个具体任务开始。以下示例面向主线默认的 Python 后端;实验性 C++ 后端的能力不同,见下文。

你想做的事

可以这样告诉助手

了解当前数据

“看看 DM 里打开了哪些图,列出尺寸、数据类型和标定,先别改任何东西。”

比较几个区域

“对我指定的两个区域分别做强度统计,保留选区坐标和结果。”

测量剖面或周期

“沿这两个点取剖面,再检查这个区域的 FFT;标定不完整的地方请说明。”

检查选区

“先给我预览,并标出准备分析的区域,我确认后再继续。”

交给外部分析

“把这个区域导出为保留原始数值和标定的数据,再在独立目录里做拟合。不要修改源图。”

最后一个例子需要 Agent 自身具有文件和代码执行能力:MCP 负责数据交接,外部脚本负责额外计算,两者的来源应明确区分。 它不是一个已经内置的自动拟合工具。

FFT 的频率峰也不是自动确认的晶面或物相。预览是否能被模型直接看到,取决于客户端;生成 PNG 不等于模型已经看见了图。

实验性的独立 image_* 工具也可直接查看无物理标尺的 uint16 多帧 TIFF, 比较同一区域、调整显示、做外部 FFT,并修改绑定原图或频率坐标的标注。 频谱支持稍压暗背景的出图预设、局部频域放大和细小标注;原谱与原始数值保留。使用方法见 多轮出图与标注,默认后端不变。 口述 XY 标定、局部修改标记和本地图上选择的试用入口见 统一试用说明;这些能力已整合到主线,但仍须显式配置启用,并遵守各自的实验性支持范围。

另可启用 ASE 结构与电子衍射工具: 独立读取 CIF/XYZ,以同一晶带轴取向查看结构并调用 diffsims 运动学模拟,再用明确配准比较实验测量与模拟反射。 结构窗口支持复用与显式关闭。 捕获的数据可自动继承已验证的 DM 轴标定, 无需重复输入尺度;缺标定仍可在像素域观察。 数值回传 DM 已有限支持新建小型二维 float32 工作图, 仅接受实空间 nm 或倒空间 1/nm,不覆盖原图,不把几何一致当作唯一判相。 更正中心、尺度或点位后,可复用测量并继续比较,保留旧版本与独立验证反射。

Related MCP server: RELION MCP Server

产品方向:多轮交互式显微分析(规划中)

我们想让研究者在 DM 中继续看图、选择区域,让 Agent 接住当前图像、辅助出图、做局部 FFT、提供可修改的标注并与你反复讨论证据;不要求第一次就自动确定唯一晶体结构。画线、直方图、衍射索引都是实现这一体验的基础能力。

例如,你可以逐步要求:“把这张 ADF 图返回来,调亮一点、压低背景,再给出不同对比度版本”;“对这个区域出一张清楚的 FFT 图,把条纹和两套反射分别标出来”;“这里可能有孪晶或层错,请比较两侧局部频谱,给出几种解释;我修正峰位后重新分析”。

这是一项仍在推进的产品路线;上述预览、标注和受限数值回传已有各自的实现范围,通用图像回传、任意曲线/高通、自动标注和任意 DM 双向编辑仍未完整实现。 原始科学像素、改变科学数据的处理结果、仅影响观感的显示参数以及可撤销的标注层分别记录,保留标定、操作版本和来源。详见交互式显微分析技术路线。

不换掉你的工作方式,只减少中间步骤

你仍然可以在 DM 中手动观察和选择区域,把重复测量、裁剪、结果整理交给 Agent。需要其它科学库时,再显式导出数据继续处理。

你提出任务 → Agent 调用 MCP → DM 中的数据与已支持的处理
                              ↓
                    带数值、坐标和标定的结果
                              ↓
                 继续查看,或交给外部 Python 分析

不要求每个任务都生成报告,也不要求把所有算法塞进插件。报告与复跑是可选工作流。数据交接包括读取、捕获、导出及上述受限数值回传;在 DM 中手动修改新工作图后,再次捕获其当前状态,旧快照保留。

我们优先保证的是:处理的是你指定的图、选区没有被偷偷改变、单位没有丢失、失败不会被说成成功。

现在能用到哪一步?

路径

当前范围

使用前要知道

主线默认:v0.6 Python 后端

图像与元数据读取、二维统计、剖面、FFT 摘要、裁剪、科学数据导出,以及可选的捕获与预览

通过 DM 内嵌 Python 连接;部分数值计算使用 NumPy。预览需要独立环境,详见安装指南。

可选:原生 C++ 实验后端

21 个范围受限的工具:原生摘要、uint16 序列按帧副本、裁剪、有限算术/FFT/滤波、GUI 矩形与线选区、一维剖面和直方图、PNG 预览、可见文档、有界数值交接与小型 float32 数值导入

仅限 Windows x64 GMS 3.53.4137.0 的精确指纹与各操作已验证的类型/尺寸。导入仅限 ASCII nm/1/nm;其它单位与类型未开放。NPY 交接不等于 DM 原生文件保存;详见原生工作流。

可选:独立 TIFF/像素图像工具

主线中的可选工具可直接打开 uint16 多帧 TIFF、选帧、同 ROI 固定显示比较、像素 FFT、标注修订与 NPY 导出

不需要 DM 运行,不要求物理标尺;明确为外部计算,须单独配置。见像素工作流。

可选外部晶体学伴随工具

自动斑点/中心候选、带标定的间距与夹角、FCC/BCC/HCP 联合几何索引及指定 CIF 比较

见完整流程。ASE/NumPy/SciPy 在独立环境运行;只在证据不足时补充确认,保留多解。已做合成及有限只读实验数据测量验证,普通客户端尚待验收,不是自动唯一判相。

下一阶段:交互式显微分析

从明确 DM 图像返回可见预览、非破坏式显示调节、局部 FFT 出图、可修改标注和多轮解释;在此基础上继续衍射与晶体学测量

见交互工作流路线与晶体学任务。均为发展方向,尚非完整已实现能力。

第一次试用,先用主线默认后端。 原生版本请单独阅读实验说明与版本限制,不要直接在未知 GMS 版本上使用。

现有谱学和 4D-STEM 接口仍保留,但支持的数据布局有限;真实 EDS/EELS 定量、通用 4D 数据兼容和重构不属于本项目已验证的承诺。先用小型合成数据检查自己的环境,再处理实验数据。

怎么开始?

你需要 Windows x64、已启用内嵌 Python 的 DigitalMicrograph/GMS、Node.js 18 或更新版本,以及一个支持 MCP 的 Agent 客户端。使用 Agent 不等于必须更换 DM,也不需要为本项目单独注册账号。

让 Agent 帮你安装

把仓库地址和这句话交给具有本机操作权限的 Agent:

请按 https://github.com/wuchqwq/mcp-dm 中的 README.agent.md 帮我安装并连接默认 DigitalMicrograph MCP。先检查环境和现有配置,不覆盖其它 MCP、不升级 GMS 的 Python。连接后确认是真实 DM,并列出当前图像;不要修改实验数据。

安装仍可能需要你确认环境或完成客户端操作,不是所有客户端都能自动安装。

自己安装

先取得代码,在仓库根目录启动默认桥:

git clone https://github.com/wuchqwq/mcp-dm.git
Set-Location .\mcp-dm
powershell -NoProfile -ExecutionPolicy Bypass -File .\setup\start_bridge.ps1

Node 服务没有 npm 运行依赖。随后按 MCP 配置示例填写仓库绝对路径,并在自己的客户端注册服务。完整的环境检查、Codex 注册、停止方式和故障排查见 Agent 安装与使用指南及技术参考。

默认 Python 后端需要图像预览时,另外创建外部 Python 环境,安装 requirements-preview.txt 并配置它的解释器路径;不要安装进 GMS 管理的环境。只做基本读取和测量不需要这一步。

第一次连接可以说:“确认连接的是真实 DM,然后只列出图像和标定。”配置成功、发现工具和实际执行成功是三件不同的事。

用之前,请留意这几件事

保护原数据。 从副本或合成数据开始,明确图像和选区,导出到新路径。图像 ID 固定的是对象,不会冻结它的像素;处理期间不要同时编辑源图。

默认桥会占用 DM 的 Python 脚本槽。 需要运行另一个 DM Python 脚本时,应先断开客户端并正常停止桥,完成后再启动。不要因此强制结束 DM。原生 C++ 路线旨在避免这一长期占用,但目前有严格的版本和功能限制。

本地连接不等于数据不会进入模型服务。 客户端可能把预览、元数据、路径或数值发送给所选模型;请按实验室的数据政策选择和配置服务。

这里没有显微镜硬件控制。 本项目只面向采集后的数据,不控制相机、电子束、样品台或光路,也不把 AI 解释当作科研结论。

继续了解

Agent 安装与使用指南说明如何接入、选对数据、处理错误和交接结果;完整技术参考保留安装命令、工具参数和数值约定。修改代码请读 AGENTS.md,开发方向见 ROADMAP.md和交互式显微分析技术路线。

原生频谱导出同时保留数学频率坐标和 DM 原始标定;该元数据链已完成限定合成实机核对,见科学数据交接说明。

多版本兼容层生成器目前只是独立提案,不是现成的自动适配功能。

项目代码采用 MIT License。DigitalMicrograph/GMS、Gatan 运行时、厂商文档和实验数据不随仓库分发;本项目不是 Gatan 官方产品。

当前分支新增中间结果释放与完整区域数值交接,继续保留实验后端的类型、尺寸和版本限制。SHOW 回执不保证当前工作区可见;原生工作区切换尚未接通。

实验原生后端支持读取明确图像的 GUI 矩形选区并接续分析、宽度 1 像素的水平或竖直原生剖面和有限原生直方图,可交给 DM 文档显示并导出真实一维 NPY 与元数据。均保留各自的限定资格范围;斜线、宽线及一般物理强度换算尚未接通。完整步骤见GUI 测量与数据交接。

Available Tools

21 tools
dm_2d_analyzeA

可选报告示例,不是使用 DM 的必经步骤。对捕获包组合统计、剖面和完整 FFT,在新目录保存数值、图、报告及复跑脚本。需要独立报告环境;简单测量优先用单独工具。operation_id + result_dir 用于查询,不自动重跑不确定任务。

Inputs: result_dir (required), capture_dir (required), operation_id (required), roi, +2 more.

dm_2d_captureA

一次解析图像(默认 front),在新目录保存有界二维像素副本与标定;后续二维预览和分析固定读取该包。捕获期间请勿编辑源图;DM API 不提供像素与标定的原子快照。

Inputs: output_dir (required), rect, image_id.

dm_2d_previewA

从 dm_2d_capture 包生成线性显示 PNG 和准确源坐标映射;可叠加 ROI 与剖面条带。显示拉伸不用于计算,返回 MCP image block、本地 PNG 路径及捕获时的标定。只看图无需调用 dm_2d_analyze;不能显示图片时明确说明,不假装看见。

Inputs: capture_dir (required), roi, profile, max_side.

dm_2d_resultA

只查询捕获或分析目录中的状态与输出哈希。running 返回 unknown,不判断计算已停止;不自动重发捕获或分析。两种目录参数恰选其一。

Inputs: result_dir, capture_dir.

dm_4dstem_openB

只读索引未压缩uint8 DM4中的唯一4D数据集。仅解析有界header,不整文件OpenImage;后续由Gatan原生只读binary stream按小块读取。显式NumPy轴scan_axes=[0,1]和detector_axes=[2,3]。

Inputs: path (required), scan_axes (required), detector_axes (required).

dm_4dstem_readA

用Gatan原生只读流读取最多256个扫描位置且不超过16MiB的小4D块,创建独立DM图像并复制四轴物理标定;不修改原文件。

Inputs: dataset_id (required), scan_bounds (required).

dm_4dstem_virtualA

分块计算虚拟圆形BF/环形ADF、全探测器总强度与平均/总衍射图,发布独立DM图像。每次最多8192扫描位置,分批覆盖全scan;整数uint64求和,原生发布仅允许精确dtype转换;不是硬件角度标定或HAADF认定。

Inputs: detectors (required), dataset_id (required), scan_bounds (required), chunk_patterns.

dm_cropA

在 DM 内原生裁出二维独立子图,返回新图像 id、标定与 NumPy 轴序 shape[y,x];右下边界不包含。原图保持不变;不支持三维/四维直接裁剪。

Inputs: rect (required), name, image_id.

dm_datasetsA

枚举当前 DM 中所有图像数据集:id、名称、形状、维度、dtype、类型提示(image / stack / spectrum image)、每维标定(scale/unit/origin)。分析前必查。

Inputs: no named parameters.

dm_exportA

导出到新文件,禁止覆盖。dm3/dm4 使用明确 DM writer;TIFF 使用保留原始 dtype 的无压缩科学数据 writer,附嵌入标定;所有格式附标定侧文件。支持 npy/csv/txt/tif/dm3/dm4,拒绝未经定义的 PNG 强度映射。

Inputs: path (required), format, image_id.

dm_fftB

二维 FFT:返回去均值后的 DC、频谱格点坐标与按两个方向标定换算的空间频率/间距。d_pix 仅为频谱格点半径,不能当作 1/pixel 或晶格间距。

Inputs: rect, top_n, image_id.

dm_metadataA

读取指定元数据子树。先检查 path_status(found/not_found/unavailable),再检查 complete 和 issues;先定位 prefix 再按子树预算读取,不把截断或读取失败当作标签缺失。

Inputs: prefix, image_id, max_depth.

dm_openB

在 DigitalMicrograph 中打开本地数据文件(dm3/dm4 及其它 DM 支持的格式),返回该文档内的图像 id 列表。dm3/dm4 的采集元数据与标定会随文件一起载入。

Inputs: path (required), show.

dm_profileA

沿两点取强度剖面:直接传 x0/y0/x1/y1 原图像素中心坐标(不是 start/end;只有 dm_2d_preview 的 profile 对象用 start/end)。可指定 width,按标定返回距离。

Inputs: x0 (required), x1 (required), y0 (required), y1 (required), +2 more.

dm_run_scriptA

在 DM 内执行 DM-Script(等价于脚本窗口)。用于调用 DM 原生算法:滤波、漂移校正、EELS/EDS 定量、SI 处理、批量宏等。执行后会自动比对图像集合,报告新产生/被删除的图像 id,便于接着用其它工具量化。默认关闭,需环境变量 DM_MCP_ALLOW_DMSCRIPT=1。

Inputs: script (required), expect_new_image.

dm_spectrumA

提取原始通道中心与 float64 强度,按空间范围作 sum/mean;能量窗采用 low<=E<high。实验性基础接口;真实 EDS/EELS/SI 为 NOT_TESTED(未验证),仅合成数据覆盖。不自动识别谱种,不作背景扣除或元素/化学定量,不假定强度单位;拒绝 4D 衍射或 nm 标定能量轴。

Inputs: image_id (required), energy_axis (required), reduction, spatial_bounds, +1 more.

dm_spectrum_exportA

按 dm_spectrum 的空间归约与能量选择导出新 CSV(energy_eV,intensity;强度为 float64)和元数据侧文件,禁止覆盖或写回原始数据。实验性基础接口;真实 EDS/EELS/SI 为 NOT_TESTED(未验证),仅合成数据覆盖。不自动识别谱种,不作背景扣除或元素/化学定量,不假定强度单位;拒绝 4D 衍射或 nm 标定能量轴。

Inputs: path (required), image_id (required), energy_axis (required), reduction, +2 more.

dm_spectrum_infoA

读取明确指定数据集的光谱轴、空间选择及能量标定信息。实验性基础接口;真实 EDS/EELS/SI 为 NOT_TESTED(未验证),仅合成数据覆盖。不自动识别谱种,不作背景扣除或元素/化学定量,不假定强度单位;拒绝 4D 衍射或 nm 标定能量轴。

Inputs: image_id (required), energy_axis (required), spatial_bounds.

dm_spectrum_integrateA

对指定能量窗内原始通道作逐空间位置求和,保留其余空间轴。无 bin-width 或梯形权重;结果不能直接认定为元素/化学分布图。实验性基础接口;真实 EDS/EELS/SI 为 NOT_TESTED(未验证),仅合成数据覆盖。不自动识别谱种,不作背景扣除或元素/化学定量,不假定强度单位;拒绝 4D 衍射或 nm 标定能量轴。

Inputs: image_id (required), energy_axis (required), energy_window_eV (required), spatial_bounds.

dm_statsB

区域统计:min/max/mean/stddev/分位数。可限定矩形区域。

Inputs: rect, image_id.

dm_statusA

链路自检:桥接后端(digitalmicrograph/mock)、DM 版本、宿主 Python 与 numpy 版本、官方离线手册路径。DM 连接或原生操作出错时检查它;本地预览/报告依赖错误应检查 DM_ANALYSIS_PYTHON,不要因此重启 DM。

Inputs: no named parameters.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.6/5.0

    Scored across 21 tools

    Disambiguation3/5

    Most tools have distinct roles, but several boundaries blur: dm_2d_analyze explicitly bundles the same stats/profile/FFT work as dm_stats/dm_profile/dm_fft; dm_spectrum_export overlaps heavily with the general dm_export (which already supports CSV); and dm_datasets vs dm_spectrum_info both report axis calibration. The long descriptions do help disambiguate, but an agent must read carefully to pick the right tool for export/analysis.

    Naming Consistency4/5

    All names are snake_case with a consistent dm_ prefix and predictable domain_action structure (dm_2d_capture, dm_4dstem_virtual, dm_spectrum_integrate). The minor deviation is that core 2D operations (dm_stats, dm_profile, dm_fft, dm_crop) lack the dm_2d_ domain prefix used by their siblings, and dm_spectrum sits unsuffixed next to dm_spectrum_info.

    Tool Count3/5

    21 tools is on the heavy side of the 16-25 borderline band. The breadth (2D imaging, 4D-STEM, spectroscopy, I/O, diagnostics) justifies many tools, but the dm_2d_* pipeline plus separate dm_stats/dm_profile/dm_fft adds redundancy rather than strictly earning each slot.

    Completeness4/5

    The surface covers open → enumerate → capture → analyze → export across 2D, 4D-STEM, and spectrum workflows, plus status/script escape hatches. Gaps are modest: no document close/delete, no ROI lifecycle management, and 4D-STEM lacks diffraction-level analysis (e.g. disk detection, center-of-mass) beyond virtual imaging, but agents can work around these via dm_run_script.

    Maintenance

    ActivityMaintained
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      B
      maintenance
      Enables AI agents to control Fiji/ImageJ for microscopy image analysis through natural language commands, supporting operations like image opening, filtering, particle analysis, and automated workflows.
      19
      42 PyPI
      6
      BSD 3-Clause
    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables AI agents to control RELION 5.x cryo-EM structure determination software through natural language, providing 23 tools for the complete single-particle analysis pipeline.
      5
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables natural language analysis of mechanical test data files (CSV, TDMS, MDF) by providing tools for channel statistics, spectrum analysis, rainflow fatigue counting, thermal state detection, and report generation.
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables natural-language exploration, processing, conversion, and plotting of ARPES data in a live Jupyter notebook, with every analysis visible and consent-gated saving.
      1
      MIT