Herdr Grok Bridge
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
herdr-grok-bridge
Unofficial read-only MCP bridge from Grok Bot (or any MCP stdio client) to a running Herdr session.
This project is not affiliated with Herdr. It offers MCP tools only — not an embedded native Herdr UI, Canvas, or refresh button.
What it does
Strict allowlist of three read operations (plus a non-sensitive bridge_info):
Tool | Herdr command | Purpose |
|
| Active agents, statuses, |
|
| Status for one live pane |
|
| Bounded pane text (redacted / truncated) |
| (none) | Mode, timeouts, limits — never SSH host |
Not included (hard-denied): prompts, send-keys, focus, start/attach, pane run/close/split, generic RPC/shell, or any user-supplied executable command.
Read targets must be live pane_id values from list_agents (for example
w1:p2). Bare kinds such as claude are rejected.
Related MCP server: remote-observer-mcp
Security risks
Read access can reveal terminal secrets (tokens, passwords, private keys scrolled into a pane). Output is best-effort redacted and size-limited, but redaction is not perfect.
Prefer Tailscale / SSH Host aliases and existing
known_hostsentries.The bridge never changes focus, prompts agents, or restarts Herdr — but a compromised MCP client can still read whatever is visible in panes you expose.
Requirements
Python 3.12+
A reachable Herdr CLI (
herdr) on the Herdr host (verified conceptually against Herdr 0.8.x / local-only socket; this bridge talks to the CLI, not the Unix socket directly)For remote use: OpenSSH client,
BatchModekey auth, host key already inknown_hosts
Install
From a release artifact (no git checkout)
python3 -m venv ~/.venvs/herdr-grok-bridge
~/.venvs/herdr-grok-bridge/bin/pip install /path/to/herdr_grok_bridge-0.1.2-py3-none-any.whl
# or: pip install /path/to/herdr_grok_bridge-0.1.2.tar.gzEntry point: ~/.venvs/herdr-grok-bridge/bin/herdr-grok-bridge
From source with uv
uv sync
uv run herdr-grok-bridge --helpDeployment
A) Local (MCP server on the Herdr host)
{
"mcpServers": {
"herdr-readonly": {
"command": "/home/USER/.venvs/herdr-grok-bridge/bin/herdr-grok-bridge",
"args": [],
"env": {
"HERDR_BRIDGE_MODE": "local"
}
}
}
}B) SSH / Tailscale from Grok Bot’s Linux box (recommended remote path)
Configure OpenSSH so a Host alias already works non-interactively
(ssh herdr-box herdr agent list). Then:
{
"mcpServers": {
"herdr-readonly": {
"command": "/home/USER/.venvs/herdr-grok-bridge/bin/herdr-grok-bridge",
"args": [],
"env": {
"HERDR_BRIDGE_MODE": "ssh",
"HERDR_BRIDGE_SSH_HOST": "herdr-box"
}
}
}
}herdr-box is a generic example Host alias — use your own. Do not put
private hostnames, IPs, or credentials in this repository.
SSH argv is fixed by the bridge (not tool-callable):
BatchMode=yesStrictHostKeyChecking=yes(existingknown_hostsonly)PasswordAuthentication=no/KbdInteractiveAuthentication=nooptional
HERDR_BRIDGE_SSH_USER,HERDR_BRIDGE_SSH_PORT,HERDR_BRIDGE_SSH_IDENTITY_FILE
Remote shape: ssh … <destination> -- herdr <allowlisted args…>
Environment reference
Variable | Meaning |
|
|
| OpenSSH destination / Host alias |
| Optional user |
| Optional port |
| Optional identity file path |
| Default |
| Subprocess timeout (default |
| SSH connect timeout (default |
| Cap for |
| Client-side output cap (default |
Compatibility notes
Herdr 0.8.0 rejects
agent list|get --format jsonand already prints JSON by default. The bridge calls those commands without--format jsonfirst, then retries once with the flag only if the default path fails with a CLI/JSON error (newer CLIs that require the flag).list_agentsexpects JSON shaped like{ "id": "cli:agent:list", "result": { "type": "agent_list", "agents": [ … ] } }.Some Herdr versions reject
--lineswith--source visible/detection. This bridge omits--linesfor those sources and truncates client-side when requested.For
recent/recent-unwrapped, a capped--linesis always sent (default 80).
Error signaling (MCP isError)
Validation failures, Herdr CLI failures, timeouts, and SSH/transport errors
return a normal tools/call result with:
{ "content": [{ "type": "text", "text": "…" }], "isError": true }Clients must inspect isError / CallToolResult.is_error. Do not classify
success vs failure by scraping the text body.
Unknown tools (including any mutating name such as agent_prompt /
pane_run): not registered on this server. The official MCP Python SDK
rejects them with isError: true and message Unknown tool: … without
invoking our runner — so no Herdr/SSH command runs.
Development
uv sync --group dev
uv run pytest
uv build # wheel + sdist under dist/Unit tests are mock-backed: command construction, validation, timeouts, JSON decoding, mutation denial, and an in-memory MCP init/list/call smoke test. They do not touch a live Herdr host.
License
MIT. Wholly new code for this repository; inspired by ideas from community Herdr MCP experiments and the public Herdr docs, without reusing their source.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
Related MCP Connectors
Read-only MCP access to authorized Vocci sessions, notes, files, and memory search.
Read-only Remote MCP for externally grounded AI agent trust receipts.
Use a person's computer after they approve it there: files, Terminal, browser, local MCP.
Use a person's computer after they approve it there: files, Terminal, browser, local MCP.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceRead-only MCP server to inspect allowlisted Docker containers, systemd services, JSONL logs, and HTTP health endpoints without arbitrary shell access.MIT
- FlicenseNot gradedqualityDmaintenanceA read-only MCP server for observing registered local and SSH hosts, providing system, service, container, Git, and GPU status/log inspection through a closed-world registry without arbitrary shell access.-
- FlicenseBqualityBmaintenanceEnables MCP clients to observe and, when explicitly enabled, send constrained input to whitelisted tmux sessions, with support for local STDIO and loopback-only HTTP transport behind an authenticated tunnel.13-
- AlicenseBqualityBmaintenanceEnables MCP clients to remotely control a running Herdr session: see agent status, arrange tabs and panes, start and prompt coding agents, and run worktree-isolated jobs over stdio or Streamable HTTP. Includes policy controls such as allowlists, read-only mode, disabled tools, and an audit log.322MIT