herdr-mcp-server
OfficialClick on "Deploy 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., "@herdr-mcp-serverstart an agent to fix the flaky test in agents-js"
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.
herdr-mcp-server
An MCP server that lets an assistant drive the coding agents running in herdr on your computer. A voice or chat assistant can start an agent on a task, check on any agent session (including ones you started in a terminal), send it follow-ups, answer its questions and approve its permission prompts. You can take over any session in herdr at any time.
It always works through a coding agent: it starts one in a new tab and only ever talks to it, never to a bare shell. Claude Code (claude) is the only kind so far; another kind needs a reader for its transcript.
It talks to herdr through the herdr CLI, and reads what each session said from its transcript under ~/.claude/projects. Agents started from here open as unlabelled tabs in one herdr workspace (herdr-mcp unless configured or named in the call), so herdr keeps naming them from what runs in them.
It was built for the Home Assistant voice agent, but works with any MCP client.
Tools
Tool | What it does |
| Sessions that are working, blocked or active in the last 6 hours; a query searches all of them by title, folder, workspace or state |
| A session's state and the last thing the agent said in its current turn |
| Follows a session until it finishes or needs you |
| Sends a follow-up, or answers the multiple-choice question the session asks |
| Approves once, or refuses, the permission prompt a session is blocked on |
| Starts an agent ( |
| Interrupts a working session |
An agent argument is a description, not an id: words from the title ("the agents-js issue"), a folder or workspace, a state ("the blocked one"), "the focused one", or a pane id. When more than one session fits, the tool lists them so the client can ask which one.
The tool descriptions tell the calling model to confirm before start_herdr_agent and before approving a permission, and to send follow-ups about a session's work back to that session instead of answering them itself. Every result names the session's pane id for that. The server does not enforce any of it.
Related MCP server: herdr-mcp
Results that outlive a tool call
start_herdr_agent, watch_herdr_agent, prompt_herdr_agent and answer_herdr_permission send an MCP progress notification at once, so a client that supports progress can keep the conversation going. Each tool then waits up to HERDR_MCP_WATCH_WINDOW seconds for the agent to finish or block. One still working after that is reported through a webhook. The client names its webhook in two headers on every MCP request:
X-Callback-Url: where to POST. Put any routing the client needs, such as a conversation or user, in the URL itself.X-Callback-Token: sent back asAuthorization: Bearer <token>.
When the session settles, the server POSTs this once:
{"source": "Claude Code", "text": "\"Fix the flaky test\" finished.\nLast message: …", "title": "Fix the flaky test", "state": "done", "pane_id": "w3:p2"}state is done, idle, blocked or closed. A failed callback is retried with backoff, up to 10 times. Pending callbacks are saved in ~/.local/state/herdr-mcp-server/subscriptions.json, so they survive a restart. A client that sends no headers gets "still working" and can ask again later.
Run
Needs uv, herdr, and Claude Code logged in.
uv sync
uv run python server.py # serves http://0.0.0.0:8960/mcpOn macOS, to run it at login and restart it if it dies:
scripts/install-launchagent.shThe server only talks to a herdr server that is already running; it never starts one.
The server has no authentication of its own, and a client can use it to run code on this computer. Only expose it on a network you trust, such as a home LAN reachable from outside only through Tailscale.
Variable | Default | Purpose |
|
| Where the MCP server listens |
|
| herdr workspace label for agents started from here, when the call names none |
|
| Default folder for new agents, and where folder names are looked up |
|
| Seconds a tool call waits before its result goes to the webhook instead |
|
| Seconds a session has to stay idle or blocked before it counts as settled |
|
| How long a webhook waits for its session before it is dropped |
|
| The herdr CLI |
Limits
Only settled states are reported, not the messages Claude Code writes while it works.
A question with several parts has to be answered in herdr.
Session state comes from herdr, which detects it from the pane's contents, so an unusual screen can be misread.
This server cannot be deployed
Maintenance
Related MCP Connectors
Manage Speko voice-AI agents, sessions, calls, phone numbers, knowledge bases, evals, and docs.
Create, watch, pay for and connect hosted AI agent pods on AgentsPodium. Needs an API key.
Build and supervise fleets of agents from Claude Code, Codex or Cursor. Connects over OAuth.
- ParleyOAuthdev.weldra
Coordination hub for AI coding agents: message teammates, ask humans, audit every event.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables programmatic interaction with Happy AI sessions, allowing users to list, create, monitor, send messages to, and manage AI coding sessions across multiple machines.153 npm1MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to orchestrate Herdr coding agents by wrapping its Unix-socket JSON-RPC API, providing tools for agent management, layout editing, and terminal interaction.-
- FlicenseNot gradedqualityDmaintenanceEnables managing coding agent sessions in a shared workspace, supporting session registration, handoff notes, and export summaries via Streamable HTTP.-
- FlicenseAqualityBmaintenanceEnables coding agents to control and inspect a running Herdr terminal session, including listing workspaces, tabs, panes, and agents, reading pane output, prompting agents, sending keys and commands, waiting for output or state, and splitting or closing panes.14-