mcpField
M
Mass Spectrometry Data (mzML, Bruker TDF, vendor conversion)

Mass Spectrometry Data (mzML, Bruker TDF, vendor conversion)

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

Mass Spectrometry Data (mzML, Bruker TDF, vendor conversion) について

LC-MS データファイルを扱う MCP サーバーで、ランの確認、スペクトルの読み取り、簡易 QC を行う分析者向けです。mzML、mzMLb、Bruker TDF を直接読み取り、ユーザーが導入したコンバーターでベンダー形式も変換できます。機器の制御は行いません。

主な機能

  1. 01ランの一覧と測定情報の確認
  2. 02TIC、BPC、抽出イオンクロマトグラムの生成
  3. 03スペクトルの読み取りと前駆体 m/z による MS2 検索
  4. 04ランの QC 指標と警告の要約
  5. 05導入済みコンバーターによるベンダーファイル変換

活用シーン

  1. 01データフォルダー内のランと形式を確認する
  2. 02対象イオンの保持時間とピーク面積を抽出する
  3. 03指定した前駆体 m/z の MS2 スペクトルを探す
  4. 04スプレー信号の途絶などランの QC 問題を調べる

MCP 対応

指定フォルダー内の質量分析ランについて、クロマトグラム、スペクトル、QC 分析を調べるツールを MCP クライアントに提供します。オプションのツールでベンダーファイルを mzML に変換できます。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"k-dense-ai-labmcp-ms-data": {
"command": "uvx",
"args": [
"labmcp-ms-data"
],
"env": {
"LABMCP_ADDRESS": "<LABMCP_ADDRESS>",
"LABMCP_SIMULATE": "<LABMCP_SIMULATE>",
"LABMCP_READ_ONLY": "<LABMCP_READ_ONLY>",
"LABMCP_LIMITS": "<LABMCP_LIMITS>"
}
}
}
}
起動コマンドuvx labmcp-ms-data
設定が必要な環境変数
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-ms-data0.1.1

ツール

12

掲載時のツール一覧 · 2 週間前に更新

このツールにパラメーターはありません。

詳細

質量分析データ(mzML、Bruker TDF、ベンダー形式変換)— MCP サーバー

オープンなインターフェースを通じて、AI エージェントがあらゆるベンダーの LC-MS データファイルを検索、読み取り、解析できるようにします。フォルダー内の測定データを一覧表示し、装置や測定の詳細を報告し、TIC/BPC クロマトグラムをプロットし、頂点と面積を含むイオンクロマトグラムを抽出し、スペクトルを読み取り、プリカーサー m/z で MS2 スキャンを検索し、簡易 QC を実行できます。ベンダーファイルは、お使いの環境にインストール済みのコンバーターで mzML に変換します。これはデータサーバーであり、ハードウェアは制御しません。

パッケージlabmcp-ms-data
装置mzML/mzML.gz/mzMLb として保存されたあらゆる LC-MS 測定データ、直接読み取り可能な Bruker timsTOF(.d、TDF)、変換後の Thermo .raw、Waters .raw フォルダー、Agilent .d、SCIEX .wiff/.wiff2、Shimadzu .lcd、Bruker BAF .d
インターフェースファイル(ローカルまたはネットワーク上のデータフォルダー)
プロトコルpyteomics による mzML 1.1、pyteomics と h5py による mzMLb、SQLite スキーマと timsrust(timsrust-pyo3)による Bruker TDF、msconvert または ThermoRawFileParser による変換
ステータス🧪 シミュレーション済み:合成 LC-MS 測定データ、手書きおよび生成された mzML/mzMLb ファイル、小規模な Bruker TDF テストセットでテスト済みです。幅広い実際の装置ファイルでの検証はまだ完了していません。テスト結果を報告

データなしで試す

uvx labmcp-ms-data --simulate --check

--simulate は、合成の 12 分間 DDA LC-MS/MS 測定データ(simulated_lcms_run.mzML)を提供します。8 種類の既知の分析対象(カフェイン、スルファメトキサゾール、ロイシンエンケファリン、アンジオテンシン II 2+、ベラパミル、glu-フィブリノペプチド B 2+、レセルピン、テルフェナジン)が、同位体包絡を伴うガウス型 LC ピークとして溶出します。また、ポリシロキサン背景イオン、化学ノイズ、動的除外とフラグメントスペクトルを備えたトップ 5 DDA メソッド、AGC に似た注入時間、および QC ツールが検出する約 10.6 分でのエレクトロスプレーのドロップアウトが含まれています。

データを指定する

  1. インストールします(必要な追加機能を選択してください)。

    uvx labmcp-ms-data --help                        # mzML / mzML.gz
    uvx --from 'labmcp-ms-data[bruker]' labmcp-ms-data --help   # + Bruker timsTOF spectra/XICs
    uvx --from 'labmcp-ms-data[mzmlb]' labmcp-ms-data --help    # + mzMLb
    
  2. --address でデータフォルダーを選択します(デフォルト:現在のディレクトリ。多くの MCP クライアントはファイルシステムのルートでサーバーを起動するため、--address を指定しないとサーバーは起動を拒否します)。サブフォルダーも検索されます。エージェントはこのフォルダー内でのみ読み書きできます。.. を含むパス、別の場所を指す絶対パス、外部を指すシンボリックリンクは拒否されます。

    uvx labmcp-ms-data --address ~/data/lcms --check
    
  3. ベンダーファイル(任意): コンバーターはご自身でインストールしてください。このパッケージにベンダーライブラリが同梱されたり、ダウンロードされたりすることはありません。

    • Thermo .raw、すべての OS: ThermoRawFileParser(--option converter=thermorawfileparser。PATH にない場合は --option converter_path=/opt/trfp/ThermoRawFileParser.dll も指定します。Linux/macOS では .dll は dotnet、.exe は mono で起動します)。converter=auto の場合、ファイル名から converter_path が認識されます。
    • すべてのベンダー、Windows: ProteoWizard msconvert(--option converter=msconvert)。
    • すべてのベンダー、Linux/macOS: Docker と docker pull proteowizard/pwiz-skyline-i-agree-to-the-vendor-licenses(--option converter=docker)。イメージをプルすると、ベンダーのライセンスに同意したことになります。コンテナーにマウントされるのは、入力ファイルのフォルダー(読み取り専用)と出力フォルダーのみです。Apple Silicon では x86-64 エミュレーションで実行されるため、処理が遅くなります。Linux では出力ファイルの所有者が root になります。
    • converter=auto(デフォルト)では、Thermo ファイルの場合、ThermoRawFileParser、msconvert、Docker の順に試行します。

    使用されるコマンドは、ThermoRawFileParser -i=<file> -o=<dir> -f=2 [-p] [-g] と msconvert <file> -o <dir> --mzML --zlib [--gzip] [--filter "peakPicking vendor msLevel=1-"](Docker 内では wine msconvert)です。これらはシェルを介さずにタイムアウト付きで実行されます。タイムアウト時には、コンバーターのプロセスツリー全体(および Docker コンテナー)が終了され、不完全な出力は削除されます。

MCP クライアントに追加する

Claude Code

claude mcp add ms-data -- uvx --from 'labmcp-ms-data[bruker]' labmcp-ms-data --address /path/to/data

Claude Desktop / Cursor / Windsurf(claude_desktop_config.json、.cursor/mcp.json、…)

{
  "mcpServers": {
    "ms-data": {
      "command": "uvx",
      "args": ["--from", "labmcp-ms-data[bruker]", "labmcp-ms-data", "--address", "/path/to/data",
               "--option", "converter=docker"]
    }
  }
}

--read-only を追加すると、convert_to_mzml(データファイルを書き込む唯一のツール)が非表示になります(データフォルダー内への save_path による CSV エクスポートは引き続き利用できます)。save_path は .csv で終わる必要があります(拡張子のない名前には拡張子が付与されます)。既存のファイルは、呼び出しで overwrite=true が指定されない限り置き換えられません。その他のクライアントでは、uvx labmcp config ms-data --address /path/to/data --client vscode(cursor、codex、claude-code も指定可能)で設定スニペットを生成できます。

ツール

ツール種類説明
convert_to_mzml🎛 制御ベンダー形式のファイル(Thermo .raw、Waters .raw、Agilent .d、SCIEX .wiff、Shimadzu .lcd、Bruker .d)を、ユーザーがインストールしたコンバーター(ThermoRawFileParser、ProteoWizard msconvert、または Docker 内の msconvert)で mzML に変換します。コンバーターは --option converter=... で選択します。データフォルダーに新しいファイルを書き込みます。数分かかる場合があります。コンバーターが設定されていない場合は、インストール手順とともにエラーになります。
extract_ion_chromatogram👁 読み取り1 つ以上の m/z 値を対象にした抽出イオンクロマトグラム(XIC/EIC)です。各 MS1 スペクトル(または別の ms_level)で、許容誤差(ppm または Da)の範囲内にある強度を合算します。各対象について、頂点の RT と強度、頂点ピークの境界、面積(強度 x 分、ベースライン差し引きなし)、FWHM、およびダウンサンプリングしたトレースを返します。RT ウィンドウ内のすべてのスペクトルを読み込むため、長時間の測定では rt_start_min/rt_end_min を指定して範囲を絞ってください。
find_ms2_scans👁 読み取りprecursor_mz から許容誤差の範囲内にあるプリカーサー m/z の MS2(MSn)スペクトルを検索します。必要に応じて、RT ウィンドウ内および 1 つの電荷状態に絞り込めます。インデックス、スキャン番号、RT、プリカーサー m/z、ppm 単位の誤差、電荷、強度を返します。該当する結果は get_spectrum で開けます。
get_bpc👁 読み取りベースピーククロマトグラム(各スペクトルで最も強度の高いピークとその m/z を示す)を、保持時間に対して表示し、max_points にダウンサンプリングします。溶出する化合物を見つけるには TIC よりも見やすく、ベースピークの m/z から測定の各部分で優勢なイオンがわかります。
get_command_log👁 読み取り装置に送信した直近の生コマンドと受信した応答を(新しい順に)返します。デバッグや、実行した操作の記録に役立ちます。
get_connection_info👁 読み取り接続されている装置(識別情報、アドレス、シミュレーションか実機か)、サーバーが読み取り専用かどうか、有効な安全制限を報告します。最初に呼び出してください。
get_run_info👁 読み取り1 回の測定について、装置のベンダー/モデル/シリアル番号(ファイルに記録されている場合)、測定日、ソフトウェア、MS レベルごとのスペクトル数、保持時間と m/z の範囲、極性、セントロイド/プロファイル、およびイオンモビリティデータの有無を説明します。大きなファイルでの初回呼び出し時にはインデックスを作成するため、時間がかかる場合があります。以降の呼び出しは即時に完了します。
get_spectrum👁 読み取りindex、scan_number、native_id、または最も近い rt_min のいずれか(必ず 1 つだけ指定)で選択したスペクトルを読み取ります。MS レベル、RT、極性、セントロイド/プロファイル、MS2 のプリカーサー m/z と電荷、要約(ピーク数、TIC、ベースピーク、m/z 範囲)、および強度の高い上位 top_n 個のピークを返します。save_path を指定すると、ピーク一覧全体を CSV に書き込みます。プロファイルスペクトルでは、上位ピークはプロファイルの局所最大値です。
get_tic👁 読み取り1 つの MS レベルについて、全強度をスペクトルごとに合算したトータルイオンクロマトグラムを保持時間に対して表示し、max_points にダウンサンプリングします(ピークを保持できるよう、各ビンの最大値を使用します)。頂点、中央値、面積を返します。save_path を指定すると、すべての点を CSV に書き込みます。
list_runs👁 読み取りデータフォルダー内の質量分析測定を検索し、それぞれのベンダーと形式(mzML/mzML.gz/mzMLb、Bruker .d TDF または BAF、Agilent .d、Thermo .raw、Waters .raw フォルダー、SCIEX .wiff/.wiff2、Shimadzu .lcd、mzXML)を検出します。readable_directly=false は、解析する前に convert_to_mzml で測定データを変換する必要があることを示します。
reconnect🛑 安全装置への接続を閉じて再度開きます(装置の電源を入れ直した後や、ケーブルを再接続した後など)。
summarise_run👁 読み取り測定の簡易 QC を行います。MS1/MS2 の数、TIC の安定性(CV、スプレーの途切れ)、シグナルの溶出位置、サイクル時間、サイクルあたりの MS2 スキャン数、注入時間の中央値、MS2 が最大注入時間に達した頻度、プリカーサーの電荷状態を確認し、平易な言葉で警告を返します。

get_connection_info、get_command_log、reconnect は、すべての LabMCP サーバーに組み込まれています(ここでの reconnect はキャッシュされた測定を閉じます)。物理的な制御は行わないため HAZARD ツールはなく、SAFETY 停止ツールも必要ありません。

安全上限

上限デフォルト意味
max_conversion_time_s3600 sコンバーターが停止されるまでに、convert_to_mzml 呼び出しを実行できる最長時間
max_xic_targets501 回の extract_ion_chromatogram 呼び出しで指定できる m/z 値の最大数

起動時に上書きします:--limit max_conversion_time_s=7200。

プロンプトの例

  • 「このフォルダーにはどのランがあり、変換が必要なのはどれですか?」
  • 「QC_2024_03_01.mzML の装置、取得日、スキャン数を教えてください。」
  • 「カフェイン(195.0877)とベラパミル(455.2904)の XIC を 5 ppm で抽出し、ピーク頂点 RT と面積を報告してください。」
  • 「5~7 分の間にある m/z 523.7745 の MS2 スキャンをすべて見つけ、最も強度の高いスキャンのフラグメントを表示してください。」
  • 「直近 3 件のランで QC を実行してください。スプレーのドロップアウトはありますか? また、1 サイクルあたり MS2 はいくつありますか?」
  • 「sample_07.raw を mzML に変換してから、ベースピーククロマトグラムをプロットしてください。」

注記

  • フォーマットのサポート: pyteomics(Apache-2.0)を介して、mzML(インデックス付きまたはなし、.gz も可)に対応します。PSI-MS 語彙は psims に同梱されており、ダウンロードは不要です。mzMLb には [mzmlb] エクストラ(h5py、hdf5plugin)が必要です。Gzip 圧縮された mzML は、ランダムアクセスのため一時ファイルに展開されます。
  • Bruker timsTOF(TDF): ランのメタデータ(装置、シリアル番号、日付、m/z および 1/K0 の範囲)、TIC(Frames.SummedIntensities)、BPC 強度(Frames.MaxIntensity。モビリティスキャン内で最も強度の高い単一ピーク。m/z は保存されません)、および DDA プリカーサーリストは、analysis.tdf の SQLite テーブル(GlobalMetadata、Frames、Precursors、PasefFrameMsMsInfo)から直接読み取るため、エクストラなしで利用できます。スペクトルと XIC には [bruker] エクストラ(timsrust-pyo3、Apache-2.0、Linux/macOS/Windows 用のホイール)が必要です。MS1 フレームと diaPASEF フレームはイオンモビリティにわたって合算されます(diaPASEF MS2 フレームには、すべてのアイソレーションウィンドウが混在します)。各 ddaPASEF プリカーサーは 1 つの MS2 スペクトルです。出力ではイオンモビリティは分離されません。Bruker BAF の .d フォルダーは変換が必要です。
  • ベンダー形式: Thermo、Waters、Agilent、SCIEX、Shimadzu、Bruker BAF のファイルは、再配布がライセンスで許可されていない各ベンダー独自のライブラリでのみデコードできます。サーバーはこれらを検出し、インストール済みのツールで変換します(上記を参照)。ベンダーのコードをダウンロードすることはありません。
  • 数値: リテンションタイムは分単位です(mzML のスキャン開始時刻は、単位アクセッションに基づいて秒から変換されます)。XIC 強度は許容誤差内 ± にある全ピークの合計です。面積は、トレースがピーク頂点の 1 % まで低下する点、または谷に達する点の間を、RT(分)に対して台形積分した値で、ベースライン減算は行いません。FWHM はその範囲内で測定されます(共溶出ピークによってトレースが半値を上回り続ける場合は null です)。相対比較に使用してください。
  • 大容量ファイル: ランへの初回アクセス時に、インデックス作成のため全スペクトルを 1 回走査します(TIC、プリカーサー、RT)。最大 4 件のランがキャッシュされます(--option cache_size=N)。ファイルが変更されると(更新日時またはサイズ)、ランは自動的に再度開かれます。XIC は RT ウィンドウ内のすべてのスペクトルを読み取るため、長いランではウィンドウを狭めてください。
  • プロファイルデータ: クロマトグラムと XIC はそのまま利用できます。get_spectrum は局所最大値を「ピーク」として報告します。適切なセントロイドを得るには、ピークピッキングを行って変換してください。

ハードウェア検証

装置/ファイル形式ソフトウェアバージョンインターフェース検証者日付
まだありません:最初の検証者になる

コメント

MCP は初めてですか?

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

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