# IKA Hotplate & Overhead Stirrer

Control IKA heating and stirring equipment through NAMUR commands, and read temperatures, speed, and torque. Useful for monitoring or changing a connected stirrer from an agent.

- 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/chemistry/ika-stirrer
- Updated: 2026-09-26
- HTML: https://affpapa.org/en/nevibecode/mcp/ika-hotplate-overhead-stirrer

## What it does

The server connects an agent to IKA C-MAG HS and IKA Plate hotplate stirrers, as well as EUROSTAR overhead stirrers. It can retrieve readings, change temperature and speed setpoints, start or stop heating and stirring, and wait for a temperature target to remain stable. Its command log exposes recent instrument exchanges for troubleshooting.

Connect over USB as a virtual COM port or with an RS-232 PC 1.1 cable. A simulator is available, but hardware testing has not yet been verified. On Windows, USB requires IKA's driver; the interface uses fixed serial settings: 9600 baud, 7 data bits, even parity, 1 stop bit, and no flow control. Temperature and speed controls respect configured limits, and read-only mode allows monitoring while keeping stop tools available. Without an accessible COM port, the server cannot communicate with the stirrer.

## 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 ika-stirrer -- uvx labmcp-ika
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from labmcp-ika <command>

### Codex

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

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "ika-stirrer": {
            "command": "uvx",
            "args": [
                "labmcp-ika"
            ],
            "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-ika <command>

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "ika-stirrer": {
            "type": "stdio",
            "command": "uvx",
            "args": [
                "labmcp-ika"
            ],
            "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-ika <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> ika-stirrer uvx labmcp-ika
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from labmcp-ika <command>

## When to use it
- read a stirrer’s temperature, speed, and torque
- set a heating target or stirring speed
- start or stop the heater and stirring motor
- wait until a target temperature stabilizes
- inspect instrument commands and replies

## Example prompts
- Read the current measurements from the connected stirrer.
- Set the heating target and turn the heater on.
- Wait until the medium reaches a stable target temperature.

## 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) — 15 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
