Veusz MCP
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
Veusz MCP
让 AI 智能体操作 Veusz 原生编辑器:聊天中生成与调整科研图,Veusz 窗口同步显示;你也可以随时在界面中手工精修。
图形由 Veusz 的数据集、曲线、坐标轴、图例和文本对象组成,保存为可编辑的 .vsz 工程。绘图通过文档 API 完成,不依赖鼠标点击、屏幕坐标或整图截图替代。
当前为 v0.3(本地开发版),主要验证环境是 Windows 10、Veusz 4.2.1 和 Codex。不是 Veusz 官方项目。

上图展示 MCP 在 Veusz 原生编辑器中创建的可编辑三维合成地形;左侧为交互界面,右侧为 Veusz 完整编辑器。图中数据为合成示例。
可以做什么
导入数值 CSV/TSV,创建折线、散点和对称误差棒。
调整字体、字号、颜色、线宽、坐标范围、图例和标注。
在 Veusz 中实时查看结果,继续手工编辑。
保存
.vsz/.vszh5原生工程,使用当前 Veusz 安装可用的全部原生导入和导出接口。同一个 MCP 会话管理多个独立编辑窗口,每张图可单独查看、修改和保存。
读取用户最新修改,进行局部更新;版本冲突时拒绝覆盖。
查询不确定操作的结果,减少断线或重试导致的重复绘图。
按用户选择的绘图 Skill 应用格式规范,也可以完全不使用 Skill。
本项目没有内置大模型,也不调用额外模型 API。模型由你使用的 MCP 客户端提供。
Related MCP server: origin-mcp
工作方式
MCP 客户端 / AI 智能体
│ STDIO
▼
veusz_mcp.py
│ 本机回环连接 + 会话令牌
▼
Veusz 插件 → Qt 主线程 → 原生文档与编辑窗口MCP 服务使用独立 Python 环境;Veusz 使用它自己的 Python、Qt 和绘图环境。无需向 Veusz 自带的 Python 中安装 MCP SDK。
环境要求
项目 | 要求或已验证范围 |
操作系统 | 当前启动与窗口校验实现针对 Windows;macOS、Linux 尚未支持此启动流程 |
Veusz | 建议 4.2.1;4.2.1 已完成中文界面实际窗口验证 |
MCP 服务 Python | 3.11 或更高,推荐 3.12;本地主要测试版本为 3.12 |
MCP SDK |
|
客户端 | 支持本地 STDIO MCP;实际验证过 Codex |
桌面 | 已登录、可交互的真实 Windows 桌面 |
Veusz 请从官方网站安装。本仓库不分发 Veusz 或 Qt 安装包。
快速开始
以下命令在 PowerShell 中分别执行。先克隆或下载本仓库,然后进入项目目录:
git clone https://github.com/wangyq001/veusz-mcp.git
cd .\veusz-mcp1. 创建项目环境
powershell -NoProfile -ExecutionPolicy Bypass -File .\setup.ps1脚本会寻找 Python,创建项目内的 .venv,安装依赖并运行不需要 Veusz GUI 的自动测试。如果 Python 不在 PATH 中,可显式指定:
powershell -NoProfile -ExecutionPolicy Bypass -File .\setup.ps1 -Python "C:\Python312\python.exe"默认安装 requirements.txt。需要复现维护者依赖快照时使用 -Locked;requirements-lock.txt 来自维护者 Windows 环境,不代表所有 Python 版本都已验证。
已存在的项目环境会被复用;脚本不会删除它,也不修改 Veusz 的 Python 环境。
2. 配置 Veusz 可执行文件
推荐使用本地配置:
Copy-Item .\examples\veusz.local.example.json .\veusz.local.json
notepad .\veusz.local.json把路径改为自己的安装位置,例如:
{
"executable": "C:/Program Files/Veusz/veusz.exe"
}veusz.local.json 已被 Git 忽略。也可在当前 PowerShell 中设置:
$env:VEUSZ_EXE = "C:\Program Files\Veusz\veusz.exe"首次启动的查找顺序为:--exe 参数 → VEUSZ_EXE → veusz.local.json → PATH → 常见 Windows 安装目录。显式配置的路径无效时会报错,不会偷偷换用其他安装。
3. 启动可见编辑器
在用户桌面双击 start_veusz.cmd,或运行:
.\start_veusz.cmd也支持单次指定:
.\start_veusz.cmd --exe "C:\Program Files\Veusz\veusz.exe"先处理 Veusz 的首次运行提示,再让智能体连接。已连接的受控窗口会被复用;不会自动接管用户另行打开、尚未加载本插件的窗口。
智能体不能从隔离桌面直接启动 GUI。 例如 Codex 的沙箱桌面与用户实际看到的桌面可能不同,即使进程存在、Qt 返回“可见”,用户仍看不到窗口。本项目会检查启动线程和 Veusz 是否位于当前输入桌面,并核验原生窗口所属进程、可见状态、最小化状态及屏幕位置。隔离桌面启动会在创建 GUI 前拒绝;客户端应使用获准的桌面执行方式,或由用户手动启动脚本。不会绕过系统权限。
启动器会请求恢复和前台激活。Windows 可能拒绝自动切换前台,此时可从任务栏选择已打开的 Veusz 窗口。
4. 配置 MCP 客户端
Codex CLI 已安装时,可自动注册:
powershell -NoProfile -ExecutionPolicy Bypass -File .\configure_codex.ps1重新加载 MCP 服务即可;不需要关闭 Veusz。脚本发现同名但指向其他项目的 MCP 时会拒绝覆盖。
其他支持本地 STDIO MCP 的客户端可参考以下 JSON,把路径换成自己的项目位置:
{
"mcpServers": {
"veusz": {
"command": "D:/tools/veusz-mcp/.venv/Scripts/python.exe",
"args": ["D:/tools/veusz-mcp/veusz_mcp.py"],
"env": {
"PYTHONIOENCODING": "utf-8"
}
}
}
}也可使用 start_mcp.cmd 作为 STDIO 入口。不同客户端的配置位置和字段包装可能不同,请遵循各自文档。支持本地 MCP 是接入前提,并不代表本项目已经逐一验收 Claude Code、Cursor、Trae 或其他客户端;纯网页聊天产品通常不能直接启动本机 Python。
5. 开始绘图
可直接向智能体说:
连接 Veusz,先检查当前窗口和文档状态。用 examples/simulated_robustness.csv 绘制三条均值曲线,以对应的 sd 列绘制标准差误差棒。使用 Times New Roman,去掉网格线,保留原生可编辑对象,并保存工程。
手工修改后继续说:
读取我刚才在界面中修改的图例。保留这些修改,只把 proposed 曲线改为深蓝色、线宽改为 2.5pt,再导出 PDF。
文件导入、保存与覆盖由客户端按任务授权执行。请明确数据路径、数值含义、单位和输出位置。
与绘图 Skill 配合
Skill 是可选的设计指导,不绑定任何特定 Skill,也不是 MCP 内置绘图后端。
在客户端选择一个绘图 Skill 后,可以说:
按所选 Skill 的字体、配色、字号和排版规范绘图,最终使用 Veusz 原生对象,并在当前窗口显示。允许用代码计算数据。
智能体应读取 Skill 中适用的设计指导,再将其转换成 Veusz 属性;用户明确要求优先于 Skill 默认值。已有手工修改应按本次任务范围保留。
未选择 Skill 时,正常绘图,不需要额外组合提示。
选择和读取 Skill 由客户端智能体负责,MCP 不扫描或安装 Skill。
允许代码生成模拟数据或计算统计量;最终绘图由 Veusz 完成。
不把 Matplotlib 等后端生成的整张图片嵌入 Veusz 来冒充原生图。
不是“任意绘图脚本自动转 Veusz”的转换器;不支持的效果应明确说明。
不分发第三方 Skill,使用时请自行安装并遵守其许可证。
全类型原生图表支持
MCP 从运行中的 Veusz 部件工厂动态发现类型,不维护二维部件白名单。覆盖范围是当前安装版本及已注册插件实际提供的图形;Veusz 自身不支持的效果不在此范围内。
推荐流程:
veusz_status检查文档、窗口和版本。veusz_widget_catalog查询全部类型与父部件要求;指定widget_type获取递归参数、默认值、可选项和数据维度。父类名可能是generic;指定parent_path可判断实际父对象是否合法。veusz_set_data写入1d、2d、nd、text、datetime数据。二维矩阵按行存储,x 对应列、y 对应行;数值null表示缺测。日期使用 ISO 8601,带时区的输入转换为 UTC。veusz_add_widgets创建已注册部件,包括三维场景、三维曲面/点线/体数据、等高线、图像、柱形、极坐标、三元图、矢量场、形状和标注等。实际类型以目录为准。autoadd=false关闭默认子部件,新父部件须在批次中排在子部件前。veusz_inspect查看当前参数和已注册动作;veusz_apply_changes调整原生参数,veusz_widget_action执行拟合等已注册原生动作。原生保存、PNG/SVG/PDF 导出及预览继续使用原接口。
数据和部件批次保留单步撤销、冲突检查、失败回滚和手动编辑保护。已有数据须显式 replace=true。第三方插件的外部依赖、有效数据条件和 Veusz 自身限制仍然适用;接口覆盖全部注册类型,不代表所有参数组合均已验收。
更新代码后,重新加载 MCP 服务以发现新增工具;已启动的 Veusz 插件需在保存工作后由用户重新启动,智能体不会自动关闭现有窗口。
原生验收:在已连接且无模态提示框的 Veusz 上执行 python tests/acceptance_native.py。该脚本通过真实 MCP 测试全部可创建类型的参数发现、创建与撤销,以及五类数据、失败回滚和版本冲突;临时测试内容会撤销。
多窗口:每张独立图保留自己的编辑器
新的独立图默认应先调用 veusz_new_window,而不是把所有图反复画到原来的页面。用户明确要求子图或多页工程时才复用同一文档。
veusz_new_window(name="Figure A", request_id="unique-launch-id")创建独立 Veusz 进程和窗口,返回稳定的window_id。启动结果不确定时复用同一request_id,避免重复开窗。veusz_windows列出窗口、连接状态、文档和可见性,不返回令牌。窗口关闭后会标记为不可用,不会把操作转发给其他窗口。对目标窗口调用
veusz_status(window_id=...),再给读写工具同时传入window_id、document_id、revision。各窗口保留独立数据、修改状态和撤销历史。veusz_arrange_windows(window_ids=[...], columns=2)可排列指定窗口并适合页面;veusz_window_view可单独切换页码、恢复窗口和适合页面。多窗口情况下,未明确目标的读取会报告
AMBIGUOUS_WINDOW。旧调用中的写入仍可按唯一文档标识路由,但推荐始终显式给出window_id,避免等待其他窗口。
也可直接从真实桌面运行:
.\start_veusz.cmd --new-window --name "Figure A"
.\start_veusz.cmd --new-window --name "Figure B"启动脚本会启动一个独立的本机桌面宿主。它只接收带令牌的本机启动请求,使 Veusz 不会被 MCP 客户端在重连时连带清理。宿主不注册系统服务或登录启动项;未运行时可从真实桌面执行 start_veusz.cmd --start-host。不能从隔离桌面偷偷启动宿主。
桌面宿主与各 Veusz 窗口独立于 MCP 服务。重连 MCP 不会关闭图;重启电脑或注销后,仍需重新启动脚本并打开已保存工程。不要删除运行中窗口的会话文件。
文件格式:以当前安装能力为准
先调用
veusz_file_formats(window_id=...),查询原生导出格式、工程支持、文件导入命令的必填参数及已安装导入插件。veusz_import_file只调用 Veusz 注册的文件导入器,不开放任意 Python 或任意方法执行。支持原生文本、CSV、二维/多维文本、HDF5、FITS,以及插件提供的 NPY、NPZ、QDP、二进制、VO 表等格式;实际清单由目标安装决定。veusz_export按原生目录验证格式,支持quality、color、antialias、pdfdpi、svgdpi、svgtextastext等选项。用pages=[0,1]导出多页 PDF/PS;其他格式仍限一页。导出先生成临时文件,确认非空后再原子替换目标;失败不会用空文件覆盖已有输出。格式内容和布局仍应单独检查。
.vszh5保存会做原生重开预检。针对 Veusz 4.2.1 的 HDF5 加载器无法读回 ND 数据的问题,多维数组使用工程中的原生SetDataND文本命令编码,仍可由未安装本 MCP 的 Veusz 打开。EPS/PS 依赖 Ghostscript,HDF5 依赖 h5py,FITS/VO 表依赖相应天文数据模块。缺少依赖时明确报告不可用。
本轮本地验收通过:14 个导入用例、BMP/EMF/JPG/JPEG/PDF/PNG/SVG/TIFF/WebP/XPM 导出、两页 PDF,以及 .vsz/.vszh5 往返。当前机器缺少可用 Ghostscript,所以 EPS/PS 未声称通过。第三方插件或复杂参数组合不等于已经全部验收。
升级时须重新连接一次 MCP,加载新增工具和 window_id 参数。旧窗口可以保留;新接口应在随后新建的窗口中使用。旧插件不支持的方法需保存工作后由用户重启该窗口,智能体不会丢弃未保存图形。
新增真实验收脚本:tests/acceptance_formats.py 需要通过 VEUSZ_SESSION_FILE 指定独立空白测试窗口;tests/acceptance_windows.py 创建三张测试图,验证独立编辑、排列和 MCP 重连,并保留窗口用于查看。它们不是日常绘图入口,不应运行在重要工作文档上。
工具一览
工具 | 用途 |
| 连接、文档版本、桌面身份、数据、对象树、弹窗和渲染状态 |
| 列出独立窗口及稳定的窗口标识 |
| 创建独立原生编辑窗口,保留已有图 |
| 排列指定的多个窗口并适合页面 |
| 恢复一个窗口、切换页面、调整显示范围 |
| 查询安装实例的格式、依赖和导入参数 |
| 调用已注册的原生文件导入器及格式插件 |
| 查询有效属性路径、设置分组和当前值 |
| 动态查询全部已注册部件、父对象要求及递归参数定义 |
| 写入一维、二维、多维、文本和日期数据 |
| 执行图形已注册的原生动作,例如拟合 |
| 导入数值 CSV/TSV,并记录字段、行数和来源哈希 |
| 创建折线、散点和对称误差棒 |
| 添加任意已注册的原生二维/三维部件 |
| 验证后的局部属性修改 |
| 撤销最近且未被后续编辑改变的桥接操作 |
| 保存可编辑 |
| 保存恢复点,保留当前工作文件名和编辑状态 |
| 经过预检打开工程,拒绝丢弃未保存修改 |
| 返回带文档版本的 PNG 预览 |
| 使用原生可用格式导出;支持多页 PDF/PS |
| 查询已提交写请求的状态与结果 |
工具使用约定:
修改前先读目标窗口状态,显式携带
window_id、document_id和revision。发生
REVISION_CONFLICT时读取用户最新修改,重新判断局部改动;不能只更新版本号后盲目重放。操作结果不确定时查询原
request_id,不要直接重复写入。预览是渲染结果,不等于用户已看到窗口;桌面身份及真实显示应分别核验。
数据与安全边界
CSV/TSV 需要唯一列名和数值列。默认拒绝缺失、非数值及非有限值;
missing=drop_rows会对所有选中列同步删除不完整的整行。严格数值 CSV/TSV 工具的输入上限为 50 MiB、100 万行、200 万个选中数值。原生文件导入按对应导入器规则读取,不要求把大型文件内容放入 JSON 请求。
覆盖数据集须显式
replace=true;对数坐标要求正数。页码从 0 开始,导出默认使用当前页,DPI 范围为 50–1200。
输出工程、预览、导出与恢复点限定在项目目录中;数值输入可来自用户指定的本地文件。
桥接仅监听
127.0.0.1,使用随机会话令牌;不提供通用任意 Python 执行工具。Veusz 文档操作在 Qt 主线程执行;每个受控进程管理一个窗口,MCP 同时路由多个这样的进程。
MCP 断开不会关闭 Veusz;不会自动强制结束用户进程。
用户在界面中的编辑会更新版本,但不会在聊天空闲时自动唤醒模型。
保存的
.vsz.json/.vszh5.json记录数据来源;恢复点按需创建,目前没有定时自动保存。撤销和补偿覆盖本版验证过的设置、数据和对象添加,不承诺任意第三方插件操作具有完整事务性。
runtime/ 中包含私密会话令牌和操作记录,不要上传或分享。本地 output/、虚拟环境、安装路径配置和编译翻译文件均默认被 Git 忽略。
诊断与测试
只读诊断,不启动或关闭窗口:
.\.venv\Scripts\python.exe .\diagnose.py多窗口时,该命令先列出窗口清单;可用 diagnose.py --window-id <窗口标识> 检查其中一个,不会因为旧默认窗口已关闭而把其他窗口误报为断线。
诊断会分别显示当前命令所在桌面与已连接 Veusz 所在桌面。命令在沙箱中运行、Veusz 在真实桌面中运行,是可能且正常的组合;判断窗口应查看连接本身的 desktop_is_interactive。
常见问题:
现象 | 检查方式 |
找不到 Python | 给 |
找不到 Veusz | 配置 |
连接被拒绝 | 在真实桌面运行启动脚本,处理首次运行提示,再读状态 |
有进程却看不到窗口 | 检查 |
弹窗期间无法修改 | 先处理 Veusz 提示,不应盲目重试 |
版本冲突 | 读回最新设置,保留用户编辑后重新制定局部修改 |
图在另一个页面 | 检查 |
STDIO 测试出现目录或管道权限错误 | 在普通用户 PowerShell 中运行,检查沙箱权限;不要因此更换为无界面 GUI 验收 |
自动测试不需要安装或启动 Veusz:
.\.venv\Scripts\python.exe -m unittest discover -s tests -v测试覆盖数据校验、路径配置优先级、可见桌面约束、版本和请求协议、鉴权、超时、去重及 Skill 指导的 MCP 传递。GUI 插件的语法检查:
.\.venv\Scripts\python.exe -m py_compile veusz_bridge/plugin.py实际 GUI 验收脚本为 tests/acceptance_v1.py、tests/manual_v1.py。这些是开发测试,不是快速开始入口:应使用独立测试窗口和 VEUSZ_SESSION_FILE,不能对重要工作文档直接执行。自动验收默认读取所配置 Veusz 安装目录中的 examples/example_csv.csv,也可用 VEUSZ_EXAMPLE_CSV 显式指定上游示例 CSV。
窗口实测与单元测试是两类证据。本项目已在真实 Windows 桌面中验证 Veusz 4.2.1 的绘图、手工修改读回、保存、导出和桌面显示;不以无界面运行或导出成功替代真实窗口验收。
项目结构
veusz_mcp.py MCP STDIO 服务与类型化工具
bridge_cli.py 可见窗口启动器和桥接命令入口
plugin_entry.py Veusz 插件加载入口
veusz_bridge/ 主线程适配、协议、数据导入和桌面身份校验
setup.ps1 项目环境安装
configure_codex.ps1 可选的 Codex 自动注册
start_veusz.cmd 启动或复用原生编辑窗口
start_mcp.cmd STDIO 服务入口
diagnose.py 只读连接和桌面诊断
examples/ 路径配置与模拟数据
tests/ 自动测试和开发验收脚本中文界面
Veusz 支持加载 Qt 翻译文件。可使用官方翻译源码或上游推荐的翻译途径;设置中的 Translation 通常需要编译后的 .qm 文件,而不是 .ts 源文件。翻译完整度与所用版本有关。
本项目支持连接已汉化的 Veusz,不依赖菜单显示语言。仓库不附带维护者本地编译的翻译二进制,避免版本混淆;使用或再分发上游翻译时应保留其许可与署名。
许可证与致谢
本项目原创代码按 GNU GPL v2 或任意更高版本(GPL-2.0-or-later) 分发。许可证正文见 LICENSE,第三方来源说明见 THIRD_PARTY_NOTICES.md。
感谢 Veusz 提供原生可编辑科学绘图环境,以及 MCP Python SDK 提供通信框架。
欢迎提交问题或贡献。报告故障时请提供 Veusz、Python、Windows 版本及已脱敏的诊断结果,不要附带会话令牌、私人实验数据或完整 runtime/ 目录。
This server cannot be deployed
Maintenance
Related MCP Connectors
Agent-Native design tool - create and edit visual designs with agent assistance
Create, read and live-edit visual boards, Kanban plans, Gantt timelines and diagrams with AI agents.
Create and edit scientific figures, generate data charts, and export editable SVG and PowerPoint.
Create and edit architecture diagrams from your AI agent; get an SVG and a live editable canvas.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to control Inkscape for vector graphics editing via MCP tools.96MIT
- AlicenseAqualityAmaintenanceEnables AI assistants to control Origin/OriginPro on Windows, including data import, worksheet editing, graphing, analysis, and figure export.25176 PyPI145MIT
- FlicenseNot gradedqualityFmaintenanceEnables AI agents to control pen plotters via MCP tools for text layout, SVG/DXF import, G-code generation, device control, and vision calibration.14-
- AlicenseNot gradedqualityBmaintenanceLaunches/connects to the visible draw.io desktop editor and edits its active graph model in real time, allowing AI agents to draw scientific figures step by step.1,465MIT