This release is a pre-release and may not be stable for production use.
CARLA交通场景MCP服务
本项目面向学生实验:学生在百炼智能体中用自然语言描述交通场景,大模型编写场景逻辑,MCP提供版本参考、地图位置检索、静态检查和单文件组装,学生下载Python文件并在本机CARLA运行、观察和反馈。
场景逻辑由模型动态编写,样例不限制学生的问法或轨迹生成方式。MCP不执行模型生成的场景代码,静态检查通过不等于真实场景已运行或满足要求。
环境与内置资料
- MCP服务端:Python 3.10及以上,不需要安装或启动CARLA。
- 学生实采基线:Windows 64位、Python 3.8.10、CARLA客户端/服务端0.9.12。输出保持Python 3.7语法兼容初筛,这不是Python 3.7实机验收结论。
- 依赖限定为CARLA客户端及工具返回的Python标准库清单,不默认接受numpy、networkx或agents。
- 随包包含11张完整采集地图的检索目录、184个实采蓝图及属性、固定0.9.12提交的API参考。
- 地图包括Town01、Town02、Town04、Town05、Town10HD的普通版与_Opt,以及Town03_Opt。普通Town03在采集环境加载异常,未纳入可生成目标地图。
目录包含2,868条候选记录,其中18条环岛通行记录。它们来自实际采集和明确的几何推导,不是2,868个独立路口,也不保证任意自然语言要求都有匹配。
三个工具
| 工具 | 功能 |
|---|---|
get_carla_context |
返回版本、依赖、代码契约,以及按topic选择的API和资源参考 |
find_scene_location |
依据道路条件检索随包目录,返回定位、路线提示和证据;不自动放宽要求 |
build_python_file |
静态检查与单文件组装,或校验回传文本与指定SHA-256是否一致 |
参考查询:
{"topics":["maps","actors","control"]}
需要蓝图时可加入resource:vehicle.*、resource:vehicle.tesla.model3或resource:static.prop.*barrier*。每个模式最多返回20项,截断后应缩小范围。需要类方法参数时,可加入api:carla.Map或api:carla.Vehicle等,每次最多返回20类。
地图检索
默认读取包内目录,无需教师或学生上传地图索引,也无需设置CARLA_MAP_CATALOG。需要测试其他同格式目录时可以设置该变量覆盖。
支持的条件:
junction_type:any、road、T、cross、roundabout、multi_way。turn:any、left、right、straight。signal_required:布尔值。min_exit_lanes、max_exit_lanes:出口车道数量范围。min_exit_length_m:目录中连续出口段的最小长度。lane_change:any、left、right、either。map、junction_id:按明确地图或路口查询;学生一般不需要填写。exclude_junction_ids、exclude_location_ids:换址时排除已用位置。limit:返回1至10条候选,默认3条。
例如:
{"requirements":{"junction_type":"T","turn":"right","min_exit_lanes":2,"lane_change":"left"}}
matched返回候选及证据;no_match_in_index返回未满足条件和备选建议,备选不能当作已经匹配;unsupported_condition表示条件没有结构化查询依据;invalid_request表示参数或要求冲突;catalog_error表示目录读取异常。无匹配不等于所有官方地图都不存在该场景。
同一物理路口的普通版与_Opt会去重。route_hint是稀疏定位/路径提示,模型仍需在本机查询waypoint、核验车道并编写连续路线及控制逻辑。
生成程序契约
模型提交以下函数及必要辅助代码:
def setup_scene(ctx):
pass
def step_scene(ctx, elapsed_seconds, frame_index):
return False
公共骨架负责连接、地图加载、同步主循环、观察更新和清理。创建对象用ctx.spawn_actor,其他方式创建后立即ctx.register_actor;状态保存到ctx.state。恢复操作通过ctx.restore_after_run登记。
使用ctx.follow_actor(actor, distance=8, height=5, pitch=-20)设置主窗口跟随,或用ctx.observe(location, height=30, yaw=0, pitch=-75)设置俯视。每帧函数必须有界、非阻塞,不自行tick、切图或建立主循环。
生成脚本支持--help、--check、--host、--port、--duration和--timeout。--check只读核对连接、版本和地图可用性,不创建场景;--timeout限制单次CARLA通信等待,不会强行中断模型回调内的无限循环。
从源码启动
uv run carla-traffic-mcp
默认stdio协议,启动后等待MCP客户端请求。安装已发布包时显式固定课程版本,例如联调候选:
uvx --from carla-traffic-mcp==0.2.0rc2 carla-traffic-mcp
部署前确认所选版本已经在PyPI发布;正式课程版本和云端部署结果以本次发布记录及课程参数单为准。
百炼FlowAgent Agent 2.0文件交付
本课程使用FlowAgent Agent 2.0的write、read、download_file,它们需要在智能体内置工具区单独启用。其他智能体类型的工具名与文件流程不属于此配置。
- 模型调用
build_python_file(mode="assemble"),保留返回的完整source和sha256。 - 用
write原样写入文件,再用read回读实际文件文本。 - 调用
build_python_file(mode="verify_written", source=回读文本, expected_sha256=assemble原始sha256)。 - 返回
verified后,用download_file导出真实文件链接。
摘要模式不依赖跨函数计算实例的本地文件状态。它只证明收到的文本与调用方给定摘要一致,不证明摘要来自可信原始产物、沙箱文件确实被读取或最终下载字节一致;平台联调必须另核对真实下载。
保留artifact_id的旧校验方式依赖同一文件系统,在百炼跨实例调用中不宜作为默认链路。/tmp不是跨实例持久存储。
本地HTTP模式
MCP_TRANSPORT=streamable-http HOST=127.0.0.1 PORT=8000 uv run carla-traffic-mcp
MCP端点为http://127.0.0.1:8000/mcp。可在真实服务地址后拼接工具返回的download_path下载;该路由与百炼原生文件工具链路不同,stdio部署不会直接暴露HTTP下载端点。
验证范围与兼容
检查器可以拦截可确定的错误API、枚举、命名参数、蓝图ID和不可修改属性,但不推断所有动态类型,不完整验证物理效果或路线行为。完整课堂验收还应覆盖真实模型、百炼文件工具和Windows CARLA。
本地开发与测试方法见LOCAL_TESTING.md。0.1.x模板入口保留为carla-traffic-mcp-legacy;新版默认入口只暴露上述三个工具。
许可证
MIT。随包保留CARLA上游API资料的许可说明。
Metadata
Release files for carla-traffic-mcp 0.2.0rc2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| carla_traffic_mcp-0.2.0rc2.tar.gz | 844.6 kB | Without provenance | Details for carla_traffic_mcp-0.2.0rc2.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| carla_traffic_mcp-0.2.0rc2-py3-none-any.whl | Python 3 | none | any | Details for carla_traffic_mcp-0.2.0rc2-py3-none-any.whl |
Total release size: 1.7 MB
Release files / carla_traffic_mcp-0.2.0rc2.tar.gz
| Download URL | carla_traffic_mcp-0.2.0rc2.tar.gz |
|---|---|
| Size | 844.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
53144b0b5eecf96ff0118b1fa595509682584a657e441aaed86943b641781da5
|
|
BLAKE2b-256 checksum How to use checksums |
75b4eeb13b5c460c52e26a096a2ff1894e47093e62805128892f5b239f963a37
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.15 {"installer":{"name":"uv","version":"0.12.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / carla_traffic_mcp-0.2.0rc2-py3-none-any.whl
| Download URL | carla_traffic_mcp-0.2.0rc2-py3-none-any.whl |
|---|---|
| Size | 851.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
fc476a95b68d3da5461b73ecc3fa0c7a533431dc45bf5067553e22083ea020c1
|
|
BLAKE2b-256 checksum How to use checksums |
5124e347cbbcd1e05f7d15d6cf40ec35844bccf7aa013abb410bf961473b0961
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.15 {"installer":{"name":"uv","version":"0.12.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Security for carla-traffic-mcp 0.2.0rc2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.