OriginLab-MCP
OriginLab-MCP
一个用于 OriginLab Origin 的 MCP 服务器。它可以读写工作表、构建并设置多面板图形样式、导出图片——并且它谨慎地区分了 Origin 接受了什么和 Origin 实际做了什么。
1.0.0。 这里的每个工具都在真实的 Origin 2024 上运行过,Origin App 安装并启动桥接,并且
examples/five_panel_figure.py端到端地构建了一个五面板图形。已知的差距,以免它们成为意外:放置在角落的图例会检查是否在其面板内部,而不是检查是否位于数据之上;除非你要求,否则对数轴不会获得次刻度;213 条选项表记录的是 Origin 文档所记载的内容,而不是每个选项被测量到的实际效果——其中十六个已被观察到改变了图片。
要求
Origin 或 OriginPro 2021b 或更新版本(内置 Python 3.9+)
服务器需要 Python 3.10+
Windows,原生或虚拟机中均可
Related MCP server: Aspose.Cells Cloud MCP Server
安装
pip install originlab-mcp
originlab-mcp --build-app .这会打印出 Origin 需要的三个步骤,这里值得说明一下,因为最明显的那一步什么也不做:将文件夹拖到 Apps 画廊上会被静默接受,但不会添加任何按钮。将生成的 OriginLab MCP Bridge 文件夹复制到 %LOCALAPPDATA%\OriginLab\Apps,然后从 Origin 的命令窗口中打包,使用
mkOPX app:="OriginLab MCP Bridge" opx:="C:\path\to\OriginLab MCP Bridge.opx";——必须使用反斜杠,因为正斜杠会导致 mkOPX 挂起——然后将生成的 .opx 拖入 Origin。会出现一个按钮;点击它会把脚本窗口带到前面,桥接会在其中报告 starting、loaded、serving。
将你的 MCP 客户端指向 originlab-mcp。
originlab-mcp --status 会报告是否有桥接在监听,如果没有则非零退出。originlab-mcp --stop 会结束它。
停止是一个命令而不是第二个按钮,因为按钮不能自己完成这项工作:当桥接在服务时,它持有 Origin 的 UI 线程,所以按钮运行的任何东西都会从消息泵内部运行。一个只生成外部进程的按钮是可能的——上游项目就是这样做的——但指令仍然必须通过套接字到达桥接,而 --stop 就是没有间接层的那个指令。
有什么不同
Origin 接受大量它随后忽略的东西,而且从不说明。
set <plot> -zzzz 9—— 一个 Origin 从未听说过的选项——返回 true,读回为 9.0,并且图形像素级完全不变。plot:=2003不是一种绘图类型。Origin 会创建窗口、绘制坐标轴、写入图例,但不绘制任何内容。写入组内绘图的样式读回时完全符合要求,而 Origin 继续绘制组的样式。
这些都无法从回复中捕获,因此检查发生在写入之前和图形之后:
之前。 选项会对照 Origin 自己的文档列表进行检查,一个编造的选项会被拒绝,并给出它可能原本想用的选项。这很重要,因为真实名称是无法猜测的——线宽是 -w,柱状图填充图案是 -pfp——所以一个看似合理的猜测很可能是失败的原因,而不是拼写错误。写入分组绘图成员会被直接拒绝。绘图类型来自 Origin 安装中的 oPlotIDs.h 而不是文档,并且表中的每个名称都被绘制并查看过。
之后。 每次调用的检查无法触及真正重要的问题,即图形是否正确。因此,构建图形的操作会报告可能与之矛盾的东西:
操作 | 它报告回的内容 |
| 使用的图层,以及 Origin 说其中有多少个绘图 |
| 每个图层的真实几何形状,以及它们占据的框 |
| 图例的位置,以及它是否位于其图层内部 |
| 标题落在框架的哪一侧 |
这个列表的存在是因为一个实测的失败:一个五面板图形,所有二十三个步骤都返回 OK,但结果不可用。一个图例被放置在 left = 24953,而页面宽度为 6432——legend.x 是数据坐标,而不是被赋予的百分比——并且 Origin 的导出扩展了画布以包含它,将图形挤到了角落。没有任何回复表明有任何问题。
读回被报告为读回,而不是证明:
{
"requested": 60,
"readback": {"readable": true, "value": 60.0, "matches_request": true},
"readback_means": "Origin stored this value where 'get' can find it. It is not
proof that the graph changed: Origin also stores options it
does not recognise."
}导出图形是唯一能确定结果的方法,这就是为什么 origin_graph_export 是一个一流的工具,而不是保存图片的方式。
这个服务器不读取的参数会被拒绝,并给出它确实读取的最近名称。它在 Origin 中防范的同样失败首先出现在这里:worksheet_read 接受 max_rows,而传递 rows=3 的调用过去会返回工作表中的所有行,并且没有指示其参数已被丢弃。
工具表面是有意保持小的。一个带有 plot_type 参数的 plot 工具,而不是每种图表类型一个;一个 plot_option_get/set 对,而不是每个属性一个包装器。
工具
| 桥接是否存活——即使 originpro 损坏也能回答 |
| 桥接在哪里,以及它是否在回答 |
| 大小、列名、格式 |
| 列作为列表,拒绝而不是截断 |
| 列输入,格式明确说明而不是猜测 |
| 将列绘制到新页面或现有页面的新图层中 |
| 图层、绘图、地址、组成员关系 |
| PNG 输出——并且是样式生效的唯一见证 |
| 添加一个面板,并说明其索引是什么 |
| 将面板排列成网格,并报告它们实际去了哪里 |
| 重建图例,放置它,检查它是否位于其面板内部 |
| 缩放、范围和标题,并报告标题所在的一侧 |
| 读回一个坐标轴 |
| 读取一个 LabTalk |
| 写入一个,并报告它建立了什么 |
| 搜索 Origin 的 213 个文档化的 |
| 逃生舱,捕获 Origin 的输出 |
examples/five_panel_figure.py 端到端地构建一个五面板图形,并在每一步打印可能与之矛盾的数字。
设置
Windows,一切都在本地——通常的情况。服务器和 Origin 在同一台机器上,通过回环 TCP 通信。
Origin 在 Windows 虚拟机中,从 macOS 或 Linux 工作——也支持。服务器通过 ssh 在虚拟机内运行;只有 MCP 客户端在主机上。这之所以有效,是因为服务器通过回环套接字而不是 COM 到达 Origin,而 COM 无法跨越 Windows 会话边界。
MCP client ──ssh──▶ server (Windows) ──TCP 127.0.0.1──▶ Origindocs/remote-origin.md 详细介绍了这一点:ssh 服务器、密钥(Windows 将管理员密钥放在不同的文件中,并且不说明就忽略通常的那个),以及将 MCP 客户端指向它。
关于 Origin 行为的说明
这里测量到的一些文档中没有提到的事情:
originpro 是绝对单线程的。 从任何线程调用,但 Origin 的 UI 线程除外,它会阻塞并持有 GIL,并使整个嵌入式解释器死锁。Origin 的窗口保持响应;它的 Python 已经死了。因此,桥接在该线程上服务,并在请求之间泵送 Origin 的消息队列。
模态对话框会停止桥接,因为对话框持有桥接服务的线程——而握手文件继续显示它已启动。导出到不存在的目录会打开一个对话框,因此会在导出发送之前检查这一点。
图例有两对坐标,位于不同的空间中。
legend.x/legend.y是图层的数据坐标;legend.left/.top是页面单位,与page.width报告的单位相同。plotxy ogl:=<new>创建一个新图层,而不是新页面,并且不会使其成为活动图层。[<new>]是新页面。Origin 为柱状图交换坐标轴,并且不通过任何图层属性报告这一点。它移动标题对象以匹配,并保持它们的旋转,因此值轴标题最终位于框架下方,从下到上阅读。
-w是点数 × 500;-wp接受点数。将点数值传递给-w会得到一条发丝线,而不是错误。仅用
-pfp设置的填充图案是不可见的:Origin 用填充颜色绘制它,所以还需要-pfc,并且两者单独都不会改变任何东西。LabTalk 在它拒绝的第一个语句处停止,所以一个报告失败的脚本已经运行了它自身的一个未知前缀。
Origin 在命令执行期间拒绝启动 Python,而每个桥接请求都是一个命令。包含
run -pyf或py.exec的脚本会被预先拒绝,而不是在没有解释的情况下失败。
参考
Ge-Shun/origin-mcp —— 本项目架构所遵循的嵌入式桥接传输方法。
garethbeaumo/originlab-mcp —— 一个 COM 附加的服务器;当 Origin 在同一桌面会话中时,运行起来更简单。
Origin 和 OriginPro 是 OriginLab 公司的产品。本项目与 OriginLab 无关。
许可证
MIT。# OriginLab-MCP
一个用于 OriginLab Origin 的 MCP 服务器。它可以读写工作表、构建并设置多面板图形样式、导出图形——并且它仔细区分了 Origin 接受了什么和 Origin 实际做了什么。
1.0.0。 这里的每个工具都在真实的 Origin 2024 上运行过,Origin App 安装并启动桥接,并且
examples/five_panel_figure.py端到端地构建了一个五面板图形。已知的差距,以免让你感到意外:放置在角落的图例只检查是否位于其面板内部,而不检查是否位于数据之上;对数轴除非你要求,否则不会获得次刻度;213 条选项表记录的是 Origin 文档所记载的内容,而不是每个选项被实测的效果——其中十六个已被观察到改变了图形。
要求
Origin 或 OriginPro 2021b 或更新版本(内置 Python 3.9+)
服务器需要 Python 3.10+
Windows,原生或虚拟机中均可
安装
pip install originlab-mcp
originlab-mcp --build-app .这会打印出 Origin 需要的三个步骤,这里值得说明,因为最明显的一步什么也不做:将文件夹拖到 Apps 画廊上会被静默接受,但不会添加任何按钮。将生成的 OriginLab MCP Bridge 文件夹复制到 %LOCALAPPDATA%\OriginLab\Apps,然后从 Origin 的命令窗口打包它:
mkOPX app:="OriginLab MCP Bridge" opx:="C:\path\to\OriginLab MCP Bridge.opx";——必须使用反斜杠,因为正斜杠会导致 mkOPX 挂起——然后将生成的 .opx 拖入 Origin。会出现一个按钮;点击它会把脚本窗口带到前面,桥接会在其中报告 starting、loaded、serving。
将你的 MCP 客户端指向 originlab-mcp。
originlab-mcp --status 会报告是否有桥接在监听,如果没有监听则非零退出。originlab-mcp --stop 会结束它。
停止是一个命令而不是第二个按钮,因为按钮不能自己完成这项工作:当桥接在服务时,它持有 Origin 的 UI 线程,所以按钮运行的任何东西都会从消息泵内部运行。一个只生成外部进程的按钮是可能的——上游项目就是这样做的——但指令仍然必须通过套接字到达桥接,而 --stop 就是没有间接层的那个指令。
有什么不同
Origin 接受大量它随后忽略的东西,而且从不说明。
set <plot> -zzzz 9—— 一个 Origin 从未听说过的选项——返回 true,读回为 9.0,并且图形像素级完全不变。plot:=2003不是一种绘图类型。Origin 会创建窗口、绘制坐标轴、写入图例,但不绘制任何内容。写入组内绘图成员的样式读回时完全符合请求,而 Origin 继续绘制组的样式。
这些都无法从回复中捕获,因此检查发生在写入之前和图形之后:
写入之前。 选项会对照 Origin 自己的文档列表进行检查,一个编造的选项会被拒绝,并给出它可能原本想用的选项。这很重要,因为真实名称是不可猜测的——线宽是 -w,柱状图填充图案是 -pfp——所以一个看似合理的猜测很可能是失败的原因,而不是拼写错误。写入组内绘图成员会被直接拒绝。绘图类型来自 Origin 安装中的 oPlotIDs.h,而不是文档,并且表中的每个名称都被绘制并查看过。
写入之后。 每次调用的检查无法触及真正重要的问题,即图形是否正确。因此,构建图形的操作会报告可能与之矛盾的东西:
操作 | 它报告的内容 |
| 使用的图层,以及 Origin 说该图层中有多少个绘图 |
| 每个图层的真实几何,以及它们占据的框 |
| 图例的位置,以及它是否位于其图层内部 |
| 标题落在框架的哪一侧 |
这个列表的存在是因为一个实测的失败:一个五面板图形,所有二十三个步骤都返回 OK,但结果不可用。一个图例被放置在 left = 24953,而页面宽度为 6432——legend.x 是数据坐标,而不是它被赋予的百分比——并且 Origin 的导出扩展了画布以包含它,将图形挤压到角落。没有任何回复表明有任何问题。
读回被报告为读回,而不是作为证明:
{
"requested": 60,
"readback": {"readable": true, "value": 60.0, "matches_request": true},
"readback_means": "Origin stored this value where 'get' can find it. It is not
proof that the graph changed: Origin also stores options it
does not recognise."
}导出图形是唯一能确定它是否正确的操作,这就是为什么 origin_graph_export 是一个一流的工具,而不是保存图片的方式。
这个服务器不读取的参数会被拒绝,并给出它确实读取的最近名称。它在 Origin 中防范的同样失败,在这里首先出现:worksheet_read 接受 max_rows,而传递 rows=3 的调用过去会获得工作表中的所有行,并且没有指示其参数已被丢弃。
工具表面是有意保持小的。一个带有 plot_type 参数的 plot 工具,而不是每种图表类型一个;一个 plot_option_get/set 对,而不是每个属性一个包装器。
工具
| 桥接是否存活——即使 originpro 损坏时也能回答 |
| 桥接在哪里,以及它是否在回答 |
| 大小、列名、格式 |
| 列作为列表,拒绝而不是截断 |
| 列输入,格式明确说明而不是猜测 |
| 将列绘制到新页面或现有页面的新图层中 |
| 图层、绘图、地址、组成员关系 |
| PNG 输出——以及样式生效的唯一见证 |
| 添加一个面板,并说明其索引是什么 |
| 将面板排列成网格,并报告它们实际去了哪里 |
| 重建图例,放置它,检查它是否位于其面板内部 |
| 缩放、范围和标题,并报告标题所在的一侧 |
| 读回一个轴 |
| 读取一个 LabTalk |
| 写入一个,并报告所建立的内容 |
| 搜索 Origin 的 213 个文档化的 |
| 逃生舱,并捕获 Origin 的输出 |
examples/five_panel_figure.py 端到端地构建一个五面板图形,并在每一步打印可能与之矛盾的数字。
设置
Windows,全部在本地——通常的情况。服务器和 Origin 在同一台机器上,通过回环 TCP 通信。
Origin 在 Windows 虚拟机中,从 macOS 或 Linux 工作 —— 也支持。服务器通过 ssh 在虚拟机内运行;只有 MCP 客户端在主机上。这之所以有效,是因为服务器通过回环套接字而不是 COM 到达 Origin,而 COM 无法跨越 Windows 会话边界。
MCP client ──ssh──▶ server (Windows) ──TCP 127.0.0.1──▶ Origindocs/remote-origin.md 详细介绍了这一点:ssh 服务器、密钥(Windows 将管理员密钥放在不同的文件中,并且不说明就忽略通常的那个),以及将 MCP 客户端指向它。
关于 Origin 行为的说明
这里测量到的一些文档中没有提到的事情:
originpro 是绝对单线程的。 从任何线程调用,但 Origin 的 UI 线程除外,它会阻塞并持有 GIL,导致整个嵌入式解释器死锁。Origin 的窗口保持响应;它的 Python 已经没了。因此,桥接在该线程上服务,并在请求之间泵送 Origin 的消息队列。
模态对话框会停止桥接,因为对话框持有桥接服务的线程——而握手文件继续显示它处于启动状态。导出到不存在的目录会打开一个对话框,所以会在导出之前检查。
图例有两对坐标,位于不同的空间。
legend.x/legend.y是图层的数据坐标;legend.left/.top是页面单位,与page.width报告的单位相同。plotxy ogl:=<new>创建一个新图层,而不是新页面,并且不会使其成为活动图层。[<new>]是新页面。Origin 为柱状图交换坐标轴,并且不通过任何图层属性报告这一点。它会移动标题对象以匹配,并保持它们的旋转,因此值轴标题最终位于框架下,从下到上阅读。
-w是点数 × 500;-wp接受点数。将点数值传递给-w会得到一条发丝线,而不是错误。仅用
-pfp设置的填充图案是不可见的:Origin 用填充颜色绘制它,所以还需要-pfc,并且两者单独都不会改变任何东西。LabTalk 在它拒绝的第一个语句处停止,因此一个报告失败的脚本已经运行了它自身的一个未知前缀。
Origin 在命令执行期间拒绝启动 Python,而每个桥接请求都是一个命令。包含
run -pyf或py.exec的脚本会被预先拒绝,而不是在没有解释的情况下失败。
参考
Ge-Shun/origin-mcp —— 本项目架构所遵循的嵌入式桥接传输方法。
garethbeaumo/originlab-mcp —— 一个 COM 附加的服务器;当 Origin 在同一桌面会话中时,运行起来更简单。
Origin 和 OriginPro 是 OriginLab 公司的产品。本项目与 OriginLab 无关。
许可证
MIT。
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseAqualityCmaintenanceMCP server for Microsoft Office file operations. Read, write, and create Excel, Word, and PowerPoint files directly from your local filesystem.12
- AlicenseCqualityCmaintenanceAutomates Microsoft Excel spreadsheet creation and editing via MCP tools for any MCP-compatible client.37MIT
- AlicenseNot gradedqualityDmaintenanceEnables remote control of Adobe Photoshop on macOS and Windows via MCP, supporting multiple backends including AppleScript, PowerShell, and UXP plugin.12MIT
- AlicenseBqualityBmaintenanceA local MCP server that enables AI assistants to control Origin/OriginPro on Windows via Python automation, with adaptive path detection to resolve import errors.631MIT
Related MCP Connectors
ClinicalTrials MCP — wraps ClinicalTrials.gov API v2 (free, no auth)
PyPI MCP — wraps the Python Package Index (PyPI) JSON API (free, no auth).
Monday.com MCP — wraps the Monday.com GraphQL API (BYO API key)
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Yike-Ye/OriginLab-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server