l2p mcp
封装外部确定性部分的独立MCP服务器 l2p 用于人在环规划工作流的软件包。
此仓库假设MCP客户端已经具有模型访问权限。模型只需要决定更改是属于域还是任务,然后使用工具docstring格式化更新。之后,服务器接管:它解析更新,将其合并到当前的计划状态中,在需要时推断需求,并生成更新的PDDL工件。
文件
server/
server.py
定义MCP工具,配置HTTP传输默认值,并启动服务器
server_helpers.py
包含MCP工具使用的解析、合并和规范化逻辑
Dockerfile
构建Docker镜像,以便将MCP服务器作为本地服务运行
docker-compose.yml
定义在上公开MCP服务器的本地Docker Compose服务 localhost:8002
.dockerignore
通过排除缓存和本地开发文件来保持Docker构建上下文较小
tests/
test_offline.py
用于解析、合并、生成和错误处理的直接单元测试
test_mcp_offline.py
端到端MCP测试,对服务器进行临时测试 stdio 使用活动Python解释器的客户端
刀具表面
服务器公开了两个高级MCP工具:
update_domainupdate_task
什么 update_domain 是否
update_domain 根据模型编写的文本创建或更新域状态。它支持:
### TYPES### CONSTANTS### New Predicates### FUNCTIONS- 使用以下方式进行零、一或多个操作更新:
- ### Action Parameters - ### Action Preconditions - ### Action Effects - 可选的 ## NEXT ACTION 分隔符
该工具可以:
- 在没有之前的情况下从空域开始
domain被提供 - 在以下情况下合并到现有域
domain被提供 - 推断
:requirements - 在以下情况下生成最终域PDDL
domain_name被提供
对于多动作更新,动作名称可以来自:
- 每个操作块前放置的文本
action_name以列表形式传递
什么 update_task 是否
update_task 根据模型编写的文本创建或更新任务/问题状态。它支持:
### OBJECTS### INITIAL### GOAL
每个部分可以包含零个、一个或多个条目。该工具可以:
- 在没有先前任务的情况下从空任务开始
task被提供 - 在以下情况下合并到现有任务中
task被提供 - 替换以下字段
goal和replace_fields - 在以下情况下生成最终问题PDDL
domain_name和problem_name提供
任务生成要求合并的任务包含:
objectsinitialgoal
预期工作流程
- 用户要求更改计划
- 客户端模型选择
update_domain或update_task - 模型使用所选工具docstring中记录的格式写入更新
- MCP服务器解析更新,将其合并到当前的结构化状态中,并在有足够的信息时返回更新的PDDL
这使服务器保持无状态,同时仍支持增量编辑。客户端只能更新目标、一个动作、几个动作、几个谓词或任何其他部分片段,而无需重新启动整个公式化过程。
测试
使用以下命令从根目录运行直接和MCP集成测试:
python3 -m unittest -v tests.test_offline tests.test_mcp_offline当前的测试套件包括:
- 域创建和更新
- 任务创建和更新
- 多动作解析与合并
- 空动作部分
- 类型层次结构解析
- 基于文件的更新输入
- MCP工具调用
- 域和任务错误路径
码头工人
此仓库支持通过流式HTTP将MCP服务器作为长期本地Docker服务运行。Docker文件位于 server/ 目录。
容器配置为:
- 使用
streamable-http - 倾听
0.0.0.0:8002集装箱内 - 暴露MCP端点
/mcp - 自动重新启动
unless-stopped
使用以下命令从repo根目录运行Docker化服务器:
docker compose -f server/docker-compose.yml up -d --build这将在后台启动容器。运行后,MCP端点可在以下位置使用:
http://localhost:8002/mcp有用的命令:
docker compose -f server/docker-compose.yml logs -fdocker compose -f server/docker-compose.yml psdocker compose -f server/docker-compose.yml restartdocker compose -f server/docker-compose.yml down
为了使容器在重新启动后返回,请确保Docker Desktop配置为在登录时自动启动。
需求
- 口译员在哪里
l2p已安装 mcppython3在当前环境下
跑
python3 server/server.py默认情况下,这将启动服务器 streamable-http 日期:
http://127.0.0.1:8002/mcp要覆盖主机端口或路径,请执行以下操作:
MCP_TRANSPORT=streamable-http MCP_HOST=127.0.0.1 MCP_PORT=8002 python3 server/server.py强迫老年人 stdio 对于想要直接生成进程的客户端的传输:
MCP_TRANSPORT=stdio python3 server/server.pyMCP客户端配置示例
{
"mcpServers": {
"l2p": {
"command": "python3",
"args": ["/absolute/path/to/server/server.py"],
"env": {
"MCP_TRANSPORT": "stdio"
}
}
}
}如果您的MCP客户端支持HTTP传输,请将其指向 http://localhost:8002/mcp 当Docker容器正在运行时,或者 http://127.0.0.1:8002/mcp 当您直接运行服务器时。
