mcpField
N
New Era Syringe Pump

New Era Syringe Pump

Local
github.comScience & Education23Updated 5w ago

About New Era Syringe Pump

New Era Syringe Pump is an MCP server for controlling New Era Pump Systems syringe pumps over RS-232. It supports infusion, withdrawal, volume monitoring and pump safety controls; hardware verification is not yet reported.

Key features

  1. 01Set syringe diameter from presets or a measurement
  2. 02Infuse or withdraw a specified volume at a set rate
  3. 03Inspect pump status and dispensed volume
  4. 04Stop pumping and reset volume counters
  5. 05Monitor through read-only mode

Use cases

  1. 01Deliver a measured volume into a reactor
  2. 02Prime a syringe at a specified flow rate
  3. 03Check pump status and alarms
  4. 04Stop a running pump remotely

MCP support

Exposes pump setup, infusion, withdrawal, status, volume and stop controls as tools for MCP clients. Each server controls one pump over an RS-232 connection.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"k-dense-ai-labmcp-new-era": {
"command": "uvx",
"args": [
"labmcp-new-era"
],
"env": {
"LABMCP_ADDRESS": "<LABMCP_ADDRESS>",
"LABMCP_SIMULATE": "<LABMCP_SIMULATE>",
"LABMCP_READ_ONLY": "<LABMCP_READ_ONLY>",
"LABMCP_LIMITS": "<LABMCP_LIMITS>"
}
}
}
}
Run commanduvx labmcp-new-era
Environment variables to set
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

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
pypilabmcp-new-era0.1.2

Tools

11

Saved tool list · updated 2w ago

This tool takes no parameters.

Details

From the project README

New Era Syringe Pump — MCP Server

Let an AI agent set up the syringe, infuse or withdraw an exact volume at a set rate, follow the dispensed volume and stop New Era Pump Systems syringe pumps through their documented RS-232 Basic-mode command set.

Packagelabmcp-new-era
InstrumentsNE-1000 Multi-Phaser, NE-1002X, NE-1010, NE-4000 two-channel, NE-500 OEM, NE-8000 high-pressure, and other NE-1000-series pumps with an RS-232 port
InterfacesRS-232 (RJ-11 "To Computer" jack), USB via New Era's CBL-USB232 or any USB-RS-232 adapter, serial-to-Ethernet adapters
ProtocolNew Era RS-232 Basic mode (NE-1000 User Manual, Publication #1200-01, section 10; same command set in the NE-4000 manual)
Status🧪 simulated: tested against a wire-level simulator, not yet verified on hardware. Report a hardware test

Try it without hardware

uvx labmcp-new-era --simulate --check

The simulator pumps in real time. Add --option sim_speed=20 to make simulated time run 20× faster for demos.

Connect your pump

  1. Pump setup: the pump must be in Address mode (the default, Ad:nn in the Setup menu) and in Basic communications mode (the default; if someone enabled Safe mode, send SAF0 from a terminal or run a master reset). Factory settings are 19200 baud, 8N1, network address 0.
  2. Cable: New Era CBL-PC-PUMP-7 (plus CBL-USB232 for USB) into the pump's To Computer jack.
  3. Find the port: uvx labmcp ports
  4. Test the connection:
    uvx labmcp-new-era --address /dev/ttyUSB0 --check            # Linux
    uvx labmcp-new-era --address /dev/tty.usbserial-XXXX --check  # macOS
    uvx labmcp-new-era --address COM5 --check                    # Windows
    
    Non-default baud rates go in the address: serial://COM5?baudrate=9600.
  5. Pump networks: up to 100 pumps can be daisy-chained (To Network → next pump's To Computer), each with its own address 0–99. Run one server per pump and select it with --option pump_address=3. Without the option, commands carry no address prefix, which the pumps treat as address 0.

Add to your MCP client

Claude Code

claude mcp add syringe-pump -- uvx labmcp-new-era --address /dev/ttyUSB0

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

{
  "mcpServers": {
    "syringe-pump": {
      "command": "uvx",
      "args": ["labmcp-new-era", "--address", "/dev/ttyUSB0"]
    }
  }
}

Each server controls one pump (--option pump_address=N on a daisy-chained network). A serial port can only be opened by one server at a time, so to drive two pumps at once give each its own cable/port. Add --read-only to allow monitoring but block pumping and settings changes.

Tools

ToolKindDescription
clear_dispensed_volume🎛 controlReset the infused and withdrawn volume accumulators to zero. Only possible while stopped.
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_dispensed_volume👁 readReturn the accumulated infused and withdrawn volumes (pump command DIS).
get_status👁 readReport what the pump is doing (infusing/withdrawing/stopped/paused, alarms), the syringe diameter, rate, target volume, direction and the accumulated dispensed volumes.
infuse⚠️ hazardPush volume_ml out of the syringe at rate_ml_min, then stop. Returns as soon as pumping has started, with the estimated duration. Requires the correct syringe diameter (set_syringe) and a stopped pump. Overwrites phases 1-2 of the pump's stored Pumping Program.
list_syringe_presets👁 readList the syringe inside diameters from the New Era manual's reference table (BD, Monoject, Terumo, HSW Norm-Ject, Poulten & Graf glass, stainless steel, SGE, Hamilton), with the NE-1000 rate range each allows. Use a name with set_syringe.
reconnect🛑 safetyClose and re-open the connection to the instrument (e.g. after it was power cycled or a cable was re-plugged).
set_syringe🎛 controlSet the syringe inside diameter, either from a preset or a measured value. The pump must be stopped. Changing the diameter also resets the dispensed-volume accumulators and may switch the pump's volume units (µL below 14.0 mm, mL above).
stop_pump🛑 safetyStop the pump immediately (STP). A paused program is also cancelled so it cannot resume.
withdraw⚠️ hazardPull volume_ml into the syringe at rate_ml_min, then stop. Returns as soon as pumping has started. Make sure the syringe has room for the volume. Overwrites phases 1-2 of the pump's stored Pumping Program.

Safety limits

LimitDefaultMeaning
max_rate_ml_min10 mL/minHighest pumping rate infuse/withdraw may set
max_volume_ml20 mLLargest volume a single infuse/withdraw may move

Override at launch: --limit max_rate_ml_min=0.5 --limit max_volume_ml=2 (e.g. for a microfluidic chip). The pump itself also refuses rates outside what the syringe diameter allows (?OOR), and the server explains that range.

Example prompts

  • "Set the pump for a BD 10 mL syringe and infuse 2 mL at 0.5 mL/min into the reactor. Tell me when it's done."
  • "Withdraw 250 µL at 100 µL/min, then report how much was actually withdrawn."
  • "What's the pump doing right now? Is there an alarm?"
  • "Our syringe is a 5 mL glass Hamilton with 10.30 mm inside diameter — set that, then prime by infusing 0.1 mL at 1 mL/min."
  • "Stop the pump now."

Notes

  • Diameter is everything. The pump converts volume to plunger travel from the inside diameter. Presets come from the reference table in the NE-1000 manual (section 12.7); always confirm against your syringe manufacturer's data. Changing the diameter resets the dispensed-volume counters, and the pump works in µL for diameters ≤ 14.0 mm and in mL above.
  • Stored program is overwritten. infuse/withdraw program phase 1 as a RATE phase (rate, volume, direction) and phase 2 as STOP, so the pump stops after the volume. Any multi-phase Pumping Program you stored on the pump is overwritten in phases 1–2.
  • Rounding. The pump accepts at most 4 significant digits (and 3 decimals). The server picks the rate units (µL/min, mL/min, µL/h, mL/h) that represent your rate most precisely and reports the exact values it sent.
  • infuse/withdraw return as soon as pumping starts; long infusions keep running after the tool call. stop_pump sends STP and, if the program is then paused, a second STP so the program cannot be resumed by accident.
  • The first reply after the pump powers up is a reset alarm (A?R). The server acknowledges it and repeats the command; stall alarms (A?S) are reported, never retried.
  • Safe mode is not supported. Safe mode (CRC-16 framing, communication watchdog) is recommended by New Era for production. This server uses Basic mode only.
  • The NE-300 "Just Infusion" manual documents no RS-232 interface, so it is not supported. Syringe rate ranges quoted by list_syringe_presets are for the NE-1000; other models (e.g. NE-8000, NE-1010) have different speed ranges.

Hardware verification

ModelFirmwareInterfaceVerified byDate
none yet: be the first

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.