# Alicat Mass Flow & Pressure Controller

Connects AI agents to Alicat mass flow and pressure controllers over serial ASCII. Reads live telemetry, changes gas selections, and sets flow targets.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 23
- Author: K-Dense-AI
- License: Apache-2.0 · policy=link-only · description only; the file stays with the author
- Source: https://github.com/K-Dense-AI/lab-instrument-mcps/tree/HEAD/servers/engineering/alicat-flow-controller
- Updated: 2026-09-26
- HTML: https://affpapa.org/en/nevibecode/mcp/alicat-mass-flow-pressure-controller

## What it does

The server links an agent to Alicat Scientific instruments using RS-232, RS-485, virtual USB serial, or Ethernet bridges. It exposes tools to monitor mass flow and line pressure, as well as commands to adjust setpoints or switch gas calibrations. Testing without physical gear is supported via an internal wire-level simulator for an MC-500SCCM-D unit flowing nitrogen.

Hardware must run in polling mode with a letter unit ID between A and Z instead of streaming mode. If the controller setpoint source is set to analog, the device will discard serial target changes without error. Setting Setpoint Source to Serial/Front Panel in the device menu is required beforehand. To protect running experiments, the `--read-only` flag restricts active writes while leaving the `close_valve` emergency action intact.

## Requirements
- Needs: Python and uv (commands run via uvx)
- Environment variables: `LABMCP_ADDRESS`, `LABMCP_SIMULATE`, `LABMCP_READ_ONLY`, `LABMCP_LIMITS` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add --env LABMCP_ADDRESS=<LABMCP_ADDRESS> --env LABMCP_SIMULATE=<LABMCP_SIMULATE> --env LABMCP_READ_ONLY=<LABMCP_READ_ONLY> --env LABMCP_LIMITS=<LABMCP_LIMITS> --transport stdio alicat-flow-controller -- uvx labmcp-alicat
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from labmcp-alicat <command>

### Codex

**Platform CLI**
```bash
codex mcp add alicat-flow-controller --env LABMCP_ADDRESS=<LABMCP_ADDRESS> --env LABMCP_SIMULATE=<LABMCP_SIMULATE> --env LABMCP_READ_ONLY=<LABMCP_READ_ONLY> --env LABMCP_LIMITS=<LABMCP_LIMITS> -- uvx labmcp-alicat
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from labmcp-alicat <command>

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "alicat-flow-controller": {
            "command": "uvx",
            "args": [
                "labmcp-alicat"
            ],
            "env": {
                "LABMCP_ADDRESS": "<LABMCP_ADDRESS>",
                "LABMCP_SIMULATE": "<LABMCP_SIMULATE>",
                "LABMCP_READ_ONLY": "<LABMCP_READ_ONLY>",
                "LABMCP_LIMITS": "<LABMCP_LIMITS>"
            }
        }
    }
}
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from labmcp-alicat <command>

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "alicat-flow-controller": {
            "type": "stdio",
            "command": "uvx",
            "args": [
                "labmcp-alicat"
            ],
            "env": {
                "LABMCP_ADDRESS": "<LABMCP_ADDRESS>",
                "LABMCP_SIMULATE": "<LABMCP_SIMULATE>",
                "LABMCP_READ_ONLY": "<LABMCP_READ_ONLY>",
                "LABMCP_LIMITS": "<LABMCP_LIMITS>"
            }
        }
    }
}
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from labmcp-alicat <command>

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e LABMCP_ADDRESS=<LABMCP_ADDRESS> -e LABMCP_SIMULATE=<LABMCP_SIMULATE> -e LABMCP_READ_ONLY=<LABMCP_READ_ONLY> -e LABMCP_LIMITS=<LABMCP_LIMITS> alicat-flow-controller uvx labmcp-alicat
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from labmcp-alicat <command>

## When to use it
- monitor mass flow and pressure readings
- adjust flow and pressure setpoints via serial commands
- switch the active gas calibration profile
- tare flow or pressure sensors under zero-flow conditions
- close control valves immediately to halt flow

## Example prompts
- Check current flow, pressure, and temperature on `/dev/ttyUSB0`.
- Set the nitrogen flow target to 50 sccm and log readings for twenty seconds.
- Shut off flow immediately using `close_valve` and report device logs.

## Similar
- [Zotero MCP](https://affpapa.org/en/nevibecode/mcp/zotero-mcp.md) — MCP server · ★ 5585
- [arxiv-mcp-server](https://affpapa.org/en/nevibecode/mcp/arxiv-mcp-server.md) — MCP server · ★ 3235
- [PaperBanana](https://affpapa.org/en/nevibecode/mcp/paperbanana.md) — MCP server · ★ 2418
- [MATLAB MCP Server](https://affpapa.org/en/nevibecode/mcp/matlab-mcp-server.md) — MCP server · ★ 1723
- [Hex Research](https://affpapa.org/en/nevibecode/mcp/hex-research.md) — MCP server · ★ 584
- [DocsAgent — Zotero, Obsidian & Apple Notes MCP Server](https://affpapa.org/en/nevibecode/mcp/docsagent-zotero-obsidian-apple-notes-mcp-server.md) — MCP server · ★ 578

From the same set: [k-dense-ai/lab-instrument-mcps](https://affpapa.org/en/nevibecode/by/k-dense-ai/lab-instrument-mcps.md) — 28 cards

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
