Metadata-Version: 2.4
Name: automodel-tau3-airline-mcp
Version: 0.1.0
Summary: MCP server exposing the 14 official tau3-bench airline agent tools
License-Expression: MIT
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: mcp<2,>=1.29
Requires-Dist: pydantic<3,>=2.11

# τ³-bench airline MCP

该包把固定版本 τ³-bench 的 14 个 airline Agent 工具暴露为标准 MCP；用户侧模拟器工具、评分条件、reset 和 snapshot 不会出现在 Agent 工具列表中。

## 本地验证

```bash
uvx --from ./tools/tau3_airline_mcp tau3-airline-mcp --list-tools
uvx --from ./tools/tau3_airline_mcp tau3-airline-mcp
```

第一条命令应输出 14 个工具及函数签名。第二条启动 stdio MCP，供 MCP Inspector 或本地客户端连接。

## 打包

```bash
uv build tools/tau3_airline_mcp --out-dir dist/tau3_airline_mcp
```

产物为 `automodel_tau3_airline_mcp-0.1.0-py3-none-any.whl`。包内包含固定提交所需的 airline DB、policy、tasks、split 和最小 airline 运行代码，部署时不需要再从 GitHub 拉取完整 τ³-bench 框架。

## 在百炼脚本部署

百炼云端不能读取本机路径。官方文档给出的 Python 标准分发路径是公共 PyPI；也可先把 wheel 上传到可公开下载的 OSS 地址，或把本项目对应目录推送到公开 Git 仓库，然后：

1. 打开百炼 **MCP 管理 → 创建 MCP 服务 → 使用脚本部署**。
2. 安装方式选择 `uvx`，部署地域选择北京；低频评测选择基础模式。模板已经指定阿里云 PyPI 镜像，只用于安装 MCP SDK 与 Pydantic。
3. 使用以下任一配置模板：
   - `bailian-mcp-config.pypi.template.json`：发布到公共 PyPI 后使用，兼容性最明确；
   - `bailian-mcp-config.wheel.template.json`：替换公开 OSS 地址，版本和内容容易冻结；
   - `bailian-mcp-config.git.template.json`：直接从公开 Git 提交安装。
4. 提交部署，在“工具”页确认恰好出现 14 个工具，并测试 `list_all_airports`。
5. 在 airline Agent 中只挂载这个 MCP，粘贴 `agent_system_prompt_zh.md`，并在其后附上 `datasets/v1/resources/tau3/airline_policy.md` 完整原文。
6. 将相同 Agent 配置复制为 AUTO、经济、均衡、性能四个版本，只修改模型模式。

百炼官方支持使用 `uvx` 托管 Python stdio MCP，也支持连接远程 `streamableHttp` MCP。控制台入口和配置格式见[自定义 MCP 服务](https://help.aliyun.com/zh/model-studio/custom-mcp)。

## 正式批量评测的状态隔离

脚本部署版适合确认安装、14 个工具 schema 和单任务调用。它在一个 MCP 进程内维护 airline 数据库，百炼是否为每个 Agent 会话重建该进程并没有稳定契约，因此不能据此假设不同任务天然隔离。

正式运行 `tau3_airline.jsonl` 时使用 `tools/tau3_openapi_adapter/`：

- Agent 只看到 `/tools/*` 对应的 14 个工具；
- 评测调度器在每个 `case_id` 前调用隐藏的 `/admin/reset`；
- 任务结束后调用隐藏的 `/admin/snapshot`，交给官方 evaluator 判分；
- 通过 AI 网关将 14 个业务接口导入为一个 MCP 服务，admin 接口不导入；
- 禁止并发复用同一状态实例。需要并发时按 `run_id` 分片实例，或为服务增加按运行 ID 隔离的状态存储。

这条远程路径多一个部署步骤，但才能保证端到端任务成功率可复现。
