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 提供核心能力。

服务器信息