MCP server that exposes a self-hosted multi-agent dashboard API (memory, kanban, inter-agent messaging, daily log, bot status) as typed MCP tools.
agent-dashboard-mcp
An MCP server that exposes a self-hosted
multi-agent dashboard's HTTP API as first-class tools. Instead of teaching every
agent to curl an endpoint and juggle a bearer token, you connect them to this MCP
server once and they get typed tools for memory, kanban, inter-agent messaging,
daily logs, and bot status.
Built for a multi-agent assistant setup where several agents (a lead, a reviewer, a worker, ...) share a common SQLite-backed dashboard and need to read and write that shared state reliably.
Why an MCP server instead of curl
When agents call a REST API by shelling out to curl, they make avoidable mistakes:
wrong header, forgotten token, malformed JSON, no schema. Wrapping the same API as MCP
tools gives each call a name, typed arguments, and a docstring the model can read — so
the agent picks the right tool with the right fields instead of reconstructing a
request from memory.
Tools
Memory
memory_search(query, agent, tier, limit, mode)— hybrid semantic + keyword searchmemory_save(content, agent, tier, keywords)— save to a hot/warm/cold/shared tier
Kanban
kanban_list(status, priority, assignee, limit)kanban_create(title, description, status, priority, assignee)kanban_update(card_id, ...)/kanban_move(card_id, status, sort_order)kanban_archive(card_id)kanban_comment(card_id, author, content)/kanban_comments_list(card_id)
Inter-agent messaging
message_send(to, content, from_agent)messages_list(agent, status, limit)message_mark_done(message_id, result)
Daily log & agents
daily_log_append(content, agent)agents_list()
Bot ops (local)
bot_tmux_status(session_name)— is a tmux session alivebot_log_tail(log_path, lines)— tail a bot's log file
Configure
Copy .env.example to .env and set:
DASHBOARD_API_URL=http://localhost:3420 # your dashboard API base URL
DASHBOARD_TOKEN=... # bearer token, or:
DASHBOARD_TOKEN_PATH=.dashboard-token # path to a file with the token
The token is read once at startup (env first, then file fallback) and sent as
Authorization: Bearer <token> on every request.
Run
With uv:
uv run server.py
Or register it with an MCP client (e.g. Claude Code / Claude Desktop) in your MCP config:
{
"mcpServers": {
"agent-dashboard": {
"command": "uv",
"args": ["--directory", "/path/to/agent-dashboard-mcp", "run", "server.py"],
"env": {
"DASHBOARD_API_URL": "http://localhost:3420",
"DASHBOARD_TOKEN_PATH": "/path/to/.dashboard-token"
}
}
}
}
Expected API shape
The server targets a REST API with these routes (adapt the wrapper if yours differs):
| Tool group | Method + path |
|------------|---------------|
| memory | GET/POST /api/memories |
| kanban | GET/POST /api/kanban, PUT /api/kanban/:id, POST /api/kanban/:id/move\|archive\|comments |
| messages | GET/POST /api/messages, PUT /api/messages/:id |
| daily log | POST /api/daily-log |
| agents | GET /api/agents |
bot_tmux_status and bot_log_tail run locally (tmux / filesystem), not over HTTP.
License
MIT — see LICENSE.