ATP图书管理员MCP服务器
此服务器强制执行代理任务协议(.atp.json)契约,因此工作代理可以在不损坏依赖关系图的情况下声明、完成和分解任务。它公开了MCP工具,这些工具将确定性更新打包到磁盘上的计划文件中。
快速启动(无克隆,uvx)
添加到MCP客户端配置并更新计划路径:
[mcp_servers.atp]
command = "uvx"
args = ["--from", "git+https://github.com/Edgeworthless/atp-mcp-server", "atp-server"]
env = { "ATP_FILE" = "/path/to/your/.atp.json", "ATP_LEASE_SECONDS" = "600" }uvx 即时下载/构建。工具仍然需要 plan_path 每次通话; ATP_FILE 这只是一个默认值。
本地安装
pip install -e .- 运行:
python3 main.py - 配置您的MCP客户端以调用该命令,并传递
plan_path每次工具调用。
Docker(可选)
构建或拉取,然后挂载您的计划文件:
docker build -t atp-librarian .
docker run --rm -v /path/to/.atp.json:/data/.atp.json -e ATP_FILE=/data/.atp.json atp-librarian环境旋钮
ATP_FILE:ATP计划文件的路径(默认.atp.json).ATP_LOCK_FILE:覆盖锁文件路径(默认为.lock).ATP_LEASE_SECONDS:释放声明任务之前的持续时间(默认600秒)。- 工具接受
plan_path直接;env-var主要在客户端省略参数时支持状态资源。
可用工具
atp_claim_task(plan_path, agent_id):分配最高优先级的READY节点,恢复僵尸,并返回依赖关系上下文。为同一代理人重新输入现有索赔。atp_complete_task(plan_path, node_id, report, artifacts=[], status="DONE"):标记任务“完成”或“失败”,清除租约,并解锁其依赖关系得到满足的子项。atp_decompose_task(plan_path, parent_id, subtasks):将任务转换为具有新子图的SCOPE。子任务必须形成DAG;启动节点继承父节点的原始依赖关系。所有新任务完成后,父级将自动关闭。atp_apply_future_patch(plan_path, expected_graph_version, patch, reason, actor_id):对ATP v1.4自适应判断流应用有界未来图突变。除非声明的节点计数为零,图版本匹配,终端/声明的节点保持不变,候选图保持有效,否则Apply将被拒绝。atp_read_graph(plan_path, view_mode="full" | "local", node_id=None):返回完整的JSON图或周围的邻域视图node_id.
资源
atp://status/summary:明文仪表板,显示默认计划的项目状态、实时索赔和就绪任务(ATP_FILE或.atp.json在当前工作目录中)。
图形合约
- 将计划保持为有效的任务DAG:每个节点都有
title,instruction,dependencies,status(LOCKED|READY|CLAIMED|COMPLETED|FAILED),加上可选context,reasoning_effort(minimal|low|medium|high|xhigh),artifacts,report,时间戳。 - 节点状态:
LOCKED(等待),READY,CLAIMED,COMPLETED,FAILED。服务器将在租赁窗口后自动释放CLAIMED任务,并自动完成由生成的SCOPE节点atp_decompose_task一旦所有scope_children完成。 atp_read_graph(..., view_mode="full")包括运行时meta.graph_version自适应判断流中乐观并发的响应有效载荷。- ATP v1.4未来图突变是加性的。关闭/被取代的未来节点通过可选元数据进行跟踪,不可索赔或计为就绪工作。
- 每次读/写时都会检查依赖完整性;缺少节点引用将引发错误,而不是默默地修改文件。
测试
python3 -m compileall main.py
MCP客户端配置示例
JSON配置示例(兼容Codex):
{
"mcpServers": {
"atp-librarian": {
"command": "python3",
"args": ["/path/to/atp-mcp-server/main.py"],
"cwd": "/path/to/atp-mcp-server",
"env": {
"ATP_FILE": "/path/to/your/project/.atp.json",
"ATP_LEASE_SECONDS": "600"
}
}
}
}工具调用仍应提供 plan_path (例如。, /path/to/your/project/.atp.json); ATP_FILE 只需为状态资源设置默认值,或者当客户端省略参数时。
