quackd MCP

quackd connects robots to Claude Code and Claude Desktop over MCP: nine tools and an executor with an allowlist

  • 289 ★ on the repository
  • Last commit
  • Apache-2.0
MCP server

Broad access

Why this level

  • The model moves a physical robot, an arm or a walking or wheeled platform, and a mistake means a fall or a strike
  • The MOSS verb `collect_litter` is marked dangerous, and the Open Duck Mini has only a physical emergency stop
All reasons and checks

rokbenko/quackd

Install

In your terminal, with SkillFoxx CLI

npx skillfoxx add mcp/quackd

Detects the agents on your machine, shows the access level and pins the version.

Other ways to install

Access and checks

How we review

Broad accessThe tool can change data, run commands or handle secrets.

  • The model moves a physical robot, an arm or a walking or wheeled platform, and a mistake means a fall or a strike
  • The MOSS verb `collect_litter` is marked dangerous, and the Open Duck Mini has only a physical emergency stop

This is third-party code. Review the repository files before installing.

What it does

quackd is a Python command-line tool that drives robots through an LLM. You register a robot by name, state a goal in a terminal or in chat, and the model picks the robot's own skills (verbs), how many steps to spend and when to ask a human. The `quackd serve-mcp` command turns one robot or a flock into an MCP server over stdio. The model you are chatting with in Claude Code or Claude Desktop becomes the pilot, and quackd selects no model of its own. The server exposes nine `robot_*` tools: list robots and their verbs, judge task feasibility, run a verb, grab a camera frame, say a phrase, load a `.duck` contract file, and read and write notes from earlier sessions. An executor sits between the model and each robot with a verb allowlist, a step budget, a heartbeat and confirmation gates. Until the model records a verdict on whether the task is feasible, any verb that moves the body is refused. Nine bodies are supported: Microduck, Open Duck Mini, the LeRobot SO-101 arm, XLeRobot, AlohaMini, ToddlerBot, Huebot, MOSS and wheeled ROS 2 bases through rosbridge. Only the LeRobot arm has run on real hardware so far, and the rest work in a simulator or on mocks. Without hardware you can attach a simulated duck: `claude mcp add quackd -- uvx --from "quackd[microduck]" quackd serve-mcp --robot microduck:sim2d`.

Who it is for. Roboticists and hobbyists who want to drive their robot or its simulator from Claude Code and Claude Desktop and keep safety rules between the model and the hardware.

Good fit when

  • You want to drive a robot from chat: the phrase "find the ball and kick it" goes to the pilot model, which picks the verbs itself
  • The agent loop is tested without hardware: the simulated duck `microduck:sim2d` runs with no equipment
  • You have an SO-101 arm: quackd takes you from calibration to the first move in ten steps, and Claude drives it in chat
  • Several robots are grouped into a flock under one server with `--flock NAME` or `--robots`
  • Hard limits are required: a `.duck` contract file sets the allowed verbs and the step limit

Not a fit when

  • You need physical accuracy for a gait or a grasp: the default simulator is a cartoon that tests the agent loop, not physics
  • Your robot is not among the nine bodies and does not work through ROS 2 and rosbridge
  • You want to choose the pilot model yourself: in MCP mode the client sets it, and the `--llm` flag belongs to `quackd run` only
  • You need an unattended mode: any movement on hardware requires a person near the power switch

Example request

Attach quackd to Claude Code in simulator mode, show the robot's verb list and find the ball in the camera frame.

MCP

Transport
stdio
Authentication
not required

Limitations

  • The `quackd` package installs no robot by itself: you pick a body with an extra (`quackd[microduck]`, `quackd[lerobot]` and so on), and Python 3.11 or newer and the `uv` manager are required.
  • Only the LeRobot arm has run on a real robot, and the other eight bodies are tested on a simulator or mocks. The project is at the Alpha stage.
  • Movement on hardware happens under supervision: confirmation gates, the budget and the heartbeat remain the last line of defense, and on the Open Duck Mini the only emergency stop is the power switch.
  • The arm over MCP needs `quackd` from a virtual environment rather than `uvx`: `uvx` can build an environment without the LeRobot backend.

How to disable. `claude mcp remove quackd` removes the server from Claude Code, and for Claude Desktop you delete the entry from `claude_desktop_config.json` and restart the app. To stop a robot mid-run press Ctrl+C or the `q` key.

FAQ

How do I connect quackd to Claude Code?

Run `claude mcp add quackd -- uvx --from "quackd[microduck]" quackd serve-mcp --robot microduck:sim2d`: the server starts a simulated duck. In Claude Desktop the same command and arguments go into `claude_desktop_config.json`, followed by an app restart.

Do I need a model API key?

No. In MCP mode quackd selects no model and reads no keys: the model of your client is the pilot. Keys are needed only for `quackd run` with a cloud model.

Can the model move the robot right away?

No. Until the model records a feasibility verdict through `robot_assess_task`, `robot_run_verb` refuses any verb that moves the body. After that the allowlist, the step budget and the confirmation gates apply.

Which robots are supported?

Nine bodies: Microduck, Open Duck Mini, the LeRobot SO-101 arm, XLeRobot, AlohaMini, ToddlerBot, Huebot, MOSS and wheeled ROS 2 bases. For the SO-101 arm the README has a ten-step walkthrough.

What is a .duck file?

A task contract. It limits the verb list and the step budget. The `robot_load_duckfile` tool checks it against the robot's manifest, attaches it to one robot and returns the file body as instructions.

Discussion

No questions or reviews yet.

CLI connects Claude Code and Cursor events to a desk robot's movements, screen expressions and end-of-task bell

CLIExtended access1.1KRepository stars

An MCP server that connects an agent to a ROS robot through rosbridge: reading sensors and control without changing the robot's code

MCP serverBroad access1.5KRepository stars

A gateway for a desktop robot on M5Stack CoreS3: voice, a wake word and an MCP server through which an agent makes it speak

MCP serverExtended access219Repository stars
Official

McNeel's MCP server for Rhino 3D: Claude, Codex and Gemini CLI model geometry in an open Rhino and build Grasshopper definitions

MCP serverExtended access397Repository stars
Needs a VPN

A Discord MCP with over 200 typed tools: the agent handles messages, roles and moderation, builds a server from a plan, and writes default to preview mode

MCP serverBroad access189Repository stars

Connects Claude Code, Cursor, Codex or OpenCode to Telegram, Slack and Discord: teammates message a bot, an agent replies

CLIBroad access322Repository stars

Comparison with similar tools

Cards that share the main search query, and how they differ.

ToolOfficialAuthenticationRepository starsMain difference
quackd (this card)nonot required289
ROS MCP Servernonot required1,515connects an agent to a ROS robot through rosbridge, with no executor, budget or confirmations and no other bodies
Robotics Agent Skillsno393ten skills on ROS and robotics for coding agents, they do not drive a robot

README in short

The README opens with the author's case for why robots need an outside brain and a shared control point, then gives an SO-101 arm quick start from the terminal and from Claude. It continues with the executor rules, a verb table per body, test status, the pilot model list, flock mode, the Robot Passport protocol for robots meeting each other, limitations and a safety section.

README badge

Report a problem

Foxx AIquackd
Foxx AI

I am Foxx AI and I have already vetted this tool. Ask about install, setup or anything else, and I will keep it simple.