Uses Pydantic models for type-safe configuration validation and data modeling when controlling Moku devices
moku-mcp
Model Context Protocol (MCP) server for Moku device control.
Overview
This MCP server provides LLM-friendly tools for controlling Moku devices:
Device Discovery: Find Moku devices on the network
Connection Management: Attach/detach with graceful ownership handoff
Configuration Deployment: Push
MokuConfigmodels to hardwareRouting Control: Configure MCC signal routing
Metadata Queries: Get device info and slot status
Architecture
Session Model: Stateful connection management
attach(device_id)→ Connect and maintain ownershipdetach()→ Release ownership (allows iPad/CLI handoff)
Graceful Handoff: Supports common workflow where ownership moves between:
Machine A (CLI) → iPad (GUI) → Machine B (LLM) → ...
MokuConfig-Driven: Uses moku-models package for type-safe configuration.
Installation
Usage
Running the MCP Server
Integration with Claude Desktop
Add to your Claude Desktop config file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
Linux: ~/.config/Claude/claude_desktop_config.json
Using the Session Context Manager
For safe device management with automatic cleanup:
MCP Tools
1. discover_mokus()
Discover Moku devices on network via zeroconf.
Returns: List of devices with IP, name, serial number
2. attach_moku(device_id)
Connect to Moku device and assume ownership.
Args:
device_id(str): IP address, device name, or serial number
Returns: Connection status and device metadata
3. release_moku()
Disconnect and release ownership.
Returns: Disconnect status
4. push_config(config)
Deploy MokuConfig to connected device.
Args:
config(dict): MokuConfig serialized as dictionary
Returns: Deployment status
Example:
5. get_config()
Retrieve current device configuration.
Returns: MokuConfig as dict
6. set_routing(connections)
Configure MCC signal routing.
Args:
connections(list): List of MokuConnection dicts
Example:
7. get_device_info()
Query device metadata.
Returns: Dict with name, serial, IP, platform type
8. list_slots()
List configured instrument slots.
Returns: Dict of slot numbers to instrument info
Implementation Status
✅ Core Implementation Complete
All 8 MCP tools are fully implemented:
Device discovery via zeroconf
Connection management with singleton pattern
Configuration deployment (CloudCompile & Oscilloscope)
Signal routing configuration
Device metadata queries
Session context manager for safe cleanup
Development
Dependencies
1st Party:
moku-models- Pydantic models for Moku configurationmoku- Official Moku hardware API
3rd Party:
mcp- Model Context Protocol SDKpydantic- Data validationloguru- Loggingzeroconf- Device discovery via mDNS/Bonjour
Next Steps
See IMPLEMENTATION_GUIDE.md for:
MCP SDK setup
Tool implementation patterns
Testing strategies
Deployment workflows
License
MIT License - see LICENSE file for details.