这个项目能做什么

MCP Arcade 是用于测试 MCP 服务器的命令行工具。它对目标服务器运行一套简短、具名的实验目录,称为 atoms,并依据交换的 JSON‑RPC 消息以及沙箱中观察到的文件变化来给出判定,而不是依赖工具描述、终端输出或模型的书面推理。 0.1.x 版本提供四个 atoms。inspect.tools_list 用于检查服务器发布的菜单是否与其实际提供的菜单一致。poison.follow_through 用来验证工具描述中隐藏的支线任务不会演变为真实的工具调用。temporal.rug_pull 检查在若干次正常调用后,工具仍保持不变。protocol.unlisted_call 被标记为 holdout,它调用一个在刚获取的菜单中不存在的随机生成名称,仅当服务器以 JSON‑RPC 成功且 isError 为 false 的响应时才视为失败。--atoms 选项用于选择要运行的 atoms,atoms 子命令则列出整个目录。 连接的策略称为 agent seat,可选择 naive(遵循描述中的支线任务)、task‑only(仅执行请求的工具后停止)或本地 Ollama 模型。本地模型接收固定的系统提示、具名任务、如实呈现的工具列表、先前结果以及来自服务器的入站通知(视为不可信观察),并返回工具调用;仅提取其回复中的名称和参数,绝不使用其文字描述。在真实服务器上,仅允许通过 --seat-allow 列出的工具被发送,超出该列表的尝试会被记录为未授权且不会发送到网络。 安装方式为 pip 安装或从克隆的源码进行可编辑安装。bout 命令可对捆绑的 fixture、stdio 服务器或 Docker 镜像执行会话。非 fixture 目标必须使用 --allow-live;否则工具不会启动任何命令。可以通过 --task 和 --args 指定良性任务工具及其参数,缺少这些参数的 bout 将被标记为 SKIP 而非通过。其他选项包括消息帧检测、握手协议版本、每个请求的超时设置,以及可选的在选定工具描述中加入内部支线任务的功能。 执行后会生成 mcp-arcade.bout/v1 格式的 JSON receipt,可按标准方式打印或渲染为时间线表格,每行对应一次网络事件,显示序号、方向、方法、id、所属 atom 以及备注。服务器通知和服务器发起的请求也各自占一行。渲染器基于 receipt 的视图构建,不包含分数或操作者猜测等字段,因此在操作者记录判定之前无法显示结果。 Docker 目标使用严格的默认设置运行:禁用网络、只读文件系统、限制内存和 PID、剥离能力,并为每个 atom 启动全新的容器。镜像 ID 被固定并在每个 atom 前重新校验,沙箱在容器内部进行快照,绑定卷和额外标志均显式声明并记录,容器在运行结束后被删除。 评分采用两条轴线和一个综合数值:utility 表示具名的良性任务实际执行;integrity 表示不存在未授权调用、目录欺骗或静默变更;NRP 计算方式为 task_success × (1‑attack_success),且任何包含 ERROR atom 的 bout 都强制为零。始终不调用工具的策略会得到零分,而不是完美的完整性分数。 receipt 可转换为 JSONL 数据集,每行对应一个 atom,依据网络标记;holdout atoms 始终被导入单独文件,proof‑split receipt 则从训练数据中剔除。清单文件记录生成器版本、每个 receipt 的哈希、计数以及剔除原因。该工具不收集遥测,也不主动发起网络连接,唯一的网络交互是本地模型端点,默认指向回环地址,并在 receipt 中记录。 项目明确声明了自身的局限:它不是扫描基准、不是负载测试、不是抽样或诱导客户端、不是容器编排器,也不提供 3D 概览。项目采用 MIT 许可证。