Kr Controller
FreeNot checkedAn MCP server for controlling KR-series relay controllers via serial, TCP, or UDP, featuring auto-discovery, relay control, and advanced PLC capabilities.
About
An MCP server for controlling KR-series relay controllers via serial, TCP, or UDP, featuring auto-discovery, relay control, and advanced PLC capabilities.
README
MCP (Model Context Protocol) server for KR-series relay controllers. Connect your hardware controllers to AI through serial/UART, TCP, or UDP — zero configuration, conversational discovery.
Features
- Conversational Architecture — No config file needed. Tell the AI your connection type, it handles the rest.
- Multi-Transport — Serial (UART 9600 8N1), TCP, UDP with unified transport abstraction.
- Auto Discovery — Broadcast scan finds all connected devices, queries I/O channels and function modules, registers automatically.
- State Persistence — Device connections and registrations saved to
state.json, auto-restored on restart. - 23 MCP Tools — Auto discovery, device scanning, status query, relay control, PLC advanced control, animations, DI trigger automation.
- Fire-and-Forget — Control commands return instantly without waiting for hardware response.
Quick Start
Install
npm install -g mcp-kr-controller
# or use directly without install
npx mcp-kr-controller
Configure in your MCP client
Add to your MCP client config (e.g. Claude Desktop claude_desktop_config.json, WorkBuddy mcp.json):
{
"mcpServers": {
"kr-controller": {
"command": "npx",
"args": ["mcp-kr-controller"],
"type": "stdio"
}
}
}
Or if installed globally:
{
"mcpServers": {
"kr-controller": {
"command": "mcp-kr-controller",
"type": "stdio"
}
}
}
Usage Flow
- Confirm connection type — Tell the AI: "Search for devices"
- AI will ask: "串口还是网络?" (Serial or Network?)
- Network — AI calls
auto_discover(connection_type="network")- Auto-tries V4 TCP
192.168.16.254:8080and V5 UDP broadcast192.168.1.255:8080 - Multi-NIC: auto-matches local NIC to the same subnet (255.255.255.0)
- Devices found are automatically registered with I/O config
- Auto-tries V4 TCP
- Serial — AI asks for COM port, then calls
auto_discover(connection_type="serial", path="COM3")- Connects via RS-485 at 9600 baud, scans and registers devices
- Control — Say "Turn on channel 3 of device 1" — AI handles the rest
If default addresses don't match your network, use setup_connection with manual config.
Multi-NIC Note: The V5 UDP discovery automatically selects the local NIC matching the target subnet (255.255.255.0). If you have multiple network cards, make sure the controller is on the same subnet as one of them.
Hardware Support
Two hardware versions, three transport modes — all share the same control protocol.
| Version | Transport | Product Line |
|---|---|---|
| V5 | TCP / UDP (network) | 8DI, 8DI+8DO, 12DI+8DO, 2DI+9DO, 16DI, 16DO |
| V4 | RS-485 serial, TCP/UDP transparent | Various I/O configurations |
Tested configurations (as of 2026-07-30):
| Device | Ver | I/O | Transport | Status |
|---|---|---|---|---|
| #1 | V5 | 12DI+8DO | UDP broadcast | Verified |
| #1 | V4 | 16DO | TCP transparent | Verified |
| #21 | V4 | 8DI+8DO | RS-485 COM3 | Verified |
Environment Variables (optional)
| Variable | Description |
|---|---|
KR_SERIAL_PATH |
Serial port path (e.g. COM3, /dev/ttyUSB0) |
KR_TCP_HOST |
TCP host |
KR_TCP_PORT |
TCP port (default 8080) |
KR_UDP_HOST |
UDP host |
KR_UDP_PORT |
UDP port (default 8080) |
Protocol
KR-series controllers use an 8-byte fixed-length frame protocol over UART (9600 bps, 8N1):
| Header | Address | Command | Data0 | Data1 | Data2 | Data3 | Checksum |
| 1 byte | 1 byte | 1 byte | 1 byte | 1 byte | 1 byte | 1 byte | 1 byte |
- Header:
0x55(request) /0x22(response) - Address:
0x00/0xFF(broadcast) or0x01–0xFE(device address 1-254) - Checksum:
sum(byte[0..6]) & 0xFF
Supported Commands
| Code | Function |
|---|---|
| 0x21 | Find devices (broadcast) |
| 0x2D | Query device properties (I/O count, modules) |
| 0x10 | Read status (DI + relay) |
| 0x11 | Disconnect one relay |
| 0x12 | Connect one relay |
| 0x13 | Set relays by bitmask |
| 0x06/0x08 | Momentary on/off (by mask) |
| 0x09/0x18 | Momentary on/off (single channel) |
| 0x07/0x17 | Blink (single/multi) |
| 0x14/0x15/0x16 | Group disconnect/connect/toggle |
MCP Tools
Connection Management
setup_connection— Establish serial/TCP/UDP connectionlist_connections— List active connectionsremove_connection— Remove a connection
Device Discovery
scan_devices— Broadcast scan + auto-register deviceslist_devices— Show registered devices
Status & Query
read_status— Read DI inputs + relay outputsget_function_modules— Query function module bitmask
Basic Control
connect_relay— Connect (energize) one relaydisconnect_relay— Disconnect (de-energize) one relayset_relays_by_mask— Set all relays by bitmaskall_relays_on/all_relays_off— All relays on/off
PLC Advanced Control
momentary_on_off_single/momentary_off_on_single— Momentary action (single channel)momentary_on_off_multi/momentary_off_on_multi— Momentary action (by mask)blink_single/blink_multi— Blink relay(s)group_connect/group_disconnect/group_toggle— Group operations
Animation
ping_pong— Ping-pong bounce animation with configurable delay
Event Trigger
wait_di_trigger— Monitor DI channel, execute action on rising edge
Development
# Clone
git clone https://github.com/kinbeg/mcp-kr-controller.git
cd mcp-kr-controller
# Install dependencies
npm install
# Build
npm run build
# Run in dev mode
npm run dev
Purchase
KR-series controllers are available at the official store:
License
MIT
Install Kr Controller in Claude Desktop, Claude Code & Cursor
unyly install mcp-kr-controllerInstalls into Claude Desktop, Claude Code, Cursor & VS Code — handles npx, uvx and build-from-source repos for you.
First time? Get the CLI: curl -fsSL https://unyly.org/install | sh
Or configure manually
Run in your terminal:
claude mcp add mcp-kr-controller -- npx -y github:kinbeg/mcp-kr-controllerStep-by-step: how to install Kr Controller
FAQ
Is Kr Controller MCP free?
Yes, Kr Controller MCP is free — one-click install via Unyly at no cost.
Does Kr Controller need an API key?
No, Kr Controller runs without API keys or environment variables.
Is Kr Controller hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install Kr Controller in Claude Desktop, Claude Code or Cursor?
Open Kr Controller on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
GitHub
PRs, issues, code search, CI status
by GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
by mcpdotdirectCompare Kr Controller with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All development MCPs
