mcpField
T
Thermo Orbitrap (Instrument API)

Thermo Orbitrap (Instrument API)

ローカル
github.com科学・教育235 週間前に更新

Thermo Orbitrap (Instrument API) について

ライセンスが必要な Instrument API を介して、Thermo Fisher Orbitrap 質量分析計の状態確認や制御を行う MCP アダプターです。装置を使うワークフロー向けですが、実機では未検証で、シミュレーターのみでテストされています。

主な機能

  1. 01装置状態と真空値の取得
  2. 02直近スキャンとセントロイドピークの確認
  3. 03検証済みカスタムスキャンの送信
  4. 04繰り返しスキャンの設定
  5. 05測定の開始・一時停止・停止

活用シーン

  1. 01装置モードと真空状態の確認
  2. 02MS2 スキャンと主要ピークの確認
  3. 03指定パラメーターでのカスタムスキャン実行
  4. 04測定結果の raw ファイルへの記録

MCP 対応

MCP クライアントに Orbitrap の状態確認、スキャン取得、測定制御のツールを提供します。実機には Windows、ライセンス取得済みの Thermo Instrument API アセンブリと適用ライセンスが必要です。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"k-dense-ai-labmcp-thermo-iapi": {
"command": "uvx",
"args": [
"labmcp-thermo-iapi"
],
"env": {
"LABMCP_ADDRESS": "<LABMCP_ADDRESS>",
"LABMCP_SIMULATE": "<LABMCP_SIMULATE>",
"LABMCP_READ_ONLY": "<LABMCP_READ_ONLY>",
"LABMCP_LIMITS": "<LABMCP_LIMITS>"
}
}
}
}
起動コマンドuvx labmcp-thermo-iapi
設定が必要な環境変数
LABMCP_ADDRESSInstrument address, e.g. serial:///dev/ttyUSB0 or tcp://192.168.1.50:5025
LABMCP_SIMULATESet to 1 to use the built-in simulator (no hardware)
LABMCP_READ_ONLYSet to 1 to disable all state-changing tools
LABMCP_LIMITSSafety limit overrides, e.g. max_temperature_c=80

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypilabmcp-thermo-iapi0.1.1

ツール

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 ライセンスが適用されていることを確認します。

  1. ライセンスに付属する 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 などのフォルダーに配置します。
  2. Python 3.10 以降と、pythonnet を使用するサーバーを インストールします。
    pip install "labmcp-thermo-iapi[windows]"
    
  3. 接続をテストします(測定機器ファミリーに応じて、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 に必要なアセンブリ
tribridFactory<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
explorisHKLM\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 のセット
exactiveHKLM\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_minute60 scans/minエージェントが任意の60秒間に実行できるカスタムスキャンの数です(サーバー側のレート制限。reconnect ではリセットされません)
max_injection_time_ms1000 msカスタムスキャンまたは繰り返しスキャンにおける最大の最大注入時間(MaxIT)です(複数の値をとる MaxIT の場合は各要素が対象です)
max_acquisition_duration_s7200 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 である必要があり、ファイルはまだ存在していてはいけません。既存のファイルが上書きされることはありません)。

ハードウェア検証

モデルファームウェアインターフェース検証者日付
まだありません:最初の検証者になる

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。