
PalmSens Potentiostat
io.github.K-Dense-AIPublished by GitHub account K-Dense-AIv0.1.3Updated Oct 24, 2026
MCP server for PalmSens potentiostats running MethodSCRIPT (EmStat Pico, EmStat4, Sensit, Nexus).
Overview
Local MCP server that lets an AI assistant run electrochemistry measurements on PalmSens MethodSCRIPT potentiostats and get back data, peaks and CSV files.
- What you can do
- Run cyclic, linear sweep and differential pulse voltammetry, plus chronoamperometry, with peak and current summaries
- Run raw MethodSCRIPT scripts and read back raw output and decoded data packages
- Inspect the instrument: model, firmware, serial, potential window, PGStat modes and current ranges
- Check connection state, read-only mode and active safety limits, and review the raw command log
- Abort a running measurement, reconnect after a power cycle, and save results to CSV files
- When to use it
- For lab work where an assistant should drive a PalmSens potentiostat directly: routine CV, LSV, DPV or chronoamperometry runs, scan-rate studies, peak and charge summaries, or scripted MethodSCRIPT experiments. The built-in simulator lets you try the workflow without hardware.
- Requirements
- Runs locally as a Python package (labmcp-palmsens, typically via uvx) over stdio. Needs a supported PalmSens instrument reachable by USB serial or UART, set with LABMCP_ADDRESS; the serial port must be free, so PSTrace or MultiTrace has to be closed. Optional LABMCP_LIMITS, LABMCP_READ_ONLY and LABMCP_SIMULATE variables tune limits, read-only mode and simulation.
Installation
In SourceWeft
- Open PalmSens Potentiostat 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
PalmSens Potentiostat — MCP Server
Let an AI agent run cyclic voltammetry, linear sweep voltammetry, differential pulse voltammetry and chronoamperometry on PalmSens potentiostats that speak MethodSCRIPT, and get back downsampled data, peak summaries and optional full-resolution CSV files.
Try it without hardware
The simulator is an EmStat Pico with a 3 mm disk electrode in 1 mM of a reversible one-electron redox couple (E° = +0.20 V, like ferro/ferricyanide vs Ag/AgCl). It interprets the scripts the server sends and streams correctly encoded data packages, so you get a proper CV "duck", DPV peaks and Cottrell decays. Simulated time runs 10× faster than real time; change that with --option sim_speed=1 (real time) or =100.
Connect your instrument
- Close PSTrace / MultiTrace. Only one program can hold the serial port.
- Find the port:
uvx labmcp ports. An EmStat Pico development board or Sensit shows up as a USB serial port (FTDI). An EmStat4 or Nexus shows up as a virtual COM port named after the device. - Test the connection:
Defaults are the EmStat Pico's: 230400 baud, 8N1, XON/XOFF, LF line endings. Over USB the EmStat4 and Nexus ignore the baud rate. For an EmStat4 UART connection use
serial://COM7?baudrate=921600&rtscts=true&xonxoff=false. --checksends the firmware-version (t) and serial-number (i) commands and prints the model, firmware and serial.
Add to your MCP client
Claude Code
Claude Desktop / Cursor / Windsurf (claude_desktop_config.json, .cursor/mcp.json, …)
Add --read-only to allow device information only: every measurement tool applies potential and is hidden.
Tools
Safety limits
Override at launch, e.g. --limit max_potential_v=1.0 --limit max_duration_s=1800. Whatever the limits say, a single tool call is capped at one hour.
Example prompts
- "Run a CV of my ferrocyanide sample from −0.2 V to +0.6 V and back at 50 mV/s, three cycles, and tell me E½ and the peak separation."
- "Do a scan-rate study: CVs at 25, 50, 100 and 200 mV/s between −0.1 and 0.5 V, save each as CSV, and check whether the peak current scales with √v."
- "Run DPV from 0 to 0.6 V with 50 mV pulses and report the peak potential and height."
- "Hold 0.5 V for 60 s, record the current every 0.2 s, and give me the total charge passed."
- "Which potential window and current ranges does this potentiostat support?"
- "Abort the measurement."
Notes
- What the server sends. Each technique is one MethodSCRIPT modelled on PalmSens' measurement-loop examples:
set_pgstat_chan 0,set_pgstat_mode,set_max_bandwidth,set_range_minmax da,set_range ba,set_autoranging ba,set_e,cell_on, optionalwait, thenmeas_loop_cv/lsv/dpv/cawithpck_addof the set potential and current, andon_finished: cell_off. So the cell is switched off after completion and after an abort. A runtime error skipson_finished:(MethodSCRIPT manual §10.1), so after one the server sends a separatecell_offscript. The exact script is inget_command_log. - PGStat mode and bandwidth. Max bandwidth is 6× the data rate (the ratio PalmSens' examples use). On the EmStat Pico and Sensit, the server picks low speed (−1.25 to 2.0 V, 2.2 V window, ≤ 100 Hz), then max range (−1.7 to 2.0 V, 2.6 V window), then high speed (1.214 V window) to fit your potentials. If none fits, it says why before anything is sent. EmStat4 and Nexus use low speed mode; per the manual, the modes do not differ on those instruments.
- Current sign and units. Anodic (oxidation) current is positive; potentials are the set potentials vs RE;
time_scomes from the instrument timer for chronoamperometry and from step/scan rate for sweeps. - Summaries. CV peaks are the raw maximum and minimum current of each scan (no baseline correction). ΔEp and the midpoint are estimates. Staircase sampling makes ΔEp somewhat larger than the ideal 59 mV at large steps.
- Raw scripts.
run_methodscriptchecks literal potentials (andstore_varliterals) ofset_e,set_range_minmax daand the CV/LSV/DPV/SWV/NPV/ACV/CA/PAD/EIS loops andmeas_fast_cv/meas_fast_caagainstmax_potential_v(DPV pulse and 2x SWV amplitude included). Literal current ranges ofset_range ba/set_autoranging baare checked againstmax_current_range_a. Values computed inside the script are not checked. The script is aborted attimeout_sand acell_offscript is run. - Abort.
abort_measurementsends the communication-protocolZcommand. A running technique returns the data measured so far withaborted: true. Afterwards (and when nothing was running) the server runs a one-linecell_offscript, so the cell is also switched off after a raw script withouton_finished:. If the output of a running script cannot be read (e.g. a USB glitch), the server aborts the script and switches the cell off before reporting the error; a single corrupted data line is skipped with a warning instead. - Saving data.
save_pathmust end in.csv; missing folders are created and an existing file is never overwritten (choose a new name). The path is checked before the measurement starts. Points with ananvalue are left out (with a warning). - Not covered: galvanostatic techniques, EIS, SWV/NPV/PAD, multiplexers, bipotentiostat mode, multi-channel MultiEmStat4 systems and the CRC16 protocol extension. Use
run_methodscriptfor single-channel scripts beyond the built-in techniques.
Hardware verification
Source: servers/chemistry/palmsens-potentiostat/README.md at commit 46545ea
Tools
0Version history
2- v0.1.3LatestSep 27, 2026
- v0.1.1Sep 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