mcpField
A
Alicat Mass Flow & Pressure Controller

Alicat Mass Flow & Pressure Controller

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

Alicat Mass Flow & Pressure Controller について

Alicat の流量計やコントローラー向けの MCP サーバーです。ASCII シリアルプロトコルで流量・圧力・温度を読み取り、設定値やガス校正、バルブを操作します。研究室での機器操作を想定し、シミュレーターでテスト済みですが、実機では未検証です。

主な機能

  1. 01流量・圧力・温度の読み取り
  2. 02流量または圧力の設定値変更
  3. 03ガス校正の切り替え
  4. 04測定値の時系列記録
  5. 05バルブの保持または閉鎖

活用シーン

  1. 01流量の安定性と圧力ドリフトの監視
  2. 02コントローラーの目標流量の調整
  3. 03ガス校正の変更後のデータ取得
  4. 04緊急時のガス流停止

MCP 対応

MCP クライアントに、機器情報の取得、データ記録、Alicat 機器の制御ツールを提供します。読み取り専用モードと設定値の安全上限に対応します。

設定

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

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

ツール

14

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

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

詳細

Alicat 質量流量・圧力コントローラー — MCP サーバー

AI エージェントが、Alicat の文書化された ASCII シリアルプロトコルを通じて、Alicat Scientific の質量流量計、コントローラー、圧力コントローラーのガス流量、圧力、温度を読み取り、流量または圧力の設定値を指定し、ガスの校正を切り替え、ゼロ調整を行い、バルブを保持または閉じられるようにします。

パッケージlabmcp-alicat
計測器質量流量コントローラー(MC、MCR、MCS、MCE、MCV、MCW、…)、質量流量計(M、MS、MW、…)、圧力コントローラーと圧力計(PC、PCD、P)、液体流量デバイス(L、LC):RS-232/RS-485 ASCII シリアルに対応する Alicat 製品(Modbus/Profibus/EtherNet/IP 仕様を除く)
インターフェースRS-232、RS-485(1 ポートあたり最大 26 台、ユニット ID は A~Z)、USB(仮想 COM ポート)、シリアル・イーサネットブリッジ経由の Ethernet
プロトコルAlicat ASCII シリアル(シリアル通信の概要、Rev. 2、2023 年 2 月;操作マニュアル DOC-MANUAL-MPL、Rev. 2、「デジタル制御」)
ステータス🧪 シミュレーション済み:ワイヤーレベルの Alicat シミュレーターでテスト済みですが、実機ではまだ検証されていません。実機テストを報告

実機なしで試す

uvx labmcp-alicat --simulate --check

シミュレーターは、ファームウェア 10v20 を搭載し、N2 を流す MC-500SCCM-D です。一次遅れの流量応答、小さなセンサーゼロオフセット(tare_flow で除去できます)、実際に即したデータフレームを備えています。

計測器を接続する

  1. 計測器のセットアップ:工場出荷時の設定は、ユニット ID A、19200 baud、データビット 8、パリティなし、ストップビット 1、フロー制御なしです(MENU → SETUP → RS-232 Serial/RS-485 Serial)。複数のデバイスを 1 つの RS-485 ポートに接続する場合は、それぞれに異なるユニット ID を設定してください。デバイスはポーリングモード(@ ストリーミングではなく、英字の ID)にしてください。
  2. **コントローラー:**MENU → CONTROL → Setpoint Setup → Setpoint Source を Serial/Front Panel に設定してください。アナログの設定値ソースを使用している場合、コントローラーはシリアルの設定値を無視します(get_device_info が警告します)。
  3. ポートを確認:uvx labmcp ports
  4. 接続をテスト:
    uvx labmcp-alicat --address /dev/ttyUSB0 --check                   # Linux
    uvx labmcp-alicat --address /dev/tty.usbserial-XXXX --check        # macOS
    uvx labmcp-alicat --address COM4 --check                           # Windows
    uvx labmcp-alicat --address COM4 --option unit_id=B --check        # device B on a shared bus
    uvx labmcp-alicat --address tcp://192.168.1.60:4001 --check        # serial-to-Ethernet bridge
    
    デフォルト以外のボーレートは、アドレスに指定します:serial://COM4?baudrate=115200。

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

Claude Code

claude mcp add alicat -- uvx labmcp-alicat --address /dev/ttyUSB0

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

{
  "mcpServers": {
    "alicat": {
      "command": "uvx",
      "args": ["labmcp-alicat", "--address", "/dev/ttyUSB0", "--limit", "max_setpoint=200"]
    }
  }
}

--read-only を追加すると、流量の読み取りは許可しつつ、設定値の指定、ガスの変更、ゼロ調整、バルブの保持をブロックできます(close_valve は引き続き使用できます)。1 つのバス上で複数のデバイスを使用する場合は、ユニット ID ごとにサーバーエントリーを追加してください(--option unit_id=A、--option unit_id=B、…)。その他のクライアントでは、uvx labmcp config alicat --address /dev/ttyUSB0 --client vscode を使って設定スニペットを生成できます。

ツール

ツール種類説明
close_valve🛑 安全流れを止めます:流量設定値を 0 に設定し、すべてのバルブを閉じた状態に保ちます(Alicat HC)。いつでも安全に呼び出せます。圧力コントローラーでは、圧力設定値は変更せず、バルブを閉じた状態に保って現在の圧力を閉じ込めます。
get_command_log👁 読み取り装置に送信された最新の生コマンドと、装置から受信した返信を返します(新しいものが最後)。デバッグや実行内容の記録に役立ちます。
get_connection_info👁 読み取り接続されている装置(識別情報、アドレス、シミュレーションか実機か)、サーバーが読み取り専用かどうか、有効な安全制限を報告します。最初に呼び出してください。
get_device_info👁 読み取りモデル、シリアル番号、ファームウェア、校正日、装置がコントローラーかどうか、各データフレームフィールドの単位、設定値のフルスケールと設定値のソースを報告します。
hold_valve🎛 制御コントローラーのバルブを現在の位置で固定します(HLD):閉ループ制御が停止するため、上流圧力が変化すると流量が変動します。解除するには resume_control を使用し、完全に遮断するには close_valve を使用してください。
list_gases👁 読み取りこの質量流量装置に登録されているガス(番号と短縮名)を、set_gas での指定方法で一覧表示します。液体用および圧力専用の装置にはガス一覧がありません。
log_flow_series👁 読み取りデータフレームの時系列を記録します(例:流量の安定性、設定値変更後の整定、圧力ドリフトの確認)。すべてのデータポイントと、質量流量(または流量以外の装置での主な測定量)の平均、標準偏差、最小値、最大値を返します。
read_flow👁 読み取りライブデータフレームを読み取ります:質量流量、体積流量、圧力、温度、設定値(コントローラーの場合)、有効なガス、および各ステータスコードを、装置の工学単位で返します。
reconnect🛑 安全装置との接続を閉じて再度開きます(電源を入れ直した後や、ケーブルを再接続した後など)。
resume_control⚠️ 危険バルブの固定を解除し、現在の設定値で閉ループ制御を再開します。設定値が 0 でない場合、流れは直ちに再開します(事前に read_flow で確認してください)。
set_flow_setpoint⚠️ 危険コントローラーの設定値を変更します:ガス流量の開始、変更、停止を行います(または圧力コントローラーで目標圧力を設定します)。0 にすると、流量コントローラーでは流れが止まり、バルブが閉じます。負の値は双方向コントローラーでのみ使用できます。メーターでの実行、max_setpoint の上限超過、装置のフルスケール超過の場合は拒否されます。
set_gas🎛 制御質量流量装置が使用するガス校正を選択します(Gas Select)。流量の計算方法が変わるため、設定値を 0 にしてから実行してください。装置に登録されているガスのみ使用できます(list_gases を参照)。腐食性ガスには耐腐食仕様(Sシリーズ)のハードウェアが必要です。
tare_flow🎛 制御流量の読み取り値を風袋引き(ゼロ調整)します。装置内に流れがない場合にのみ実行してください:上流を遮断するか、コントローラーの設定値を 0 にし、配管を通常の作動圧力に保ちます。設定値が 0 でない場合、または流量が有意に測定されている場合は拒否されます。
tare_pressure🎛 制御圧力の読み取り値を風袋引きします。流れがなく、装置が大気に開放されている(ゲージ圧の場合)か、流れがなく、プロセス配管が加圧されていない(絶対圧、気圧計搭載装置のみ)必要があります。

get_connection_info、get_command_log、reconnect は、すべての LabMCP サーバーに組み込まれています。

安全制限

制限デフォルト意味
max_setpoint100(デバイス単位)エージェントが送信できる最大設定値の大きさです。コントローラー本来の設定値単位(get_device_info に表示される SCCM、SLPM、PSIA など)で指定します。デバイスのフルスケールを超える設定値も拒否されます。
max_series_duration_s600 sエージェントが開始できる最長の記録系列です(850 s を超えることはないため、系列は常に 1 回のツール呼び出しで完了します)。

起動時に上書きできます。例:--limit max_setpoint=500。デフォルトの 100 は意図的に保守的な値です。500 SCCM のコントローラーでは、値を引き上げるまでエージェントの上限は 100 SCCM になります。

プロンプトの例

  • 「このコントローラーの種類、設定されているガス、その単位とフルスケールを教えてください。」
  • 「N2 の流量を 50 SCCM に設定し、30 秒間、0.5 秒ごとに記録して、1% 以内に安定するまでにかかった時間を教えてください。」
  • 「コントローラーを CO2 に切り替えてから、設定値を 0 → 20 → 40 → 60 SCCM と段階的に上げ、各ステップで 2 分間維持し、それぞれのステップにおける平均流量と圧力をまとめてください。」
  • 「ガスを止めた状態で、流量が 0.8 SCCM を示しています。バルブを閉じてから、流量センサーをゼロ調整してください。」
  • 「バイオリアクターのガス供給に問題があるため、今すぐ流量を止めてください。」

注意事項

  • データフレームの解析。 接続時にサーバーはデバイスにデータフレーム定義(??D*)を要求し、すべてのポーリング結果をその定義に照らして解析します。そのため、フィールド名、順序、工学単位はデバイス自体から取得されます(6v以降の列テーブルと、6vより前の旧テーブルの両方に対応しています)。デバイスが??D*に応答しない場合は、Serial Primer(p. 8)とマニュアルのデフォルトレイアウトを使って、位置に基づいてフレームを解析します。各読み取りのlayout_sourceには、使用された方式が記載されます。
  • 設定値には、ファームウェア9v00以降ではLS、旧ファームウェアではSを使用します。変更後は毎回応答を確認します。コントローラーが異なる設定値を報告した場合(範囲外、一方向デバイスでの負の値、またはアナログ設定値ソースなど)、デバイスが現在使用している値とともにエラーを報告します。
  • **close_valve**は流量設定値を0に設定し(流量コントローラーではバルブが閉じます)、続いてHC(バルブを閉じた状態で保持、ファームウェア5v07以降)を送信し、応答内のHLDを確認します。圧力コントローラーでは、ゼロ圧力制御の設定によっては圧力設定値を0にするとバルブが開くことがあるため(Serial Primer p. 17)、HCのみを送信します。resume_control(C)は保持状態を解除します。設定値で流量が再開するため、危険を伴う操作としてマークされています。
  • タレ調整は流量がない状態で行う必要があります。tare_flowとtare_pressureは、流量コントローラーの設定値が0でない場合、またはデバイスの読み取り値がフルスケールの2%を超えている場合に処理を拒否します。安全でない状況をすべて検出できるわけではないため(実際の流量がわずかにあるメーターなど)、事前に必ずガスを止めてください。ゲージ圧のタレ調整ではポートを大気に開放する必要があります。絶対圧のタレ調整では気圧計オプションが必要で、配管が加圧されていない状態で行う必要があります。
  • **log_flow_seriesのsave_path**には、新しい.csvファイルを指定する必要があります。~は展開され、不足しているフォルダーは作成されます。既存のファイルが上書きされることはありません。パスはログ記録の開始前に確認されます。
  • ガスの選択にはGS(10v05以降。save_as_power_upを指定しない限り、電源投入時のガスとして保存されません)または旧式のGを使用します。デバイスにインストールされているガスのみ選択できます。list_gasesで確認できます。
  • **安全ガード:**ユニットIDの後に数字が続く形式(例:A49408)は、Alicatの旧式の整数設定値コマンドです。ドライバーはこの形式のコマンドの送信を拒否します。
  • メーターとゲージはコントローラーのコマンドを無視します。サーバーは、データフレームに設定値がないデバイスでのコントローラーツールの使用を拒否します。
  • 非対応:GPファームウェアのデバイス(ユニットIDの後に$$が必要)、ストリーミングモード(@)、Modbus/Profibus/EtherNet/IPの各バリアント、積算計、バッチ処理、PIDチューニング、COMPOSERの混合ガス作成。
  • フレームレイアウトと応答形式は、オープンソースのalicatlibプロジェクトおよび numat/alicatドライバーで公開されている、実機の5v12から10v20までのデバイスから取得した応答と照合しました。

ハードウェア検証

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

コメント

MCP は初めてですか?

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

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