Uses Pydantic models for type-safe configuration validation and data modeling when controlling Moku devices
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Moku MCP Serverdiscover available Moku devices on the network"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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
# Clone repository
git clone https://github.com/sealablab/moku-mcp.git
cd moku-mcp
# Install with uv (recommended)
uv pip install -e .
# Or with pip
pip install -e .Usage
Running the MCP Server
# Run server via stdio (MCP standard)
python -m moku_mcp
# Or with uv
uv run python -m moku_mcpIntegration 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
{
"mcpServers": {
"moku": {
"command": "uv",
"args": ["run", "python", "-m", "moku_mcp"],
"cwd": "/path/to/moku-mcp"
}
}
}Using the Session Context Manager
For safe device management with automatic cleanup:
from moku_mcp.session import MokuSession
async def deploy_config_safely(device_id: str, config: dict):
async with MokuSession(device_id) as moku:
# Device is automatically connected
result = await moku.push_config(config)
# Device is automatically released even if error occurs
return resultMCP 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:
config = {
"platform": {...},
"slots": {
1: {
"instrument": "CloudCompile",
"bitstream": "path/to/bitstream.tar"
}
},
"routing": [
{"source": "Slot1OutA", "destination": "Output1"}
]
}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:
connections = [
{"source": "Input1", "destination": "Slot1InA"},
{"source": "Slot1OutA", "destination": "Output1"}
]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
# Install dev dependencies
uv pip install -e ".[dev]"
# Run tests (when implemented)
pytest
# Format code
black src/
ruff check src/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.
This server cannot be installed
Resources
Looking for Admin?
Admins can modify the Dockerfile, update the server description, and track usage metrics. If you are the server author, to access the admin panel.