团队表
通过MCP(模型上下文协议)进行多模型AI团队协调。
一个MCP服务器,允许多个AI实例通过共享SQLite数据库相互发现、协调任务和通信。
快速开始
pip install team-table发展:
pip install -e ".[dev]"在Claude Code中注册为MCP服务器
窗户:
claude mcp add --transport stdio --scope user team-table -- \
path/to/.venv/Scripts/python.exe -m team_table.servermacOS/Linux:
claude mcp add --transport stdio --scope user team-table -- \
path/to/.venv/bin/python -m team_table.server在Codex中注册为MCP服务器
窗户:
codex mcp add --transport stdio --scope user team-table -- \
path/to/.venv/Scripts/python.exe -m team_table.servermacOS/Linux:
codex mcp add --transport stdio --scope user team-table -- \
path/to/.venv/bin/python -m team_table.server网络模式(LAN)
通过网络运行服务器,以便其他机器可以连接:
# Start the server in SSE mode (or use streamable-http)
TEAM_TABLE_TRANSPORT=sse python -m team_table.server从LAN上的另一台PC注册远程服务器:
claude mcp add --transport sse team-table http://:8741/sse从局域网上另一台PC上的Codex注册相同的远程服务器:
codex mcp add --transport sse team-table http://:8741/sse环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
TEAM_TABLE_DB | ~/.team-table/team_table.db | SQLite数据库的路径 |
TEAM_TABLE_TRANSPORT | stdio | 运输方式: stdio, sse,或 streamable-http |
TEAM_TABLE_HOST | 0.0.0.0 | 为网络传输绑定地址 |
TEAM_TABLE_PORT | 8741 | 网络传输侦听端口 |
TEAM_TABLE_REQUIRE_TOKENS | true | 工具调用和SSE需要身份验证令牌 |
建筑
每个Claude Code实例都会生成自己的STDIO MCP服务器进程。所有进程共享一个SQLite数据库(~/.team-table/team_table.db)使用WAL模式进行并发访问。或者,可以在网络模式(SSE或流式http)下运行单个服务器,通过局域网为多个客户端提供服务。
工具(18)
- 注册:
register,deregister,list_members,heartbeat - 消息传递:
send_message,get_messages,broadcast,delete_message,archive_message,clear_inbox,purge_messages - 任务板:
create_task,list_tasks,claim_task,update_task - 共享上下文:
share_context,get_shared_context - 审计:
get_audit_log
身份验证令牌
register 返回每个代理的令牌。所有工具调用(和SSE事件流)都需要 令牌除非 TEAM_TABLE_REQUIRE_TOKENS=false.
消息管理
邮件可以存档(软删除+标记已读)、删除(软删除)或清除(硬删除,仅限管理员/主管)。 clear_inbox 支持使用可选的日期和发件人过滤器进行批量存档。默认情况下,已存档的邮件将被排除在收件箱查询和未读计数之外。
SSE推送通知
在网络模式下,代理可以在以下位置订阅实时事件 GET /events/{agent_name}服务器推送新消息、广播和任务分配的通知。30秒的心跳使连接保持活跃。轮询守护进程仍然可用作STDIO传输的回退。
审核日志
所有状态更改操作(注册、消息传递、任务更新、上下文共享)都记录在仅可追加的审计日志中。查询方式 get_audit_log 使用可选的代理、操作和日期过滤器。
安全
- 对所有工具参数(代理名称、消息、任务字段)进行输入验证
- 速率限制:每个发件人每60秒窗口30条消息
- 基于角色的访问控制:
admin,lead,coder,reviewer,designer,tester,agent - 仅限于管理员/主管角色的特权操作(清除、删除他人消息)
轮询守护进程(自动消息)
默认情况下,代理必须手动检查消息。轮询守护进程自动化了这一过程——它监控代理的收件箱并自动响应,只在需要时才上报给用户。
运作原理
- 每30秒对数据库进行一次未读邮件轮询
- 向每条传入消息发送确认回复
- 升级到用户 (停止自动回复):
- 自动回复总数超过限制(默认值:13) - 一条消息包含一个问题或决策请求(例如“我们应该……吗?”、“请批准”、“你怎么看”)
- 向发件人发送通知
[AUTO]解释升级的消息
用法
# 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安全
- 硬消息帽 防止代理间循环失控
- 问题检测 强制对决策进行人工审查
- 于拉 --没有暴露的网络端点
- 平滑关闭 通过Ctrl-C或SIGTERM
- 所有活动都会记录到终端上,并带有时间戳
发展
pytest # run tests
ruff check . # lint推荐工作流程(PyCharm+OAuth)
对于日常开发,使用JetBrains优先流:
- 在PyCharm中运行和调试代码/测试。
- 使用基于浏览器的OAuth从PyCharm登录以访问提供者。
- 保持
team-table已启用身份验证令牌强制(TEAM_TABLE_REQUIRE_TOKENS=true). - 将每个代理视为具有自己的令牌和角色的独特身份。
表格流程的令牌指南:
- 注册每个代理一次,捕获其返回的令牌,并将其存储在IDE运行配置或环境变量中。
- 当代理重新调整用途或工作站更改所有权时,旋转/撤销令牌。
- 切勿在多个代理之间共享一个令牌;令牌是代理范围的。
未来多代理扩展:
- 逐步添加具有明确角色和功能的代理(编码、审查、QA、设计、运维)。
- 保留一个共享数据库(
TEAM_TABLE_DB)用于协调和审计历史。 - 使用网络模式(
sse或streamable-http)当代理在多台机器上运行时。
许可证
GPL-3.0或更高版本
