SUMO-MCP-Server
使用说明
-
项目简介
- SUMO-MCP-Server 是一个面向 MCP 的服务端实现,旨在连接大型语言模型(LLM)与 SUMO 交通仿真环境。服务器通过 MCP 提供的工具接口(如网络管理、需求生成、仿真控制、状态查询、信号优化、工作流执行、RL 任务管理等),以及可能的资源与提示模板扩展点,帮助 LLM 客户端以标准化的方式获取上下文信息与外部功能能力。
-
主要功能点
- 网络管理工具:生成、转换、下载 OSM 数据相关的网络配置。
- 需求管理工具:生成随机交通、OD 矩阵转换、路线计算等。
- 仿真控制:连接、执行单步、断开与管理 SUMO TraCI 会话。
- 状态查询:获取当前车辆信息、速度、位置、车道和仿真统计等。
- 信号优化:对交通信号灯进行周期自适应或协调优化。
- 高级工作流:提供 sim_gen、信号优化、RL 训练等组合工作流的执行入口。
- RL 任务管理:列出内置场景、训练自定义场景等。
- 其他工具:获取 SUMO 版本与路径诊断、快速运行简单仿真、分析 FCD 输出等。
-
安装步骤
- 获取代码与依赖
- 克隆仓库:git clone <仓库URL>,进入项目目录。
- 该服务端依赖一个外部 MCP SDK(MCP Server/SDK)以及 SUMO 环境。请确保已安装 Python 3.x,并通过 pip 安装所需依赖(示例:pip install mcp sumolib sumo-rl 等,具体依赖请参考项目实际需求与 MCP SDK 要求)。
- 安装 SUMO
- 安装 SUMO 并确保 sumo 二进制在 PATH,或者设置 SUMO_HOME 环境变量。
- SUMO 的工具(如 osmGet.py、randomTrips.py、duarouter、od2trips 等)应位于 SUMO 安装的 tools 目录中。
- 环境与配置
- 确保 SUMO_HOME、PATH、以及 SUMO 工具可用。
- 如计划使用 RL 相关特性,可能需要安装 sumo-rl 等可选依赖。
- 启动服务端
- 直接运行服务器脚本(示例:在仓库根目录执行 python src/server.py;也可使用相对路径或安装后的入口点)。
- 服务器启动后将使用 MCP 的 stdio 传输(默认通过标准输入输出与客户端交换 JSON-RPC 调用)。
- 获取代码与依赖
-
服务器配置(MCP 客户端所需,服务器端配置示例仅为描述,不作为可执行代码)
- 服务器名称:SUMO-MCP-Server
- 启动命令(command):python
- 参数(args):src/server.py
- 传输方式:stdio(默认,适用于本服务器实现)
- 备注: MCP 客户端需要在自己的配置中指定服务器名称、启动命令及参数,以建立与 MCP 服务器的连接。该配置仅用于客户端使用,服务器端无需额外的客户端专用配置。
- 注释:以上信息用于 MCP 客户端的连接配置,不是服务器端的运行参数。实际部署中请确保工作目录正确、Python 环境可用、以及 MCP SDK 已正确安装。
-
基本使用方法
- 客户端应通过 MCP JSON-RPC 请求向服务器发起调用,例如调用工具以执行网络生成、仿真控制、状态查询等操作,服务器会返回标准的 JSON-RPC 响应或通知。
- 常见操作示例(以客户端调用为对象,非服务器端代码):
- 列出可用工具与工作流、注册工具、执行特定动作(如生成网格网络、运行仿真、查询仿真状态、执行信号优化等)。
- 通过 manage_network、manage_demand、control_simulation、query_simulation_state、optimize_traffic_signals、run_workflow、manage_rl_task 等工具执行对应任务。
- 注意事项
- 运行 SUMO 相关功能需要 SUMO 安装完备且 SUMO_HOME、sumo 二进制在 PATH 或通过找 binary 的逻辑可访问。
- 服务器使用/依赖 TraCI 进行仿真控制时,请确保 TraCI 连接参数正确、仿真会话可用。
- RL 训练属于长时间任务,仓库实现中提供了基于自适应超时和心跳机制的执行路径,确保训练阶段的稳定性。
-
重要特性与注意点
- MCP 服务器通过 JSON-RPC 进行通信,支持多种操作封装在服务器工具中,便于 LLM 客户端进行组合调用。
- 服务器端有对 SUMO TraCI 的输出进行抑制,防止干扰 MCP STDIO 流;并实现超时与稳健清理策略。
- 需要外部 MCP SDK 的支持来完整实现 MCP 协议栈(JSON-RPC、对象模型、注册与路由等),本实现基于 FastMCP/SKD 提供核心能力。