SUMO-MCP Server

SUMO-MCP Server

Connects LLMs to Eclipse SUMO traffic simulation, enabling AI agents to automate traffic network generation, demand modeling, signal optimization, simulation execution, and real-time TraCI control through natural language.

Category
访问服务器

README

SUMO-MCP: 智能交通仿真与控制的 MCP 平台

<div align="center"> <img src="doc/sumo-mcp.jpg" alt="SUMO-MCP Logo" width="200" /> <br /> <br /> <p align="center"> <img src="https://img.shields.io/badge/Status-Active-success" alt="Status" /> <img src="https://img.shields.io/badge/Python-3.10+-blue" alt="Python" /> <img src="https://img.shields.io/badge/License-MIT-green" alt="License" /> </p> </div>

SUMO-MCP 是一个连接大语言模型 (LLM) 与 Eclipse SUMO 交通仿真的中间件。通过 Model Context Protocol (MCP),它允许 AI 智能体(如 Claude, Cursor, TRAE等)直接调用 SUMO 的核心功能,实现从OpenStreetMap 数据获取路网生成需求建模仿真运行信号优化的全流程自动化。

系统支持离线仿真(基于文件的工作流)和在线交互(实时 TraCI 控制)两种模式,满足从宏观规划到微观控制的多样化需求。

API 参考见 doc/API.md(唯一真相源以 src/server.py 的工具注册为准)。

🚀 核心功能特性

1. 全面的工具链集成

聚合符合直觉的核心 MCP 接口,简化 SUMO 复杂操作:

SUMO-MCP 工具列表

  • 路网管理 (manage_network): 支持路网生成 (generate)、OSM 地图下载 (download_osm) 与格式转换 (convert)。
  • 需求管理 (manage_demand): 提供随机行程生成 (generate_random)、OD 矩阵转换 (convert_od) 和路径计算 (compute_routes)。
  • 信号优化 (optimize_traffic_signals): 集成周期自适应 (cycle_adaptation) 和绿波协调 (coordination) 算法;其中 cycle_adaptation 输出为 SUMO <additional> 信号方案文件(由工作流自动挂载到 <additional-files>)。
  • 仿真与分析: 支持标准配置文件仿真 (run_simple_simulation) 与 FCD 轨迹数据分析 (run_analysis)。

部分聚合工具支持在 params 中传入 options: list[str],用于将额外参数按 token 透传到底层 SUMO 二进制/脚本(详见 doc/API.md 的“通用约定”)。

2. 在线实时交互 (Online Interaction)

支持通过 TraCI 协议与运行中的仿真实例进行实时交互,赋予 LLM 微观控制与感知能力:

  • 仿真控制 (control_simulation): 提供启动连接 (connect)、单步推演 (step) 和安全断开 (disconnect)。
  • 状态查询 (query_simulation_state): 实时获取车辆列表 (vehicle_list)、车辆细节变量 (vehicle_variable) 及全局仿真统计。

3. 自动化智能工作流

内置端到端的自动化工作流 (run_workflow),简化复杂科研与工程任务:

  • Sim Gen & Eval (sim_gen_eval): 一键执行 "生成路网 -> 生成需求 -> 路径计算 -> 仿真运行 -> 结果分析" 的完整闭环。
  • Signal Optimization (signal_opt): 自动执行 "基线仿真 -> 信号优化 -> 优化仿真 -> 效果对比" 的全流程,并自动处理优化工具输出的 <additional> 文件挂载。
  • RL Training (rl_train): 针对内置场景的强化学习训练;自定义路网训练使用 manage_rl_task/train_custom(底层基于开源项目 sumo-rl;要求路网包含信号灯,且运行建议显式设置 SUMO_HOME)。

💡 提示: 关于各工具的详细参数说明与调用示例,请参考 API 详细文档


🛠️ 环境要求

  • 操作系统: Windows / Linux / macOS
  • Python: 3.10+ (强制要求,以支持最新的类型系统与 MCP SDK)
  • SUMO: Eclipse SUMO(需配置 SUMO_HOME 环境变量,并确保其二进制目录在 PATH 中)

Python 依赖

运行时依赖(安装后即可使用所有 MCP 工具):

  • mcp[cli]>=1.0.0 - 官方 Model Context Protocol SDK
  • sumolib>=1.20.0 - SUMO Python 库(路网操作、二进制调用)
  • traci>=1.20.0 - Traffic Control Interface(在线实时控制)
  • sumo-rl>=1.4.3 - SUMO 强化学习环境(RL 训练功能)
  • pandas>=2.0.0 - 数据分析(FCD 轨迹处理)
  • requests>=2.31.0 - HTTP 请求(OSM 数据下载)

开发依赖(可选,用于测试和代码质量检查):

  • mypy>=1.8.0 - 静态类型检查
  • flake8>=7.0.0 - 代码风格检查
  • pytest>=8.0.0 - 单元测试框架
  • psutil>=5.9.0 - 系统资源监控(性能测试)
  • types-* - 类型存根包(mypy 支持)

使用 .\install_deps.ps1 -NoDev 可以跳过开发依赖的安装。


📦 安装指南

1. 获取代码

您可以通过以下方式获取项目:

方式 A:通过 Git 克隆 (推荐)

git clone https://github.com/XRDS76354/SUMO-MCP-Server.git
cd sumo-mcp

方式 B:下载压缩包

  1. 访问 GitHub 项目主页
  2. 点击 Code 按钮,选择 Download ZIP
  3. 解压并进入项目目录。

方式 C:作为依赖安装 (WIP) 如果您想在其他项目中使用,可以尝试:

pip install git+https://github.com/XRDS76354/SUMO-MCP-Server.git

2. 安装与配置 SUMO

本系统依赖于 Eclipse SUMO 仿真引擎。

重要提示 (Important Notes)

  • 仅使用 SUMO 二进制工具sumo / netconvert / netgenerate / duarouter / od2trips 等):保证命令在 PATH 中即可。
  • 使用 SUMO tools 脚本randomTrips.py / osmGet.py / tls*.py 等):需要能定位到 <SUMO_HOME>/tools,推荐设置 SUMO_HOME 指向 SUMO 安装目录,并把 $SUMO_HOME/bin 加入 PATH

各平台安装步骤

  • Windows:
    1. 安装 SUMO:使用官方安装包(文档:https://sumo.dlr.de/)。
    2. 设置环境变量(示例):
      • CMD:setx SUMO_HOME "C:\Program Files\Eclipse\sumo"setx PATH "%SUMO_HOME%\bin;%PATH%"
      • PowerShell:$env:SUMO_HOME="C:\Program Files\Eclipse\sumo"; $env:PATH="$env:SUMO_HOME\bin;$env:PATH"
    3. 验证:sumo --version
  • Linux (Ubuntu/Debian):
    1. 安装:sudo apt-get install sumo sumo-tools
    2. 可选(使用 tools 脚本时推荐):export SUMO_HOME=/usr/share/sumo 并把 $SUMO_HOME/bin 加入 PATH
    3. 验证:sumo --version
  • macOS (Homebrew):
    1. 安装:brew install sumo
    2. Homebrew 通常会自动把 sumo 加到 PATH;如需 tools 脚本,可设置 SUMO_HOME 指向 .../share/sumo(例如 /usr/local/share/sumo/opt/homebrew/share/sumo
    3. 验证:sumo --version

更多说明: 更多关于 SUMO 安装与配置的详细信息,请参考 SUMO 官方文档

3. Python 环境配置

Windows 一键安装

在 Windows 上可以直接使用仓库自带脚本创建 .venv 并安装依赖(默认包含开发依赖 .[dev])。

方式 A:PowerShell(推荐)

.\install_deps.ps1

# 可选参数:
.\install_deps.ps1 -NoDev                                               # 仅安装运行依赖
.\install_deps.ps1 -IndexUrl https://pypi.tuna.tsinghua.edu.cn/simple  # 使用国内镜像

方式 B:CMD(命令提示符)

install_deps.bat

REM 可选参数:
install_deps.bat -NoDev
install_deps.bat -IndexUrl https://pypi.tuna.tsinghua.edu.cn/simple

脚本会自动:

  • 检测并验证 Python 3.10+ 版本
  • 创建虚拟环境 .venv(如不存在)
  • 升级 pip/setuptools/wheel
  • 安装项目依赖(editable mode)

您可以选择以下任一方式手动配置开发环境。

方式1:使用 uv (推荐 - 极速)

uv 是目前最快的 Python 包管理工具,支持一键同步依赖。

# 1. 安装 uv (如果尚未安装)
pip install uv

# 2. 同步项目环境 (自动创建虚拟环境并安装依赖)
uv sync

# 3. 激活环境
# Windows:
.venv\Scripts\activate
# Linux/macOS:
source .venv/bin/activate

方式2:使用 Conda + Pip

如果您习惯使用 Conda 管理环境,可以按照以下步骤操作:

# 1. 创建并激活 Conda 环境
conda create -n sumo-mcp python=3.10 -y
conda activate sumo-mcp

# 2. 安装项目依赖
# 推荐国内用户使用镜像源加速,一键安装项目及开发工具
pip install -e ".[dev]" -i https://pypi.tuna.tsinghua.edu.cn/simple

# 或者仅安装基础依赖
pip install -r requirements.txt

🚦 启动与配置

1. 本地直接启动 (用于测试)

服务器基于官方 mcp.server.fastmcp.FastMCP 实现,通过标准输入输出 (stdio) 传输 JSON-RPC 2.0 消息。

使用 Python 直接启动 MCP 服务器:

python src/server.py

或者使用仓库自带的启动脚本(会自动处理环境检测与 PATH 挂载):

  • Linux/macOS: ./start_server.sh
  • Windows (PowerShell): .\start_server.ps1
  • Windows (CMD): start_server.bat

2. MCP 服务配置 (关键 - 用于 AI 宿主)

配置 MCP 服务器到宿主应用(如 Claude Desktop, Trae, Cursor)时,必须使用绝对路径

A. 查找必要路径

在终端中激活您的环境后,运行以下命令:

  • Python 绝对路径:
    • Windows (PS): (Get-Command python).Source
    • Linux/macOS: which python
  • SUMO_HOME 路径:
    • Windows: echo %SUMO_HOME%
    • Linux/macOS: echo $SUMO_HOME

B. 宿主应用配置示例

将以下 JSON 添加到宿主应用的配置文件中(例如 Claude Desktop 的 claude_desktop_config.json):

{
  "mcpServers": {
    "sumo-mcp": {
      "command": "/path/to/your/env/python", 
      "args": ["/path/to/sumo-mcp/src/server.py"],
      "env": {
        "SUMO_HOME": "/your/actual/sumo/path",
        "PYTHONPATH": "/path/to/sumo-mcp/src"
      }
    }
  }
}

⚠️ 重要提示:

  1. command: 必须替换为您找到的 Python 解释器绝对路径
  2. args: 必须替换为项目 src/server.py绝对路径
  3. env: 显式设置 SUMO_HOMEPYTHONPATH 可以有效避免 ModuleNotFoundError 或环境识别错误。

工具清单与参数约定请以 src/server.pydoc/API.md 为准。

更多配置示例见 mcp_config_examples.json


💡 使用示例 (Prompt)

在配置了 MCP 的 AI 助手中,您可以尝试以下自然语言指令:

  • 工作流任务:

    "生成一个 3x3 的网格路网,模拟 1000 秒的交通流,并告诉我平均车速。" (AI 将调用 manage_networkrun_workflow)

  • 在线交互任务:

    "启动这个配置文件的仿真,每运行一步就告诉我 ID 为 'v_0' 的车辆速度,如果速度低于 5m/s 就提醒我。" (AI 将调用 control_simulationquery_simulation_state)

  • 强化学习任务:

    "列出所有内置的强化学习场景,然后选择一个简单的路口场景训练 5 个回合。" (AI 将调用 manage_rl_taskrun_workflow)

  • 复杂综合场景示例 (推荐测试):

    "使用工具中的sumo-mcp完成下面操作:生成一个4x4的网格路网,要求所有节点均为交叉路口,设置网格间距为100米(默认值)确保所有交叉口都配置交通信号灯,设置车辆总数为200辆,运行进行1000秒的交通仿真,启用车辆轨迹记录功能,提取所有车辆的速度数据计算整个仿真期间所有车辆的平均速度,结果精确到小数点后两位。"

    AI 内部执行逻辑:

    1. 调用 manage_network(action="generate", output_file="grid.net.xml", params={"grid": true, "grid_number": 4})
    2. 调用 manage_demand(action="random_trips", net_file="grid.net.xml", output_file="trips.xml", params={"end_time": 1000, "period": 5.0}) (计算: 1000s / 200辆 = 每5秒一辆)
    3. 调用 run_workflow(workflow_name="sim_gen_eval", params={"output_dir": "results", "grid_number": 4, "steps": 1000}) 或手动组合 control_simulation
    4. 调用 run_analysis(fcd_file="results/fcd.xml") 获取平均速度统计。

🧰 Troubleshooting

  • 提示找不到 sumo(例如:Error: Could not locate SUMO executable (sumo).):
    1. 先在终端执行 sumo --version,确认 SUMO 二进制可用。
    2. 若不可用:把 SUMO 的 bin/ 加入 PATH,或设置 SUMO_HOME 并把 $SUMO_HOME/bin 加入 PATH
  • 提示找不到 tools 脚本(例如:randomTrips.py / osmGet.py / tls*.py):
    1. 确认 SUMO_HOME 指向 SUMO 安装目录。
    2. 确认 <SUMO_HOME>/tools 目录存在且包含对应脚本。
  • MCP 客户端无法继承环境变量
    1. 在 MCP 客户端配置中显式传入 env(参考 mcp_config_examples.json)。

📂 项目结构

sumo-mcp/
├── doc/
│   ├── API.md             # MCP 工具 API 参考(与 src/server.py 对齐)
│   └── sumo-mcp.jpg       # 项目图片
├── src/
│   ├── server.py           # MCP 服务器入口 (FastMCP 实现,聚合接口)
│   ├── utils/              # 通用工具
│   │   ├── connection.py   # TraCI 连接管理器
│   │   └── ...
│   ├── mcp_tools/          # 核心工具模块
│   │   ├── network.py      # 网络工具
│   │   ├── route.py        # 路径工具
│   │   ├── signal.py       # 信号工具
│   │   ├── vehicle.py      # 车辆工具
│   │   ├── rl.py           # 强化学习工具
│   │   └── analysis.py     # 分析工具
│   └── workflows/          # 自动化工作流
│       ├── sim_gen.py      # 仿真生成工作流
│       ├── signal_opt.py   # 信号优化工作流
│       └── rl_train.py     # RL 训练工作流
├── pyproject.toml          # 项目配置与依赖管理
├── requirements.lock       # 锁定依赖版本
└── README.md               # 项目文档

📄 许可证

MIT License

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选