Thermo Orbitrap (Instrument API) について
ライセンスが必要な Instrument API を介して、Thermo Fisher Orbitrap 質量分析計の状態確認や制御を行う MCP アダプターです。装置を使うワークフロー向けですが、実機では未検証で、シミュレーターのみでテストされています。
主な機能
- 01装置状態と真空値の取得
- 02直近スキャンとセントロイドピークの確認
- 03検証済みカスタムスキャンの送信
- 04繰り返しスキャンの設定
- 05測定の開始・一時停止・停止
活用シーン
- 01装置モードと真空状態の確認
- 02MS2 スキャンと主要ピークの確認
- 03指定パラメーターでのカスタムスキャン実行
- 04測定結果の raw ファイルへの記録
MCP 対応
MCP クライアントに Orbitrap の状態確認、スキャン取得、測定制御のツールを提供します。実機には Windows、ライセンス取得済みの Thermo Instrument API アセンブリと適用ライセンスが必要です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx labmcp-thermo-iapiLABMCP_ADDRESSInstrument address, e.g. serial:///dev/ttyUSB0 or tcp://192.168.1.50:5025LABMCP_SIMULATESet to 1 to use the built-in simulator (no hardware)LABMCP_READ_ONLYSet to 1 to disable all state-changing toolsLABMCP_LIMITSSafety limit overrides, e.g. max_temperature_c=80ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
15掲載時のツール一覧 · 2 週間前に更新
このツールにパラメーターはありません。
詳細
Thermo Orbitrap(Instrument API):MCP サーバー
AI エージェントを使って、Thermo Fisher Orbitrap 質量分析計をリアルタイムで監視し、制御できます。装置のモードと真空状態の確認、装置からストリーミングされるスキャンの読み取り(MS オーダーでフィルタリングし、強度が最も高いセントロイドを表示)、検証済みのカスタムスキャンの実行と結果の取得、繰り返しスキャンの設定、raw ファイルへの測定の開始・一時停止・停止が可能です。これらの操作には Thermo 独自の**Instrument API(IAPI)**を使用します。
重要
これはアダプターです。Thermo のソフトウェアは含まれていません。 IAPI は Windows 用の .NET API です。使用するには、Thermo Fisher Scientific と署名済みの IAPI ソフトウェアライセンス契約を締結し、装置にライセンスを適用する必要があります(法的要件、ライセンスに関するよくある質問、ライセンスの取得方法)。このパッケージに IAPI アセンブリが同梱またはダウンロードされることはありません。入手済みのアセンブリを指定して使用します。実機でのテストは一度も行われていません。 以下はすべて、公式の IAPI インターフェース定義とサンプル、およびシミュレーターを使って開発されました。
| パッケージ | labmcp-thermo-iapi(pythonnet を使う場合は、装置 PC に [windows] エクストラをインストールしてください) |
| 装置 | Orbitrap Tribrid(Fusion、Fusion Lumos、Eclipse、Ascend)、Orbitrap Exploris 240/480、Q Exactive ファミリー。Orbitrap Astral は対象外です。Thermo によると、Astral シリーズは IAPI に対応していません(2025 年秋時点)。Exploris 120 も対象外です。Thermo のサンプルによると、この機種は API に対応していません。 |
| インターフェース | Windows の装置 PC 上の .NET API(pythonnet 経由) |
| プロトコル | Thermo Fisher Instrument API(IAPI):インターフェース定義は lib/*.xml、サンプルは examples/ にあります |
| ステータス | 🧪 シミュレーション:Orbitrap シミュレーター(FakeOrbitrap)でテスト済みですが、実機では未検証です。実機テストを報告する |
ハードウェアなしで試す
uvx labmcp-thermo-iapi --simulate --check
シミュレーターはデフォルトで Orbitrap Exploris 480 です(その他の機種では --option sim_model=eclipse または qexactive-hf を指定します)。合成トリプシン消化物を実行します。On モードでの MS1 サーベイスキャン、測定中のデータ依存型トップ 10 メソッド、アクセス ID とともに返されるカスタムスキャンおよび繰り返しスキャン、現実的なトランジェント時間と注入時間、約 5 秒ごとの真空値を含むステータスログが利用できます。
測定機器を接続する
Windows 測定機器 PC で、Tune がインストールされ、IAPI ライセンスが適用されていることを確認します。
- ライセンスに付属する IAPI アセンブリを入手します(Tribrid の場合:Tune 4.3 では
API-2.0.dll、Spectrum-1.0.dll、Thermo.TNG.Factory.dll、Fusion.API-2.0.dll、Tune 4.2 以前ではFusion.API-1.0.dll)。これらをC:\IAPIなどのフォルダーに配置します。 - Python 3.10 以降と、pythonnet を使用するサーバーを インストールします。
pip install "labmcp-thermo-iapi[windows]" - 接続をテストします(測定機器ファミリーに応じて、IAPI の例から接続手順が選択されます)。
labmcp-thermo-iapi --option instrument=tribrid --option assembly_dir=C:\IAPI --check # Fusion/Lumos/Eclipse/Ascend labmcp-thermo-iapi --option instrument=exploris --option assembly_dir=C:\IAPI --check # Exploris 240/480 labmcp-thermo-iapi --option instrument=exactive --option assembly_dir=C:\IAPI --check # Q Exactive family
| ファミリー | サーバーの接続方法(IAPI リポジトリに基づく) | assembly_dir に必要なアセンブリ |
|---|---|---|
tribrid | Factory<IFusionInstrumentAccessContainer>.Create()、StartOnlineAccess()、Get(1) | API-2.0.dll、Spectrum-1.0.dll、Thermo.TNG.Factory.dll、Fusion.API-2.0.dll または Fusion.API-1.0.dll |
exploris | HKLM\SOFTWARE\Thermo Exploris → DataSystem.xml(ApiFileName、ApiClassName) | Thermo.API.NetStd-1.0.dll、Thermo.API.Exploris.NetStd-1.0.dll、Thermo.API.Spectrum.NetStd-1.0.dll(4.3 以降)、または Thermo.API-2.0/Thermo.API.Exploris-1.0/Thermo.API.Spectrum-1.x のセット |
exactive | HKLM\SOFTWARE\Finnigan\Xcalibur\Devices\Thermo Exactive(ApiFileName_Clr2_32_V1、ApiClassName_Clr2_32_V1) | API-2.0.dll(または 1.x)、Spectrum-1.0.dll、ESAPI-1.1.dll(または 1.0) |
サーバーは、Windows 以外で実行されている場合、pythonnet がない場合、フォルダーまたはアセンブリが不足している場合、IAPI サービスに接続できない場合(Tune が実行されていない場合)、またはライセンス不足で IAPI がコマンドを拒否した場合に、具体的なメッセージを表示します。
その他のオプション:readbacks=Name1;Name2(get_instrument_status に表示する測定機器の値。ツールには測定機器が公開している名前が一覧表示されます)、exclusive_scans=true(協調的な IScans アクセスではなく、排他的なアクセスを使用します)、runtime=coreclr、connect_timeout_s、buffer_size(メモリに保持するスキャン数。デフォルトは 500)。
MCP クライアントに追加する
claude mcp add orbitrap -- labmcp-thermo-iapi --option instrument=tribrid --option assembly_dir=C:\IAPI
{
"mcpServers": {
"orbitrap": {
"command": "labmcp-thermo-iapi",
"args": ["--option", "instrument=exploris", "--option", "assembly_dir=C:\\IAPI"]
}
}
}
--read-only を追加すると、エージェントはスキャンとステータスを監視できますが、スキャンの登録や測定の開始はできなくなります。停止ツールとキャンセルツールは引き続き利用できます。別のコンピューターからサーバーに接続するには、測定機器 PC で --transport http --host 0.0.0.0 --port 8000 を指定して実行し、そのポートを保護してください。
ツール
| ツール | 種別 | 説明 |
|---|---|---|
cancel_custom_scans | 🛑 安全 | 保留中のカスタムスキャンと、その処理待ち時間をキャンセルします(IAPI CancelCustomScan)。 |
cancel_repeating_scan | 🛑 安全 | set_repeating_scan で設定した繰り返しスキャンをキャンセルします(IAPI CancelRepetition)。 |
get_command_log | 👁 読み取り | 装置に送信した/装置から受信した直近の生コマンドを返します(新しいものが最後)。デバッグや実行内容の記録に役立ちます。 |
get_connection_info | 👁 読み取り | 接続中の装置(識別情報、アドレス、シミュレーションか実機か)、サーバーが読み取り専用かどうか、適用中の安全制限を報告します。最初に呼び出してください。 |
get_instrument_status | 👁 読み取り | 装置のモデル、IAPI サービス/装置の接続状態、システムのモードと状態(On/Standby/Off、Running/ReadyToDownload など)、取得を一時停止または再開できるかどうか、API で取得できる場合は IAPI ライセンス、要求された読み戻し値、最新のスキャン状態ログ(真空、イオン源)、および受信したスキャン数を報告します。 |
get_possible_scan_parameters | 👁 読み取り | カスタムスキャンと繰り返しスキャンで装置が受け付けるスキャンパラメーター(IScans.PossibleParameters)を一覧表示します。名前、許容範囲または選択肢、デフォルト値、ヘルプを確認できます。項目はモデル、ライセンス、Tune のバージョンによって異なります。 |
get_recent_scans | 👁 読み取り | 装置から受信した直近のスキャンを返します(古いものから順)。必要に応じて、1 つの MS オーダーのみ、または 1 つのカスタムスキャンのアクセス ID のみを指定できます。スキャン番号、MS オーダー、プリカーサー m/z、AGC ターゲット、最も強度の高いセントロイドを含みます。スキャンは On モードでのみ受信されます。 |
pause_acquisition | 🛑 安全 | 実行中の取得を一時停止します(IAPI Pause)。装置が一時停止できないと報告した場合は失敗します。 |
reconnect | 🛑 安全 | 装置との接続を閉じて、再度開きます(電源の再投入やケーブルの抜き差し後など)。 |
resume_acquisition | ⚠️ 危険 | 一時停止中の取得を再開します(IAPI Resume)。サンプルの消費が続きます。 |
set_repeating_scan | ⚠️ 危険 | メソッドもカスタムスキャンも実行されていないときに装置が繰り返し実行するスキャンを定義または置き換えます(IAPI CreateRepeatingScan/SetRepetitionScan)。値は submit_custom_scan と同様に検証されます。cancel_repeating_scan でキャンセルできます。 |
start_acquisition | ⚠️ 危険 | 装置の現在の設定で取得を開始し(IAPI StartAcquisition)、raw ファイルに記録します。サンプルを消費します。装置は On でなければならず、取得がすでに実行中であってはなりません。stop_acquisition で停止します。scan_count および until_stopped の取得は、max_acquisition_duration_s の経過後に自動的にキャンセルされます。 |
stop_acquisition | 🛑 安全 | 実行中の取得を停止します(IAPI CancelAcquisition)。デフォルトではカスタムスキャンと繰り返しスキャンもキャンセルし、必要に応じて装置を Standby に切り替えます(Tune で On に戻します)。先行する手順が失敗してもすべての手順を試み、失敗を報告します。 |
submit_custom_scan | ⚠️ 危険 | 次に実行するカスタムスキャンを 1 つ設定します(IAPI CreateCustomScan/SetCustomScan)。未設定の値は装置のデフォルト値になります。値が PossibleParameters と安全制限に照らして検証され、呼び出しがレート制限された後に送信されます。wait_for_scan(access_id=running_number) で結果を取得します。 |
wait_for_scan | 👁 読み取り | この呼び出し後に到着する次のスキャンを待ち(必要に応じて 1 つの MS オーダー、またはアクセス ID で指定したカスタムスキャンの結果に限定)、返します。submit_custom_scan で設定したカスタムスキャンについては、設定後に到着済みの結果があれば直ちに返します。一致するスキャンが到着しない場合(装置が Standby の場合など)、timeout_s の経過後に found=false を返します。 |
get_connection_info、get_command_log、reconnect は、すべての LabMCP サーバーに組み込まれています。すべての IAPI 制御呼び出しは、送信した正確なスキャン値とともにコマンドログに記録されます。
安全制限
| 制限 | デフォルト | 意味 |
|---|---|---|
max_custom_scans_per_minute | 60 scans/min | エージェントが任意の60秒間に実行できるカスタムスキャンの数です(サーバー側のレート制限。reconnect ではリセットされません) |
max_injection_time_ms | 1000 ms | カスタムスキャンまたは繰り返しスキャンにおける最大の最大注入時間(MaxIT)です(複数の値をとる MaxIT の場合は各要素が対象です) |
max_acquisition_duration_s | 7200 s | エージェントが開始できる最長の測定時間です。これを超える duration は拒否され、scan_count / until_stopped の測定は時間切れになると自動的にキャンセルされます(壁時計時間で、停止時間も含みます) |
起動時に上書きできます:--limit max_custom_scans_per_minute=600。
これらの制限に加え、カスタムスキャンと繰り返しスキャンのすべての値は、送信前に装置独自の IScans.PossibleParameters と照合されます。パラメーター名が存在すること、数値が装置の範囲内であること(たとえば FirstMass / LastMass の m/z 範囲)、OrbitrapResolution などの選択式パラメーターが許可された値のいずれかであることが確認されます。IAPI は無効な値を黙って無視するため、サーバーは事前に確認し、受け付けた値を装置独自の表記で送信します(hcd は HCD として送信され、整数パラメーターの 2.0 は 2 として送信されます)。
stop_acquisition は、いずれかの手順が失敗しても、測定のキャンセル、カスタムスキャンのキャンセル、繰り返しスキャンのキャンセル、Standby への切り替えのすべてを試行し、失敗した内容を報告します。
プロンプトの例
- 「Orbitrap は On モードですか? また、真空度の測定値はいくつですか? 過去1分間に何件のスキャンが届きましたか?」
- 「直近のMS2スキャンを5件、プリカーサー m/z、注入時間、上位10件のフラグメントとともに表示してください。」
- 「m/z 524.26、ウィンドウ幅10 m/zで120k SIMスキャンを実行し、最も強度の高いピークを教えてください。」
- 「サンプル名を HeLa 200 ng として、D:\Data\HeLa_test.raw に30分間の測定を開始し、その後数分おきにMS2スキャンが引き続き届いているか確認してください。」
注意事項
- **インスツルメントモード:**スキャンが届くのは On モードのときだけで、カスタムスキャンや取得にもこのモードが必要です。
stop_acquisition(standby=true)は Standby に切り替えます。このサーバーには On に戻すツールがありません(Tune で切り替えてください)。 - **カスタムスキャン:**省略した値には、Thermo が
IScanDefinition.Valuesについて文書化しているとおり、インスツルメントのデフォルト値が使われます。running_numberはスキャンのaccess_id(トレーラー項目Access Id:)として返されます。指定しない場合、サーバーがスキャンに番号を自動で割り当てます。通常、エージェントが次のツールを呼び出す前にカスタムスキャンは完了するため、wait_for_scan(access_id=...)は、スキャンを開始してから待機を開始するまでの間に届いた結果も返します。複数のカスタムスキャンを、インスツルメントが先行するスキャンを処理する前に開始した場合、IAPI では結果が未定義になります。レート制限により、この状況を抑制しています。 - パラメーター名はモデルと Tune のバージョンによって異なります(例:Tribrid の
Analyzer)。get_possible_scan_parametersを使い、名前付き引数がないパラメーターはextra_parametersに渡してください。 - スキャンヘッダー:
scan_number、ms_order、scan_mode、precursor_mzは Thermo の例で使われているヘッダーキー(Scan、MSOrder、ScanMode、PrecursorMass[0])から取得します。master_scan_number、agc_target、injection_time_msは Thermo の RAW ファイルで使われているトレーラー名(Master Scan Number:、AGC Target:、Ion Injection Time (ms):)から読み取ります。IAPI のリポジトリにはこれらの説明がないため、お使いのインスツルメントではnullになる可能性があります。include_header_trailer=trueを指定すると、送信される内容を正確に確認できます。 - **読み戻し値:**IAPI には読み戻し名(真空計、電圧など)の固定リストがありません。
get_instrument_statusでは、IInstrumentValues.ValueNamesの名前と最新のスキャンのStatusLogが表示されます。通常、真空の読み取り値は後者に表示されます。 - **ライセンス確認:**Exploris インスツルメントでは、API ライセンスの有無をサーバーが報告します(
IExplorisInstrumentAccess.Licenses)。Tribrid および Exactive インスツルメントでは、インスツルメントサービスがライセンスを確認し、コマンドが拒否された際にその旨を報告します。 - **検証済み API サーフェス:**pythonnet バックエンドが使用するすべての IAPI メンバーとそのソースファイルは、
iapi_members.pyに記載されています(thermofisherlsms/iapi@c246dcc と照合済み)。バックエンドがリストにない名前を使用すると、テストが失敗します。 - **スキャンデータ:**Thermo の例で求められているとおり、各スキャンの .NET オブジェクトはコピー後すぐに破棄されます(そうしないと、インスツルメントの共有メモリがブロックされたままになります)。スキャンごとに最大 5 000 個のセントロイドを保持します。
max_centroidsはツールが返すデータを制限し、get_recent_scans(save_path=...)は保持されているすべてのセントロイドを新しい CSV ファイルに書き込みます(パスの末尾は.csvである必要があり、ファイルはまだ存在していてはいけません。既存のファイルが上書きされることはありません)。
ハードウェア検証
| モデル | ファームウェア | インターフェース | 検証者 | 日付 |
|---|---|---|---|---|
| まだありません:最初の検証者になる |
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。