Pfeiffer Vacuum Gauge Controller

io.github.K-Dense-AI由 GitHub 帳號 K-Dense-AI 發布v0.1.2更新於 Oct 27, 2026

MCP server for Pfeiffer Vacuum TPG 361/362/366 and TPG 261/262 gauge controllers.

已驗證STDIO僅桌面開發者工具資料與分析

概覽

AI 產生的概覽

讓 AI 助理透過序列埠或乙太網路讀取、記錄並控制 Pfeiffer Vacuum TPG 361/362/366 與 TPG 261/262 總壓計控制器的 MCP 伺服器。

可以做什麼
  • 讀取壓力:讀取單一通道或一次讀取全部通道,並附上各通道狀態與 mbar 數值。
  • 檢視儀器資訊:回報連線身分、位址、模擬或實機、是否唯讀及生效的安全限值,列出各通道的真空計類型,讀取或清除控制器錯誤字。
  • 記錄壓力序列:依固定間隔取樣,用於抽氣曲線、漏率上升或烘烤測試,回傳統計結果並可寫入新的 CSV 檔案。
  • 變更設定:切換顯示單位,開啟或關閉電離真空計,開啟前會先做壓力檢查。
  • 維護連線:斷電或換線後重新連線,並檢視原始指令日誌以便除錯。
適用情境
適合需要助理監看或記錄 Pfeiffer TPG 控制器真空壓力的情境,例如查看腔體與前級壓力、擷取抽氣或漏率曲線,或在壓力夠低時開啟電離真空計。也可用內建模擬器在沒有硬體的情況下試用。
執行需求
以本機 Python 套件(labmcp-pfeiffer-tpg,透過 uvx 啟動)經 stdio 執行。需要可連線的控制器:序列埠如 /dev/ttyUSB0 或 COM3,或 8000 埠的 TCP 位址,透過 LABMCP_ADDRESS 或 address 參數設定。控制器須使用助記符協定(AUTO 或 MNE)。選用變數:LABMCP_LIMITS、LABMCP_READ_ONLY、LABMCP_SIMULATE。
安裝前請注意
開啟電離真空計有風險:高壓下熱陰極燈絲可能燒毀、冷陰極真空計可能汙染,因此除非有有效讀數不高於 max_switch_on_pressure_mbar,伺服器會拒絕開啟。關閉真空計可能改變接在閥門或幫浦連鎖上的設定點繼電器。切換單位與開關真空計會寫入儀器,可用 LABMCP_READ_ONLY 阻擋。此伺服器僅在模擬器上測試,尚未在實機上驗證。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Pfeiffer Vacuum Gauge Controller,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

Pfeiffer Vacuum Gauge Controller — MCP Server

Let an AI agent read and log chamber and foreline pressures, identify the connected gauges, change the pressure unit and switch ionisation gauges on and off (with a pressure check) on Pfeiffer Vacuum TPG total-pressure gauge controllers.

Packagelabmcp-pfeiffer-tpg
InstrumentsTPG 361 SingleGauge, TPG 362 DualGauge, TPG 366 MaxiGauge (ActiveLine gauges); TPG 261 / TPG 262 (compact gauges)
InterfacesTPG 36x: USB type B (virtual COM port), Ethernet (TCP port 8000); TPG 26x: RS-232
ProtocolPfeiffer mnemonics protocol, ACK/NAK + ENQ (TPG 361/362 communication protocol BG 5510 BEN, TPG 366 communication protocol BG 5511 BEN, TPG 262 operating instructions BG 805 196 BE section 5; originals in the Pfeiffer download center)
Status🧪 simulated: tested against a byte-level simulator of the protocol, not yet verified on hardware. Report a hardware test

Try it without hardware

bash
uvx labmcp-pfeiffer-tpg --simulate --check                      # TPG 362: FullRange gauge + Piraniuvx labmcp-pfeiffer-tpg --simulate --option model=tpg366 --check # 6 channels incl. a cold cathode gauge

The simulated chamber pumps down from 8e-5 mbar towards 2e-7 mbar (10 min time constant) and the foreline sits at about 2.4e-2 mbar.

Connect your controller

  1. Protocol (TPG 36x): the PROTOCOL parameter must be AUTO (factory setting) or MNE (mnemonics), not PV (Pfeiffer Vacuum telegram protocol).
  2. USB (TPG 36x): the USB type B port appears as a virtual COM port. Factory setting 9600 baud, 8N1 (parameter BAUD USB; 19200-115200 also possible).
  3. Ethernet (TPG 36x, TPG 366): set DHCP or a static IP (front panel or Pfeiffer's Ethernet Configuration Tool); the command port is fixed at 8000.
  4. RS-232 (TPG 261/262): 9600 baud 8N1 by default, only TXD/RXD used.
  5. Test the connection:
    bash
    uvx labmcp-pfeiffer-tpg --address /dev/ttyUSB0 --checkuvx labmcp-pfeiffer-tpg --address COM3 --checkuvx labmcp-pfeiffer-tpg --address "serial://COM3?baudrate=115200" --checkuvx labmcp-pfeiffer-tpg --address tcp://192.168.1.70:8000 --check
    The model is detected with AYT (TPG 36x); a controller that does not know AYT is treated as a TPG 26x. Use --option model=tpg261 (or tpg262, tpg361, tpg362, tpg366) to be explicit.

Add to your MCP client

Claude Code

bash
claude mcp add vacuum -- uvx labmcp-pfeiffer-tpg --address tcp://192.168.1.70:8000

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

json
{  "mcpServers": {    "vacuum": {      "command": "uvx",      "args": ["labmcp-pfeiffer-tpg", "--address", "tcp://192.168.1.70:8000"]    }  }}

Add --read-only to allow reading and logging but block unit changes and switching gauges on (switch_gauge_off stays available). For other clients, generate the snippet with uvx labmcp config pfeiffer-tpg --address tcp://192.168.1.70:8000 --client vscode (also cursor, codex, claude-code).

Tools

ToolKindDescription
get_command_log👁 readReturn the most recent raw commands sent to / replies received from the instrument (newest last). Useful for debugging and for recording what was done.
get_connection_info👁 readReport which instrument is connected (identity, address, simulated or real), whether the server is read-only, and the active safety limits. Call this first.
get_errors👁 readRead (and clear) the controller's ERROR word: controller error, no hardware, inadmissible parameter or syntax error. An empty list means no error.
get_gauge_types👁 readList the gauge connected to each channel (TID), what kind it is, and whether it is an ionisation gauge that is currently switched on or off (SEN).
log_pressure_series👁 readLog pressures at a fixed interval (e.g. a pump-down curve, leak-up/rate-of-rise test or bake-out). Returns per-channel statistics in log-space plus a downsampled series; the full series can be written to a new CSV file (an existing file is never overwritten). Bounded by max_log_duration_s and 2 h per call.
read_all_pressures👁 readRead every channel of the controller at once (PRX), with status per channel.
read_pressure👁 readRead one gauge channel: status, pressure in the display unit and in mbar.
reconnect🛑 safetyClose and re-open the connection to the instrument (e.g. after it was power cycled or a cable was re-plugged).
set_gauge_power⚠️ hazardSwitch an ionisation gauge (IKR, PKR, PBR, IMR) on or off (SEN). Switching a hot or cold cathode gauge on at high pressure can burn out the filament or contaminate the gauge, so switching ON is refused unless a valid reading from this gauge or reference_channel is at or below max_switch_on_pressure_mbar. Switching off may trip setpoint relays used as interlocks.
set_unit🎛 controlChange the pressure unit used on the display and interface (UNI). Readings in mbar are always included regardless of this setting.
switch_gauge_off🛑 safetySwitch an ionisation gauge off (e.g. before venting, or if the pressure is rising). Always allowed. Note that setpoint relays assigned to this channel may change state.

get_connection_info, get_command_log and reconnect are built into every LabMCP server.

Safety limits

LimitDefaultMeaning
max_switch_on_pressure_mbar1e-2 mbarAn ionisation gauge may only be switched on when a valid reading (its own, or reference_channel) is at or below this pressure
max_log_duration_s3600 sLongest log_pressure_series an agent may start

Override at launch: --limit max_switch_on_pressure_mbar=1e-3 --limit max_log_duration_s=7200. One log_pressure_series call logs at most 2 h (the tool's timeout); for a longer bake-out, log in consecutive calls to separate files. save_path must end in .csv and must not exist yet (an existing file is never overwritten); it is checked before logging starts.

Example prompts

  • "What's the chamber pressure right now, and is the foreline below 5e-2 mbar?"
  • "Log all gauges every 10 s for 30 minutes and tell me how many decades per minute the chamber is pumping down."
  • "Close the valve, then log channel 1 every 2 s for 5 minutes so I can estimate the leak-up rate."
  • "Which gauges are connected, and which ones are ionisation gauges that are switched off?"
  • "The chamber is below 1e-5 mbar on the FullRange gauge - switch on the cold cathode gauge on channel 3, using channel 1 as the reference."

Notes

  • Switching ionisation gauges on is the hazard. Hot-cathode (Bayard-Alpert) filaments can burn out and cold-cathode (Penning) gauges contaminate when operated at high pressure. set_gauge_power(on=True) requires a reading with status ok at or below max_switch_on_pressure_mbar from the gauge itself or from reference_channel on the same vacuum. An underrange reading from a Pirani is not accepted as proof (what the controller reports on underrange is not specified), so in a Pirani + Penning setup switch the Penning on at the controller, or use a FullRange gauge as the reference. The 1e-2 mbar default is the upper end of a typical cold cathode measuring range; check your gauge's manual and lower it for hot-filament gauges if recommended.
  • Switching a gauge off (switch_gauge_off, or set_gauge_power(on=False)) can change setpoint (switching-function) relays assigned to that channel, which may be wired to valve or pump interlocks.
  • Every pressure comes with the controller's status: ok, underrange, overrange, sensor error, sensor off, no sensor or identification error. pressure is only filled in when the status is ok; raw_value is what the controller sent. Values are converted to mbar (1 Torr = 1.333224 mbar); in V mode no conversion is made.
  • Every command waits for ACK/NAK; after a NAK the ERROR word (controller error, no hardware, inadmissible parameter, syntax error) is read and reported. get_errors reads and clears it.
  • Degas, filter, calibration factors, switching-function setpoints, gauge control (hot start/self control), the data logger and the Pfeiffer Vacuum (PV) telegram protocol are not exposed. RS-485 multi-drop operation has not been tested.

Hardware verification

ModelFirmwareInterfaceVerified byDate
none yet: be the first

來源:servers/physics/pfeiffer-vacuum-gauge/README.md,提交 46545ea

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

2
  1. v0.1.2最新Sep 27, 2026
  2. v0.1.0Sep 26, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分