OriginLab-MCP
OriginLab-MCP
Un servidor MCP para OriginLab Origin. Lee y escribe hojas de cálculo, construye y estiliza gráficos de varios paneles, y exporta figuras — y es cuidadoso con la diferencia entre lo que Origin aceptó y lo que Origin hizo.
1.0.0. Cada herramienta aquí se ha ejecutado contra un Origin 2024 real, la aplicación de Origin se instala e inicia el puente, y
examples/five_panel_figure.pyconstruye una figura de cinco paneles de principio a fin.Brechas conocidas, para que no sean una sorpresa: una leyenda colocada en una esquina se comprueba que esté dentro de su panel, no que se asiente sobre los datos; un eje logarítmico no recibe marcas menores a menos que lo pidas; y la tabla de opciones de 213 entradas registra lo que Origin documenta, no lo que se midió que hace cada opción — dieciséis de ellas se han visto cambiar una imagen.
Requisitos
Origin u OriginPro 2021b o más reciente (Python 3.9+ integrado)
Python 3.10+ para el servidor
Windows, ya sea de forma nativa o en una máquina virtual
Related MCP server: Aspose.Cells Cloud MCP Server
Instalación
pip install originlab-mcp
originlab-mcp --build-app .Eso imprime los tres pasos que Origin necesita, que vale la pena indicar aquí
porque el obvio no hace nada: arrastrar la carpeta a la galería de Apps se
acepta en silencio y no añade ningún botón. Copia la carpeta generada OriginLab MCP Bridge en %LOCALAPPDATA%\OriginLab\Apps, empaquétala desde la ventana de
comandos de Origin con
mkOPX app:="OriginLab MCP Bridge" opx:="C:\path\to\OriginLab MCP Bridge.opx";— con barras invertidas, porque las barras normales cuelgan mkOPX — y arrastra
el .opx resultante a Origin. Aparece un botón; al hacer clic en él, la ventana
de scripts se trae al frente, donde el puente informa starting, loaded,
serving.
Apunta tu cliente MCP a originlab-mcp.
originlab-mcp --status dice si un puente está escuchando, y sale con un código
distinto de cero cuando no lo está. originlab-mcp --stop lo termina.
Detener es un comando en lugar de un segundo botón porque un botón no debe hacer
el trabajo por sí mismo: mientras el puente sirve, mantiene el hilo de la
interfaz de Origin, así que cualquier cosa que el botón ejecutara se ejecutaría
desde dentro del bucle de mensajes. Un botón que solo lanza un proceso externo es
posible — así es como lo hace el proyecto upstream — pero la instrucción aún
tiene que llegar al puente a través del socket, y --stop es esa instrucción
sin la indirección.
Qué es diferente
Origin acepta mucho que luego ignora, sin decirlo nunca.
set <plot> -zzzz 9— una opción que Origin nunca ha oído — devuelve true, se lee de vuelta como 9.0, y deja el gráfico píxel por píxel idéntico.plot:=2003no es un tipo de gráfico. Origin crea la ventana, dibuja los ejes, escribe la leyenda, y no traza nada.Un estilo escrito en un gráfico dentro de un grupo se lee de vuelta exactamente como se pidió, mientras Origin sigue dibujando el estilo del grupo.
Ninguno de estos se puede detectar desde la respuesta, así que la comprobación ocurre antes de la escritura y después de la figura:
Antes. Las opciones se comprueban contra la propia lista documentada de
Origin, y una inventada se rechaza con las opciones que probablemente se quería.
Esto importa porque los nombres reales son imposibles de adivinar — el ancho de
línea es -w, el patrón de relleno de barra es -pfp — así que una suposición
plausible es el fallo probable, no un error tipográfico. Escribir en un miembro
de un grupo de gráficos se rechaza directamente. Los tipos de gráfico provienen
de oPlotIDs.h en la instalación de Origin en lugar de la documentación, y cada
nombre en la tabla se dibujó y se miró.
Después. Una comprobación por llamada no puede alcanzar la pregunta que importa, que es si la figura es correcta. Así que las operaciones que construyen una informan de la cosa que podría contradecirlas:
operación | lo que informa de vuelta |
| la capa usada, y cuántos gráficos dice Origin que hay en ella |
| la geometría real de cada capa, y la caja que todas ocupan |
| dónde está la leyenda, y si eso está dentro de su capa |
| en qué lado del marco aterrizó el título |
Esa lista existe debido a un fallo medido: una figura de cinco paneles donde
todos los veintitrés pasos devolvieron OK y el resultado era inutilizable. Una
leyenda se había colocado en left = 24953 en una página de 6432 de ancho —
legend.x está en coordenadas de datos, no en los porcentajes que se le estaban
dando — y la exportación de Origin agrandó el lienzo para contenerla,
comprimiendo la figura en una esquina. Nada en ninguna respuesta decía que algo
estuviera mal.
Una lectura de vuelta se informa como una lectura de vuelta, nunca como prueba:
{
"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."
}Exportar el gráfico es lo único que lo resuelve, por eso
origin_graph_export es una herramienta de primera clase en lugar de una forma
de guardar imágenes.
Los argumentos que este servidor no lee se rechazan, con el nombre más
cercano que sí lee. El mismo fallo contra el que protege en Origin apareció aquí
primero: worksheet_read toma max_rows, y una llamada que pasaba rows=3
solía obtener todas las filas de la hoja y ninguna indicación de que su argumento
se había descartado.
La superficie de herramientas es pequeña a propósito. Una herramienta plot con
un parámetro plot_type en lugar de una por tipo de gráfico; un par
plot_option_get/set en lugar de un envoltorio por propiedad.
Herramientas
| ¿Está vivo el puente? — responde incluso cuando originpro está roto |
| Dónde está el puente, y si está respondiendo |
| Tamaño, nombres de columnas, formatos |
| Columnas como listas, rechazando en lugar de truncar |
| Columnas dentro, con el formato indicado no adivinado |
| Traza columnas en una página nueva o en una capa nueva de una existente |
| Capas, gráficos, direcciones, pertenencia a grupos |
| PNG fuera — y el único testigo de que un estilo se aplicó |
| Añade un panel, y dice cuál es su índice |
| Coloca los paneles en cuadrícula, e informa dónde fueron realmente |
| Reconstruye una leyenda, la coloca, comprueba que está dentro de su panel |
| Escala, rango y título, con el lado del título informado |
| Lee un eje de vuelta |
| Lee una opción de |
| Escribe una, e informa de lo que eso estableció |
| Busca las 213 opciones |
| La vía de escape, con la salida de Origin capturada |
examples/five_panel_figure.py construye una
figura de cinco paneles de principio a fin e imprime, en cada paso, el número que
podría contradecirla.
Configuraciones
Windows, todo local — el caso habitual. Servidor y Origin en la misma máquina, hablando a través de TCP de bucle local.
Origin en una máquina virtual Windows, trabajando desde macOS o Linux — también compatible. El servidor se ejecuta dentro de la máquina virtual a través de ssh; solo el cliente MCP está en el host. Esto funciona porque el servidor alcanza a Origin a través de un socket de bucle local en lugar de COM, que no puede cruzar un límite de sesión de Windows.
MCP client ──ssh──▶ server (Windows) ──TCP 127.0.0.1──▶ Origindocs/remote-origin.md recorre ese caso: el servidor
ssh, la clave (Windows pone la de un administrador en un archivo diferente e
ignora la habitual sin decirlo), y apuntar un cliente MCP a él.
Notas sobre el comportamiento de Origin
Cosas medidas aquí que ninguna documentación menciona:
originpro es de un solo hilo, absolutamente. Llamado desde cualquier hilo que no sea el hilo de la interfaz de Origin, se bloquea mientras mantiene el GIL y bloquea todo el intérprete integrado. La ventana de Origin sigue respondiendo; su Python se ha ido. El puente por lo tanto sirve en ese hilo y bombea la cola de mensajes de Origin entre solicitudes.
Un diálogo modal detiene el puente, porque el diálogo mantiene el hilo en el que el puente sirve — mientras el archivo de apretón de manos sigue diciendo que está arriba. Exportar a un directorio que no existe abre uno, así que eso se comprueba antes de que se envíe la exportación.
Una leyenda tiene dos pares de coordenadas en espacios diferentes.
legend.x/legend.yson las coordenadas de datos de la capa;legend.left/.topson unidades de página, las mismas que informapage.width.plotxy ogl:=<new>hace una capa nueva, no una página nueva, y no la hace activa.[<new>]es la página nueva.Origin intercambia los ejes para gráficos de barras y lo informa a través de ninguna propiedad de capa. Mueve los objetos de título para que coincidan y mantiene su rotación, así que el título del eje de valores termina bajo el marco leyendo de abajo a arriba.
-wes puntos × 500;-wptoma puntos. Pasar un valor de puntos a-wda una línea fina en lugar de un error.Un patrón de relleno establecido con
-pfpsolo es invisible: Origin lo dibuja en el color de relleno, así que-pfctambién se necesita, y ninguno cambia nada por sí solo.LabTalk se detiene en la primera declaración que rechaza, así que un script que informa de un fallo ha ejecutado un prefijo desconocido de sí mismo.
Origin se niega a iniciar Python mientras un comando está en vuelo, y cada solicitud del puente es uno. Los scripts que contienen
run -pyfopy.execse rechazan de antemano en lugar de fallar sin explicación.
Referencias
Ge-Shun/origin-mcp — el enfoque de transporte de puente integrado que sigue la arquitectura de este proyecto.
garethbeaumo/originlab-mcp — un servidor conectado por COM; más simple de ejecutar cuando Origin está en la misma sesión de escritorio.
Origin y OriginPro son productos de OriginLab Corporation. Este proyecto no está afiliado con OriginLab.
Licencia
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