MCP server — let any LLM agent identify an appliance and pull its grounded, safety-checked, robot-executable operation package from OPERANDI.
Project description
OPERANDI MCP Server — operate real appliances from any agent
operandi_mcp_server.py exposes OPERANDI over the Model Context Protocol so any MCP-capable
agent host (Claude Desktop, Claude Code, or your own agent runtime) can identify an appliance and
pull its grounded, safety-checked, robot-executable operation package as native tools.
This is the "build for agents" surface: the customer is a robot's planner / an LLM agent, not a human reading PDFs.
Tools
| Tool | What it does |
|---|---|
identify_appliance |
Resolve observed nameplate text / panel labels / model → a catalog object (call first). |
get_operation_package |
The robot-executable package: model-exact procedures, control map + grounding, per-step verification signals, recovery state machine, safety envelope. |
list_appliances |
Browse operable appliances (optionally by category). |
find_by_capability |
Find appliances by function (heat / wash / brew / defrost …). |
Why an agent wants this
A general model, cold, gives confidently-wrong physical instructions on ordinary appliances a large
fraction of the time (OPERANDI Stage A: 24% of cold instructions were would-fail, including
invented buttons and cycles). Grounded in the package these tools return, that fell to 0
hallucinations, 96% exact. The tools turn "guess the buttons" into "read the manufacturer's ground
truth". See ../docs/BUSINESS_MODEL.md.
Setup
No SDK to install — the server is stdlib JSON-RPC over stdio (uses requests, already present).
Point it at a running OPERANDI API and give it a key:
export OPERANDI_API_URL=https://api.operandi.example # or https://api.operandi.cc for local dev
export OPERANDI_API_KEY=ok_live_... # from the dev portal / /v1/keys
python mcp/operandi_mcp_server.py # an MCP host spawns this over stdio
Claude Desktop / Claude Code config
Add to your MCP servers config (e.g. claude_desktop_config.json):
{
"mcpServers": {
"operandi": {
"command": "python",
"args": ["/Users/archieshouse/Operandi/mcp/operandi_mcp_server.py"],
"env": {
"OPERANDI_API_URL": "https://api.operandi.cc",
"OPERANDI_API_KEY": "ok_live_your_key_here"
}
}
}
}
Then ask the agent: "Identify the Samsung ME20H705MSS and give me the safe procedure to defrost
0.5 kg of mince." — it will call identify_appliance then get_operation_package and answer from
grounded data.
Notes
- The server is a thin, API-key-authenticated REST client — the same binary works against local dev
or the hosted service by changing
OPERANDI_API_URL. - Auth is
Authorization: Bearer <key>; a missing/invalid key surfaces as a tool error, not a crash. - Transport is newline-delimited JSON-RPC 2.0 (the MCP stdio transport). Offline protocol tests:
pytest tests/test_mcp_server.py.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file operandi_mcp-1.0.0.tar.gz.
File metadata
- Download URL: operandi_mcp-1.0.0.tar.gz
- Upload date:
- Size: 6.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
827d1b872003bb3e2cd8cdbe7ad2e387e4852c4fb2b81831b5d7860c95371a49
|
|
| MD5 |
c35ef7330a40e7730e0d0182918cc963
|
|
| BLAKE2b-256 |
39782f220b48aadece05f51e9c33abfb1b2441bcf18592b844741d322af2a6c3
|
File details
Details for the file operandi_mcp-1.0.0-py3-none-any.whl.
File metadata
- Download URL: operandi_mcp-1.0.0-py3-none-any.whl
- Upload date:
- Size: 6.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8d3d7d7609939840f397bfa20b878bb1771c132579fa0bb60e57b7261c5f237c
|
|
| MD5 |
5fde169e741617049e973226b62f0da1
|
|
| BLAKE2b-256 |
cc45e696eaf5583c8fa13d67f3d06fc738ce5436fd56f477806064faa023b5b5
|