Skip to main content

Agent Hub MCP

English | 中文

Multi-agent task coordination server built on the Model Context Protocol

Agent Hub is a lightweight coordination layer for multi-agent workflows. It provides structured task dispatch, assignment tracking, inter-agent messaging, handoff documents, and human-in-the-loop approval — all accessible via the MCP protocol.

✨ Features

  • 🔌 MCP Streamable HTTP — any MCP client connects directly
  • 📋 Task → Round → Assignment state machine with operator approval gates
  • 💬 Inter-agent messaging with deduplication and inbox pull
  • 🤝 Structured handoff documents — agents pass work with context, not just messages
  • 🔒 Distributed locks with TTL-based lease expiry
  • 🛡️ Bearer token authentication — each agent authenticates independently
  • 📦 Zero-dependency database — SQLite with WAL mode, no external DB needed
  • ⚡ 5-minute setup — install, configure tokens, run

🚀 Quick Start

Install

# Install from PyPI (recommended)
pip install agent-hub-mcp

# Or install from source
git clone https://github.com/mazhengeod/agent-hub.git
cd agent-hub
pip install -e .

Configure Agent Tokens

Create ~/.config/agent-hub/agents.env:

# Format: AGENT_ID=BEARER_TOKEN
claude-code=your-secret-token-here
codex-desktop=another-secret-token

Optionally, create ~/.config/agent-hub/config.yaml for tuning:

max_rounds: 3
max_assignments_per_round: 6
max_messages_per_task: 40
lease_minutes: 90

Run

# Start the MCP server (defaults to 127.0.0.1:8765)
python -m agent_hub.server

# Or use the CLI
hubctl serve

Connect from Claude Code

Add to your project's .mcp.json:

{
  "mcpServers": {
    "agent-hub": {
      "type": "streamable-http",
      "url": "http://127.0.0.1:8765/mcp",
      "headers": {
        "Authorization": "Bearer your-secret-token-here"
      }
    }
  }
}

After the MCP client connects, call agent_register once for each token-backed agent. The token in the request decides the agent_id; name and capabilities are descriptive metadata:

{
  "name": "Claude Code",
  "capabilities": "[\"planning\", \"code-review\", \"implementation\"]"
}

You only need to re-register when you want to update the displayed name or capabilities.

🏗️ Architecture

State Machine

Task (draft)
  │
  ├─► Round 1: awaiting_operator_approval
  │     ├─► Operator approves ─► dispatched
  │     │     ├─► Assignment: pending ─► claimed ─► in_progress ─► completed
  │     │     └─► All assignments done ─► awaiting_review
  │     └─► Operator rejects ─► back to awaiting_operator_approval
  │
  └─► Review verdict: approved ─► Task completed
      Review verdict: changes_requested ─► Round 2 (re-plan)

16 MCP Tools

Tool Description
hub_status Server version and transport info
agent_register Register an agent with name and capabilities
agent_heartbeat Ping to confirm agent is alive
inbox_pull Pull unread messages for the calling agent
message_send Send a message to another agent, or omit to_agent for broadcast
message_ack Mark a message as read
task_draft_create Create a new task in draft state
round_plan_submit Submit a round plan with assignments
assignment_list List assignments for the calling agent
assignment_claim Claim a pending assignment
assignment_progress Report progress on an assignment
assignment_complete Complete an assignment with a handoff document
handoff_get Retrieve a handoff document
review_submit Submit a review verdict (approved/changes_requested)
lock_acquire Acquire a distributed lock with TTL
lock_release Release a held lock

Operator CLI

hubctl provides manual operator controls:

hubctl approve <round-id> [note]   # Approve a round for dispatch
hubctl reject  <round-id> [note]    # Reject a round (needs re-plan)
hubctl close   <task-id>            # Close a task
hubctl status  <round-id>           # Show round status
hubctl list-tasks                   # List all tasks
hubctl list-rounds [task-id]        # List rounds

🔐 Security

  • Bearer token auth — each agent has its own token in agents.env
  • Tokens are SHA-256 hashed in the database, never stored in plaintext
  • Local-only by default — server binds to 127.0.0.1:8765
  • No external dependencies — SQLite WAL mode, no Redis/Postgres needed

⚠️ Never commit agents.env or .mcp.json to version control. They contain authentication tokens. Tokens are plaintext in agents.env because the server must verify incoming Bearer tokens. The SQLite database stores only token hashes for audit metadata.

🚢 Production Deployment

systemd

A template service file is provided in systemd/agent-hub.service.template. Install with:

# Generate service file with your user and path
./scripts/install.sh

# Or manually:
sed -e "s|%USER%|$(whoami)|g" \
    -e "s|%WORKDIR%|$(pwd)|g" \
    -e "s|%VENV%|$(pwd)/.venv|g" \
    systemd/agent-hub.service.template > ~/.config/systemd/user/agent-hub.service

systemctl --user daemon-reload
systemctl --user enable --now agent-hub

Environment Variables

Variable Default Description
AGENT_HUB_HOST 127.0.0.1 Server bind address
AGENT_HUB_PORT 8765 Server bind port
AGENT_HUB_DB ~/.local/share/agent-hub/hub.db SQLite database path

📂 Project Structure

agent-hub/
├── src/agent_hub/
│   ├── __init__.py       # Package init
│   ├── server.py          # FastMCP server with 16 tools
│   ├── service.py         # State machine logic & rules
│   ├── storage.py         # SQLite storage layer
│   ├── models.py          # Pydantic data models
│   ├── auth.py            # Bearer token verification
│   └── cli.py             # hubctl operator CLI
├── migrations/
│   └── 001_init.sql       # Database schema
├── tests/                 # Test suite
├── examples/              # Example configs
├── systemd/               # Service templates
├── docs/                  # Documentation
└── pyproject.toml         # Package config

🧪 Development

# Install dev dependencies
uv pip install -e ".[dev]"

# Run tests
pytest

# Run with auto-reload (if using uvicorn)
python -m agent_hub.server

📄 License

MIT — use it, fork it, ship it.

🙏 Acknowledgments

Built with FastMCP and the Model Context Protocol specification.

Metadata

Release files for agent-hub-mcp 0.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for agent-hub-mcp 0.2.1
File Size Uploaded Provenance
agent_hub_mcp-0.2.1.tar.gz 24.3 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for agent-hub-mcp 0.2.1
File Interpreter ABI Platform
agent_hub_mcp-0.2.1-py3-none-any.whl Python 3 none any Details

Total release size: 42.9 kB

Release files / agent_hub_mcp-0.2.1.tar.gz

Download URL agent_hub_mcp-0.2.1.tar.gz
Size 24.3 kB
Tags Source
SHA-256 checksum
How to use checksums
98d5b1514c82a03762fd946c45cefe8e74d3b784a53a2480fcd8909d2ade5f50
BLAKE2b-256 checksum
How to use checksums
11385aee11bb389b361a56cf413b9a098cf958d8a4168f2e0085b730cd1a1fe5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.15

Release files / agent_hub_mcp-0.2.1-py3-none-any.whl

Download URL agent_hub_mcp-0.2.1-py3-none-any.whl
Size 18.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1590188bf51e394283f31479e282c51ec12e42220d6f19b22f213e9351ba4b91
BLAKE2b-256 checksum
How to use checksums
cb9f5878110e9a7951e2717346ba53bc424c36bc122a44617f606d959dceb7f1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.15

Security for agent-hub-mcp 0.2.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.2.1 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page