SUMO-MCP-Server
使用说明(Markdown 格式)
-
项目简介
- SUMO-MCP-Server 是一个将大型语言模型客户端与 SUMO 交通仿真体系连接的后端服务器。它基于 Model Context Protocol(MCP)的理念,暴露一组工具接口,让 AI 客户端可以请求并执行网络管理、需求生成、仿真控制、状态查询、信号优化、以及高层工作流等功能,从而实现对 SUMO 仿真的端到端控制和数据分析。
-
主要功能点
- 资源与数据访问:通过网络、路网等能力生成、下载和转换 SUMO 网络数据。
- 工具注册与执行:提供管理网络、需求、仿真、状态查询、信号优化和 RL 相关任务的工具接口。
- 高层工作流:支持 sim_gen/信号优化/ RL 训练等工作流的触发与执行。
- 多种交互模式:设计为通过 MCP 的 JSON-RPC 风格请求响应,当前实现基于 STDIO 传输,便于与 LLM 客户端集成。
- 会话与容错:包含对 SUMO TraCI 连接的封装、超时控制和安全输出(避免 TraCI/stdout 干扰 MCP stdio)。
-
安装与运行步骤
- 硬件/软件前提:需要 Python 运行环境及 SUMO 安装、相关 Python 包与依赖(包括用于与 SUMO 交互的工具、超时管理、日志等)。
- 运行入口:直接运行 src/server.py(当前实现通过 main 启动 MCP stdio 传输的服务器循环)。
- 启动方式(建议以无缓冲输出的方式启动,以避免与 MCP stdio 冲突):
- 使用命令行运行时,推荐启用无缓冲输出,如 python -u src/server.py,以确保 JSON-RPC 流在 STDIO 上稳定传输。
- 客户端对接要点:
- 客户端需要按 MCP 协议发起 JSON-RPC 请求,调用上面在服务器端注册的工具接口,例如 manage_network、manage_demand、control_simulation、query_simulation_state、optimize_traffic_signals、run_workflow、manage_rl_task 等。
- 客户端连接到服务器的方式取决于你所选传输层(该实现当前以 STDIO 为主,未来可扩展到 SSE/WebSocket 等)。
-
服务器配置(给 MCP 客户端的连接信息,以下配置仅用于描述对接参数,不是实际代码) { "server_name": "SUMO-MCP-Server", "command": "python", "args": ["-u", "src/server.py"], "transport": "stdio", "notes": "MCP 客户端需通过该服务器的 JSON-RPC 接口进行请求与交互。默认通过标准输入/输出进行通信,可在需要时调整为其他传输方案(如 SSE、WebSocket)。" }
-
基本使用方法
- 启动服务器后,LLM 客户端通过 MCP 协议发送 JSON-RPC 请求,服务器会返回 JSON-RPC 响应或通知。
- 常用操作场景包括:
- 资源管理:生成、转换、下载网数据等。
- 路线与车辆调度:生成随机 trips、路线规划、OD 矩阵转换等。
- 仿真控制:连接/步进/断开 SUMO 仿真会话。
- 状态查询:获取当前网络/车辆信息、仿真状态等。
- 信号优化:使用 tlsCycleAdaptation 或 tlsCoordinator 进行信号优化。
- 高层工作流:执行 sim_gen、信号优化、RL 训练等工作流。
- 常见调试建议:若遇到输出干扰、超时等问题,请确保 TraCI 的 stdout 被抑制(服务器已实现确保 TraCI stdout 的抑制),并检查 SUMO 路径、SUMO_HOME 等环境变量是否正确配置。
建议的使用注意点
- MCP 客户端与服务器的对接应遵循抛错即返回、JSON-RPC 请求格式、以及服务器对多工具的描述性元信息(如描述、参数、返回类型等)。
- 若要扩展传输方式,请参考代码结构对 server.tool 的装饰器使用方式,以实现新的 RPC 接口注册与调用。
关键词 SUMO, TraCI, 交通仿真, JSON-RPC, 工作流
分类ID 6