Skip to main content
Glama
Yike-Ye
by Yike-Ye

OriginLab-MCP

OriginLab Origin用のMCPサーバーです。ワークシートの読み書き、マルチパネルグラフの作成とスタイル設定、図のエクスポートを行います。また、Originが受け入れたこととOriginが実行したことの違いに注意を払っています。

1.0.0. ここにあるすべてのツールは実際のOrigin 2024に対してテスト済みで、Origin Appがブリッジをインストールして起動し、examples/five_panel_figure.pyが5パネル図をエンドツーエンドで作成します。

既知のギャップ(驚かないように): コーナーに配置された凡例は、データの上に重なっているかどうかではなく、パネル内にあるかどうかがチェックされます。対数軸は、指定しない限り補助目盛りが付きません。また、213項目のオプションテーブルは、各オプションが何をするように測定されたかではなく、Originが文書化していることを記録しています。そのうちの16項目は、画像が変化するのを確認したものです。

要件

  • OriginまたはOriginPro 2021b以降(組み込みPython 3.9+)

  • サーバー用のPython 3.10+

  • Windows(ネイティブまたはVM内)

Related MCP server: Aspose.Cells Cloud MCP Server

インストール

pip install originlab-mcp
originlab-mcp --build-app .

これにより、Originが必要とする3つの手順が表示されます。ここで述べる価値があるのは、明白な方法が何も実行しないためです。フォルダをAppsギャラリーにドラッグしても、何も表示されず、ボタンも追加されません。生成されたOriginLab MCP Bridgeフォルダを%LOCALAPPDATA%\OriginLab\Appsにコピーし、Originのコマンドウィンドウからパックします。

mkOPX app:="OriginLab MCP Bridge" opx:="C:\path\to\OriginLab MCP Bridge.opx";

— バックスラッシュを使用します。フォワードスラッシュはmkOPXをハングさせるためです — そして、結果の.opxをOriginにドラッグします。ボタンが表示され、クリックするとスクリプトウィンドウが前面に表示され、ブリッジがstartingloadedservingを報告します。

MCPクライアントをoriginlab-mcpに向けます。

originlab-mcp --statusは、ブリッジがリッスンしているかどうかを示し、リッスンしていない場合はゼロ以外の終了コードを返します。originlab-mcp --stopで終了します。

停止はコマンドであり、2番目のボタンではありません。ボタン自体が処理を行ってはならないためです。ブリッジがサービスを提供している間、OriginのUIスレッドを保持するため、ボタンが実行するものはすべてメッセージポンプ内から実行されます。外部プロセスを起動するだけのボタンも可能です(これが上流プロジェクトのやり方です)が、それでも命令はソケットを介してブリッジに到達する必要があり、--stopはその間接参照なしの命令です。

何が違うのか

Originは、多くのことを受け入れますが、その後それを無視します。しかも、そのことを一切明かしません。

  • set <plot> -zzzz 9 — Originが聞いたこともないオプション — はtrueを返し、9.0として読み戻され、グラフはピクセル単位で同一のままです。

  • plot:=2003はプロットタイプではありません。Originはウィンドウを作成し、軸を描画し、凡例を書き込み、何もプロットしません。

  • グループ内のプロットに書き込まれたスタイルは、要求されたとおりに読み戻されますが、Originはグループのスタイルを描画し続けます。

これらはいずれも応答からはキャッチできないため、チェックは書き込みの前と図の後で行われます。

前。 オプションはOrigin自身の文書化されたリストと照合され、でっち上げられたオプションは、おそらく意図されたであろうオプションとともに拒否されます。実際の名前は推測できないため、これは重要です(線幅は-w、バーの塗りつぶしパターンは-pfp)。そのため、もっともらしい推測はタイプミスではなく、失敗の可能性が高いのです。グループ化されたプロットメンバーへの書き込みは完全に拒否されます。プロットタイプは、ドキュメントではなくOriginインストールのoPlotIDs.hから取得され、テーブル内のすべての名前が描画されて確認されました。

後。 呼び出しごとのチェックでは、図が正しいかどうかという重要な問題に到達できません。そのため、図を作成する操作は、それに矛盾する可能性のあるものを報告します。

操作

報告される内容

origin_plot

使用されたレイヤーと、Originがその中にあると報告するプロットの数

origin_layers_arrange

すべてのレイヤーの実際のジオメトリと、それらがすべて占めるボックス

origin_legend_set

凡例の場所と、それがレイヤー内にあるかどうか

origin_axis_set

タイトルがフレームのどの辺に配置されたか

このリストが存在するのは、測定された失敗があるためです。23のステップすべてがOKを返したのに、結果が使用不能だった5パネル図です。1つの凡例が、幅6432のページのleft = 24953に配置されていました(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_readmax_rowsを受け取り、rows=3を渡すと呼び出しはシート内のすべての行を取得し、引数がドロップされたことを示すものはありませんでした。

ツールの表面は意図的に小さくなっています。チャートタイプごとに1つではなくplot_typeパラメータを持つ1つのplotツール、プロパティごとのラッパーではなく1つのplot_option_get/setペアです。

ツール

origin_ping

ブリッジは生きているか — originproが壊れていても応答します

origin_bridge_status

ブリッジがどこにあるか、応答しているかどうか

origin_worksheet_info

サイズ、列名、形式

origin_worksheet_read

列をリストとして返し、切り詰めずに拒否します

origin_worksheet_write

列を入力し、形式を推測せずに指定します

origin_plot

列を新しいページまたは既存のページの新しいレイヤーにプロットします

origin_graph_info

レイヤー、プロット、アドレス、グループメンバーシップ

origin_graph_export

PNG出力 — スタイルが適用されたことを示す唯一の証拠

origin_layer_add

パネルを追加し、そのインデックスを報告します

origin_layers_arrange

パネルをグリッド状に並べ、実際に配置された場所を報告します

origin_legend_set

凡例を再構築し、配置し、パネル内にあるかどうかを確認します

origin_axis_set

スケール、範囲、タイトルを設定し、タイトルの側面を報告します

origin_axis_get

軸を読み戻します

origin_plot_option_get

LabTalkのsetオプションを1つ読み取ります

origin_plot_option_set

1つ書き込み、確立されたものを報告します

origin_set_options

Originの213の文書化されたsetオプションを検索します

origin_labtalk

逃げ道。Originの出力をキャプチャします

examples/five_panel_figure.pyは、5パネル図をエンドツーエンドで作成し、各ステップで、それに矛盾する可能性のある数値を出力します。

セットアップ

Windows、すべてローカル — 通常のケースです。サーバーとOriginが同じマシン上にあり、ループバックTCPで通信します。

macOSまたはLinuxから作業するWindows VM内のOrigin — これもサポートされています。サーバーはsshを介してVM内で実行されます。MCPクライアントのみがホスト上にあります。これは、サーバーがCOMではなくループバックソケットを介してOriginに到達するためです。COMはWindowsセッションの境界を越えることができません。

MCP client  ──ssh──▶  server (Windows)  ──TCP 127.0.0.1──▶  Origin

docs/remote-origin.mdでは、sshサーバー、キー(Windowsは管理者のキーを別のファイルに配置し、通常のキーを黙って無視します)、およびMCPクライアントをそのキーに向ける方法について説明しています。

Originの動作に関する注意点

ここで測定されたもので、ドキュメントに記載されていないもの:

  • originproは完全にシングルスレッドです。 OriginのUIスレッド以外のスレッドから呼び出されると、GILを保持したままブロックし、埋め込みインタプリタ全体をデッドロックさせます。Originのウィンドウは応答を続けますが、Pythonは応答しません。したがって、ブリッジはそのスレッドでサービスを提供し、要求の合間にOriginのメッセージキューをポンプします。

  • モーダルダイアログはブリッジを停止します。 ダイアログがブリッジがサービスを提供するスレッドを保持するためです。一方、ハンドシェイクファイルは起動していると表示されたままです。存在しないディレクトリにエクスポートするとダイアログが開くため、エクスポートが送信される前にチェックされます。

  • 凡例には、異なる空間に2組の座標があります。 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を含むスクリプトは、説明なしに失敗するのではなく、事前に拒否されます。

参照

OriginおよびOriginProは、OriginLab Corporationの製品です。このプロジェクトはOriginLabとは提携していません。

ライセンス

MIT

Install Server
A
license - permissive license
A
quality
A
maintenance

Maintenance

Maintainers
Response time
Release cycle
1Releases (12mo)
Commit activity

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

View all related MCP servers

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)

View all MCP Connectors

Latest Blog Posts

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