herdr-mcp
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., "@herdr-mcplist all running agents"
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
MCP server that lets AI assistants orchestrate coding agents running in
Herdr by wrapping its Unix-socket JSON-RPC API
(~/.config/herdr/herdr.sock, newline-delimited JSON, verified against
Herdr 0.7.1 / socket protocol 14).
Requirements
A running Herdr server (the socket must exist; check with
herdr agent list)Node.js ≥ 20
macOS or Linux (the transport is a Unix domain socket)
Related MCP server: HT MCP Server
Build
git clone <this-repo> && cd herdr-mcp
npm ci
npm run build # emits dist/The server binary is then node /abs/path/to/herdr-mcp/dist/index.js. All
examples below use that form; substitute your absolute path. To run from
source instead (no build step), use npx tsx /abs/path/to/herdr-mcp/src/index.ts.
Set the HERDR_SOCKET environment variable if your socket is not at
~/.config/herdr/herdr.sock.
Installation
Claude Code
claude mcp add --scope user herdr -- node /abs/path/to/herdr-mcp/dist/index.js(--scope user makes it available in every project; omit for project-local.)
Verify with /mcp inside a session.
Claude Desktop
Add to claude_desktop_config.json (macOS:
~/Library/Application Support/Claude/claude_desktop_config.json), then
restart the app:
{
"mcpServers": {
"herdr": {
"command": "node",
"args": ["/abs/path/to/herdr-mcp/dist/index.js"]
}
}
}Cursor
Settings → MCP → Add server, or ~/.cursor/mcp.json (global) /
.cursor/mcp.json (per-project):
{
"mcpServers": {
"herdr": {
"command": "node",
"args": ["/abs/path/to/herdr-mcp/dist/index.js"]
}
}
}VS Code (Copilot agent mode)
.vscode/mcp.json in a workspace, or run MCP: Add Server from the
command palette:
{
"servers": {
"herdr": {
"type": "stdio",
"command": "node",
"args": ["/abs/path/to/herdr-mcp/dist/index.js"]
}
}
}Windsurf
~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"herdr": {
"command": "node",
"args": ["/abs/path/to/herdr-mcp/dist/index.js"]
}
}
}Codex CLI
~/.codex/config.toml:
[mcp_servers.herdr]
command = "node"
args = ["/abs/path/to/herdr-mcp/dist/index.js"]To pass a non-default socket path in any client, add an env block, e.g.
"env": { "HERDR_SOCKET": "/run/user/1000/herdr.sock" }.
Tools
Tool | Kind | What it does |
| read | Agents with live status and the |
| read | Full tree: workspaces → tabs → panes with split geometry; every pane marked |
| read | Any pane's screen ( |
| read | Blocks until an agent reaches a status (event-driven, per-pane |
| read | Blocks until a pane's output matches a substring/regex ( |
| acts | Types into an agent's terminal; explicit |
| acts | Named keys ( |
| acts | Launches an agent ( |
| acts | split / move / swap / resize / zoom / close_pane; refuses to close agent panes; returns resulting layout |
| acts | create / rename / focus / close for tabs and workspaces; refuses to close containers holding agents |
| acts | Herdr's git-worktree integration (list / create / open / remove) |
| acts | Desktop notification via |
| acts | Raw escape hatch to any socket method (full API parity; |
Herdr quirks the client absorbs (0.7.1): the server closes the connection
after every reply, so requests are serialized through a queue with one
transparent retry; pane.split / pane.resize act on the focused pane
(edit_layout focuses the target tab and restores focus after); event
subscriptions are per-pane.
Development
npm run dev # run the server on stdio
npm run inspect # MCP Inspector against the live server
npm run check # biome lint + tsc + vitestLayout: src/protocol.ts (wire types, zod schemas, guards) →
src/connection.ts (one NDJSON connection: framing, id correlation, pushes) →
src/herdr-client.ts (HerdrApi interface + reconnecting client; one
dedicated connection per event subscription) → src/tools.ts (MCP tools
against HerdrApi) → src/index.ts (stdio wiring).
Notes for extenders: Herdr 0.7.1 closes the connection after each reply — the
client transparently retries once on a fresh connection (never for
server-answered errors). Tool output is deliberately shaped
(src/views.ts); don't dump raw socket JSON into Claude's context. Tools
depend on the HerdrApi interface, so new tools are testable against the
in-memory fake in test/tools.test.ts.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Shared control plane for AI coding agents — tasks, memory, decisions, file locks. 12 tools.
The team layer for AI coding agents: shared contracts, collision alerts, E2EE sessions.
Develop, manage, and debug Railway projects, services, and deployments from within agents.
Operate Linux, macOS and Windows from your LLM. Every action runs through an auditable allowlist.
Related MCP Servers
- AlicenseAqualityAmaintenanceEnables AI assistants to control running Neovim sessions via RPC socket, supporting command execution, state inspection, and LSP actions. Automatically discovers Neovim instances and supports multi-instance management on Linux and macOS.1861MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to programmatically control interactive terminal applications through HT sessions, supporting session management, key sending, snapshots, and command execution.1MIT
- FlicenseNot gradedqualityBmaintenanceWraps the herdr CLI to provide curated tools and session necromancy, allowing revival of previous Claude Code agent sessions from herdr spaces.5-
- FlicenseAqualityCmaintenanceMCP server that exposes the Herdr terminal API as callable tools, enabling AI agents to manage terminal workspaces, tabs, panes, and agents. It dynamically generates tools from the Herdr API schema and communicates via Unix socket.20-