mcpField
I
IvoryOS MCP

IvoryOS MCP

Local
github.com/ivoryzhScience & Education5Updated 5w ago

About IvoryOS MCP

IvoryOS MCP connects MCP clients to IvoryOS for robot control and workflow management. It exposes tools for inspecting the platform, handling workflow scripts and data, running executions, and controlling their progress.

Key features

  1. 01Inspect platform and execution status
  2. 02List, load, and submit workflow scripts
  3. 03Access workflow execution data
  4. 04Run tasks and optimizer campaigns
  5. 05Pause, resume, or stop workflows

Use cases

  1. 01Check robot platform status before a run
  2. 02Prepare and submit a workflow script
  3. 03Run a workflow with parameters or an optimizer
  4. 04Pause or stop a running workflow

MCP support

Exposes IvoryOS platform information, workflow resources, and robot-control tools to MCP clients. Tools can trigger actions on the hosted Python code.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"ivoryos": {
"command": "uvx",
"args": [
"ivoryos-mcp"
],
"env": {
"IVORYOS_URL": "<IVORYOS_URL>",
"IVORYOS_USERNAME": "<IVORYOS_USERNAME>",
"IVORYOS_PASSWORD": "<IVORYOS_PASSWORD>"
}
}
}
}
Run commanduvx ivoryos-mcp
Environment variables to set
IVORYOS_URL
IVORYOS_USERNAME
IVORYOS_PASSWORDSecret

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
pypiivoryos-mcp

Tools

14

Saved tool list · updated 2w ago

This tool takes no parameters.

Details

From the project README

IvoryOS MCP server

MCP Server License: MIT

Serve as a robot control interface using IvoryOS and Model Context Protocol (MCP) to design, manage workflows, and interact with the current hardware/software execution layer.

🧩 One-click install in Claude Desktop (desktop extension)

  1. Download ivoryos-mcp-<version>.mcpb.
  2. Double-click it (or drag it into Claude Desktop, or Settings → Extensions → Advanced settings → Install Extension…).
  3. Fill in your ivoryOS URL, username and password, then enable the extension.

Claude Desktop sets up Python and the dependencies itself; nothing else to install. The extension runs on your computer, so it only needs to reach ivoryOS on your network.

To build the .mcpb (from this repo, needs Node.js):

npx @anthropic-ai/mcpb pack . ivoryos-mcp-<version>.mcpb

Keep version in manifest.json in sync with pyproject.toml. .mcpbignore keeps .env and build files out of the bundle.

🚀 Quickstart with Claude Desktop (manual config)

Install uv. Open up the configuration file, and add IvoryOS MCP config.

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "IvoryOS MCP": {
      "command": "uvx",
      "args": [
        "ivoryos-mcp"
      ],
      "env": {
        "IVORYOS_URL": "http://127.0.0.1:8000/ivoryos",
        "IVORYOS_USERNAME": "<IVORYOS_USERNAME>",
        "IVORYOS_PASSWORD": "<IVORYOS_PASSWORD>"
      }
    }
  }
}

📦 Installation

Install uv.

1. Clone the Repository
git clone https://gitlab.com/heingroup/ivoryos-mpc
cd ivoryos-mcp
2. Install dependencies

When using IDE (e.g. PyCharm), the uv environment might be configured, you can skip this section.

python -m venv .venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate
uv pip install -r uv.lock

⚙️ Configuration

Option 1: in .env, change ivoryOS url and login credentials.

IVORYOS_URL=http://127.0.0.1:8000/ivoryos
IVORYOS_USERNAME=admin
IVORYOS_PASSWORD=admin

Option 2: In ivoryos_mcp/server.py, change ivoryOS url and login credentials.

url = "http://127.0.0.1:8000/ivoryos"
login_data = {
    "username": "admin",
    "password": "admin",
}

🚀 Install the server (in Claude Desktop)

mcp install ivoryos_mcp/server.py

✨ Features

CategoryFeatureRouteDescription
ℹ️ General Toolsplatform-infoGET /instrumentsGet ivoryOS info and signature of the platform
execution-statusGET /executions/statusCheck if system is busy and current/last task status
ℹ️ Workflow Designlist-workflow-scriptsGET /library/<deck_name>List all workflow scripts from the database
load-workflow-scriptGET /library/<workflow_name>Load a workflow script from the database
submit-workflow-scriptPOST /draft/submit_pythonSave a workflow Python script to the database
get-optmizer-schemaPOST /executions/optimizer_schemaGet all optimizers schema
ℹ️ Workflow Datalist-workflow-dataGET /executions/recordsList available workflow execution data
load-workflow-dataGET /executions/records/<workflow_id>Load execution log and data file
🤖 Direct Controlexecute-taskPOST /instruments/<component>Call platform function directly
🤖 Workflow Runrun-workflow-repeatPOST /executions/configRun workflow scripts repeatedly with static parameters
run-workflow-kwargsPOST /executions/configRun workflow scripts with dynamic parameters
run-workflow-campaignPOST /executions/campaignRun workflow campaign with an optimizer
🤖 Workflow Controlpause-and-resumeGET /executions/pause-resumePause or resume the workflow execution
abort-pending-workflowGET /executions/abort/next-iterationFinish current iteration, abort future executions
stop-current-workflowGET /executions/abort/next-taskSafe stop of current workflow

⚠️ ℹ️ are resources, but decorated as tool due to the current issue with MCP Python SDK and Claude Desktop integration.
It's recommended to only use allow always for ℹ️ tasks
and use allow once for 🤖 tasks. These tasks will trigger actual actions on your hosted Python code.

🧪 Examples

The example prompt uses the abstract SDL example.

Platform info

status.gif

Load prebuilt workflow script

load script.gif

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.