
Pfeiffer Vacuum Gauge Controller
io.github.K-Dense-AIPublished by GitHub account K-Dense-AIv0.1.2Updated Oct 27, 2026
MCP server for Pfeiffer Vacuum TPG 361/362/366 and TPG 261/262 gauge controllers.
Overview
MCP server that lets an AI assistant read, log and control Pfeiffer Vacuum TPG 361/362/366 and TPG 261/262 total-pressure gauge controllers over serial or…
- What you can do
- Read pressures: read one channel or all channels at once, with per-channel status and values in mbar.
- Inspect the instrument: report connection identity, address, simulated or real, read-only state and active safety limits, list gauge types per channel, and read or clear the controller error word.
- Log pressure series: sample at a fixed interval for pump-down, leak-up or bake-out runs, returning statistics and optionally writing a new CSV file.
- Change settings: switch the display unit and switch ionisation gauges on or off, with a pressure check before switching on.
- Maintain the link: reconnect after a power cycle or cable change, and review the raw command log for debugging.
- When to use it
- Useful when an assistant should monitor or record vacuum pressures on a Pfeiffer TPG controller, for example checking chamber and foreline readings, capturing a pump-down or leak-up curve, or switching an ionisation gauge on once the pressure is low enough. It can also be tried without hardware using the built-in simulator.
- Requirements
- Runs locally as a Python package (labmcp-pfeiffer-tpg, launched with uvx) over stdio. Needs a reachable controller: a serial port such as /dev/ttyUSB0 or COM3, or a TCP address on port 8000, set via LABMCP_ADDRESS or the address argument. The controller must use the mnemonics protocol (AUTO or MNE). Optional variables: LABMCP_LIMITS, LABMCP_READ_ONLY, LABMCP_SIMULATE.
Installation
In SourceWeft
- Open Pfeiffer Vacuum Gauge Controller in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
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.
Try it without hardware
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
- Protocol (TPG 36x): the PROTOCOL parameter must be AUTO (factory setting) or MNE (mnemonics), not PV (Pfeiffer Vacuum telegram protocol).
- 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).
- 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.
- RS-232 (TPG 261/262): 9600 baud 8N1 by default, only TXD/RXD used.
- Test the connection:
The model is detected with
AYT(TPG 36x); a controller that does not knowAYTis treated as a TPG 26x. Use--option model=tpg261(ortpg262,tpg361,tpg362,tpg366) to be explicit.
Add to your MCP client
Claude Code
Claude Desktop / Cursor / Windsurf (claude_desktop_config.json, .cursor/mcp.json, …)
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
get_connection_info, get_command_log and reconnect are built into every LabMCP server.
Safety limits
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 belowmax_switch_on_pressure_mbarfrom the gauge itself or fromreference_channelon 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, orset_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.
pressureis only filled in when the status is ok;raw_valueis 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_errorsreads 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
Source: servers/physics/pfeiffer-vacuum-gauge/README.md at commit 46545ea
Tools
0Version history
2- v0.1.2LatestSep 27, 2026
- v0.1.0Sep 26, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts