Multi-model AI team coordination via MCP — the missing coordination layer for multi-agent, multi-provider AI systems
Project description
Team Table
Multi-model AI team coordination via MCP (Model Context Protocol).
An MCP server that lets multiple AI instances discover each other, coordinate tasks, and communicate through a shared SQLite database.
Quick Start
pip install -e ".[dev]"
Register as MCP server in Claude Code
claude mcp add --transport stdio --scope user team-table -- \
path/to/.venv/Scripts/python.exe -m team_table.server
Network Mode (LAN)
Run the server over the network so other machines can connect:
# Start the server in SSE mode (or use streamable-http)
TEAM_TABLE_TRANSPORT=sse python -m team_table.server
From another PC on the LAN, register the remote server:
claude mcp add --transport sse team-table http://<host-ip>:8741/sse
Environment Variables
| Variable | Default | Description |
|---|---|---|
TEAM_TABLE_DB |
~/.team-table/team_table.db |
Path to the SQLite database |
TEAM_TABLE_TRANSPORT |
stdio |
Transport mode: stdio, sse, or streamable-http |
TEAM_TABLE_HOST |
0.0.0.0 |
Bind address for network transports |
TEAM_TABLE_PORT |
8741 |
Listen port for network transports |
Architecture
Each Claude Code instance spawns its own STDIO MCP server process. All processes share one SQLite database (~/.team-table/team_table.db) using WAL mode for concurrent access. Alternatively, a single server can be run in network mode (SSE or streamable-http) to serve multiple clients over the LAN.
Tools (13)
- Registration:
register,deregister,list_members,heartbeat - Messaging:
send_message,get_messages,broadcast - Task Board:
create_task,list_tasks,claim_task,update_task - Shared Context:
share_context,get_shared_context
Poll Daemon (Auto-Messaging)
By default, agents must manually check for messages. The poll daemon automates this — it monitors an agent's inbox and auto-responds, only escalating to the user when needed.
How It Works
- Polls the database every 30 seconds for unread messages
- Sends an acknowledgement reply to each incoming message
- Escalates to the user (stops auto-replying) when:
- The total auto-reply count exceeds the limit (default: 13)
- A message contains a question or decision request (e.g. "should we…?", "please approve", "what do you think")
- Notifies the sender with an
[AUTO]message explaining the escalation
Usage
# Start polling for an agent (default: 30s interval, 13 message max)
python scripts/poll_daemon.py claude-opus
# Custom interval and message limit
python scripts/poll_daemon.py claude-opus --interval 15 --max-messages 13
# With a custom database path
TEAM_TABLE_DB=/path/to/db python scripts/poll_daemon.py claude-opus
Safety
- Hard message cap prevents runaway agent-to-agent loops
- Question detection forces human review on decisions
- Pull-based — no exposed network endpoints
- Graceful shutdown via Ctrl-C or SIGTERM
- All activity is logged to the terminal with timestamps
Development
pytest # run tests
ruff check . # lint
License
GPL-3.0-or-later
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file team_table-0.1.0.tar.gz.
File metadata
- Download URL: team_table-0.1.0.tar.gz
- Upload date:
- Size: 39.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a8728912899d4f663785200b9a12087c8fef8edd11e97a9250f962503915df84
|
|
| MD5 |
47c05f41599249d2e488f60c556343c8
|
|
| BLAKE2b-256 |
3fcd73368b8a25260498c4b99cf1e5b70fe2ff5ba24ade097bdf1408baeb1c95
|
File details
Details for the file team_table-0.1.0-py3-none-any.whl.
File metadata
- Download URL: team_table-0.1.0-py3-none-any.whl
- Upload date:
- Size: 31.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fa476bdda33fff902eaa38c4d6011e9d3fb3485b4fe2220d9fad20dc8446dd12
|
|
| MD5 |
d2d8e8a02436ae7126d7fcb82282cea4
|
|
| BLAKE2b-256 |
fa788a030c21efaf61a9a567f411b59fa713c205f2588d8c3efdc96cfda591c3
|