Skip to main content
Pre-release

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,它们需要在智能体内置工具区单独启用。其他智能体类型的工具名与文件流程不属于此配置。

  1. 模型调用build_python_file(mode="assemble"),保留返回的完整source和sha256。
  2. 用write原样写入文件,再用read回读实际文件文本。
  3. 调用build_python_file(mode="verify_written", source=回读文本, expected_sha256=assemble原始sha256)。
  4. 返回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)

Source distribution for carla-traffic-mcp 0.2.0rc2
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)

Table of built distributions (wheels) for carla-traffic-mcp 0.2.0rc2
File Interpreter ABI Platform Actions
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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page