Skip to main content
Model Context Protocol (MCP) 是一个开放标准,允许 AI 助手与外部工具和数据源进行交互。Avala 的 MCP Server 将您的数据集、项目和导出公开为工具,任何 MCP 兼容的客户端都可以调用,让您无需切换上下文即可通过自然语言管理标注工作流。 这意味着您可以让 Claude「列出我所有的数据集」,在 Cursor 中创建导出,或使用 VS Code 查看项目状态——所有这些都由您已在使用的 Avala API 提供支持。

前提条件

  • 您的机器上已安装 Node.js 18 或更高版本
  • 一个 Avala API 密钥(在 Mission ControlSettings > Security 中生成)

设置

Claude Desktop

打开您的 Claude Desktop 配置文件:
  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
添加 Avala MCP Server:
切勿将包含真实 API 密钥的配置文件提交到版本控制系统。请将 AVALA_API_KEY 设置为系统环境变量,或在本地将 "your-api-key" 替换为您的实际密钥,并确保配置文件已添加到 .gitignore 中。
重启 Claude Desktop。您应该能在工具选择器中看到 Avala 的工具。

Cursor

在项目根目录(或全局配置目录)中创建或编辑 .cursor/mcp.json
.cursor/mcp.json 位于项目根目录中,可能会被提交到 git。请将其添加到 .gitignore,或将 AVALA_API_KEY 设置为系统环境变量,而不是直接写在配置文件中。
重启 Cursor 或重新加载窗口。Avala 工具将出现在 Cursor 的代理模式中。

VS Code

在您的工作区中创建或编辑 .vscode/mcp.json
.vscode/mcp.json 位于您的工作区中,可能会被提交到 git。请将其添加到 .gitignore,或将 AVALA_API_KEY 设置为系统环境变量,而不是直接写在配置文件中。
确保您已安装启用了 MCP 支持的 GitHub Copilot 扩展。重启 VS Code 以加载新的服务器。

Claude Code

使用一条命令将 Avala MCP Server 添加到 Claude Code:
将 API 密钥设置为环境变量:
重启 Claude Code。Avala 工具将在您的会话中可用。

ChatGPT

ChatGPT 的 MCP 支持仍在发展中。有关最新的设置说明以及在您所在的套餐和地区的可用性,请参阅 OpenAI 文档

MCP 安全模式

为了安全起见,MCP Server 默认为只读模式。变更类工具不会被注册,除非您明确启用它们:
此环境变量可以在启动服务器之前在 MCP Server 的进程环境中设置。 默认情况下,以下写入/删除操作会被阻止:
  • create_dataset
  • create_agentdelete_agent
  • create_annotation_issueupdate_annotation_issuedelete_annotation_issue
  • create_storage_configtest_storage_configdelete_storage_config
  • create_webhookdelete_webhook
  • create_export
  • evaluate_quality
  • compute_consensus
  • fleet_register_devicefleet_acknowledge_alert

可用的 MCP 工具

连接后,AI 助手可以使用以下工具:

Fleet(预览版)

Fleet 工具处于预览阶段,可能会发生变化。它们提供对车队设备、录制、事件、警报和规则的读写访问。

工具定义

每个 MCP 工具的详细架构。所有工具以文本内容形式返回 JSON。

list_datasets

列出工作区中的所有数据集。 参数:
  • dataType (string, optional) — 按数据类型筛选(imagevideolidarmcapsplat
  • name (string, optional) — 按数据集名称筛选(部分匹配)
  • status (string, optional) — 按数据集状态筛选
  • visibility (string, optional) — 按可见性筛选(privatepublic
  • limit (number, optional) — 返回的最大数据集数量
  • cursor (string, optional) — 来自上一次请求的分页游标
示例响应:

get_dataset

获取特定数据集的详细信息。 参数:
  • uid (string, required) — 数据集的唯一标识符(UUID)
示例响应:
错误响应(无效 UID):

list_projects

列出所有标注项目。 参数:
  • limit (number, optional) — 返回的最大项目数量
  • cursor (string, optional) — 来自上一次请求的分页游标

get_project

获取特定项目的详细信息。 参数:
  • uid (string, required) — 项目的唯一标识符(UUID)

create_dataset

创建新的标注数据集。 参数:
  • name (string, required) — 数据集的显示名称
  • slug (string, required) — 数据集的 URL 友好标识符
  • dataType (string, required) — 数据类型:imagevideolidarmcap
  • visibility (string, optional) — 数据集可见性:privatepublic(默认值:private
  • createMetadata (boolean, optional) — 是否创建数据集元数据(默认值:true)
  • providerConfig (object, optional) — 云存储提供商配置
  • ownerName (string, optional) — 数据集所有者的用户名或邮箱

create_export

为数据集或项目触发新的导出。 参数:
  • project (string, optional) — 要导出的项目 UID
  • dataset (string, optional) — 要导出的数据集 UID
示例响应:

get_export_status

检查导出的状态。 参数:
  • uid (string, required) — 导出的唯一标识符(UUID)
示例响应:

list_exports

列出工作区中的所有导出。 参数:
  • limit (number, optional) — 返回的最大导出数量
  • cursor (string, optional) — 来自上一次请求的分页游标

get_workspace_stats

快速查看工作区内容(数据集、项目、导出)。 参数: 示例响应:

list_tasks

列出任务,支持按项目或状态进行可选筛选。 参数:
  • project (string, optional) — 按项目 UID 筛选
  • status (string, optional) — 按任务状态筛选
  • limit (number, optional) — 返回的最大任务数量
  • cursor (string, optional) — 来自上一次请求的分页游标
示例响应:

get_task

获取特定任务的详细信息。 参数:
  • uid (string, required) — 任务的唯一标识符(UUID)

list_agents

列出工作区中配置的所有自动化代理。 参数:
  • limit (number, optional) — 返回的最大代理数量
  • cursor (string, optional) — 来自上一次请求的分页游标

get_agent

获取特定自动化代理的详细信息。 参数:
  • uid (string, required) — 代理的唯一标识符(UUID)

create_agent

创建一个带有事件订阅和回调 URL 的新自动化代理。 参数:
  • name (string, required) — 代理名称
  • events (string[], required) — 代理订阅的事件类型列表
  • callbackUrl (string, optional) — 接收事件回调的 URL
  • description (string, optional) — 代理描述
  • project (string, optional) — 代理作用范围的项目 UID
  • taskTypes (string[], optional) — 代理处理的任务类型

delete_agent

按 UID 删除自动化代理。 参数:
  • uid (string, required) — 要删除的代理的唯一标识符(UUID)

list_webhooks

列出工作区中的所有 Webhook 订阅。 参数:
  • limit (number, optional) — 返回的最大 Webhook 数量
  • cursor (string, optional) — 来自上一次请求的分页游标

create_webhook

为特定事件创建新的 Webhook 订阅。 参数:
  • targetUrl (string, required) — 接收 Webhook 投递的 URL
  • events (string[], required) — 要订阅的事件类型列表

delete_webhook

按 UID 删除 Webhook 订阅。 参数:
  • uid (string, required) — 要删除的 Webhook 的唯一标识符(UUID)

list_storage_configs

列出工作区中的所有存储配置。 参数:
  • limit (number, optional) — 返回的最大存储配置数量
  • cursor (string, optional) — 来自上一次请求的分页游标

create_storage_config

创建新的存储配置(S3 或 Google Cloud Storage)。 参数:
  • name (string, required) — 存储配置的名称
  • provider (string, required) — 存储提供商类型(s3gcs
  • s3BucketName (string, optional) — S3 存储桶名称
  • s3BucketRegion (string, optional) — S3 存储桶区域
  • s3BucketPrefix (string, optional) — S3 键前缀
  • s3AccessKeyId (string, optional) — S3 访问密钥 ID(在服务器端安全存储)
  • s3SecretAccessKey (string, optional) — S3 秘密访问密钥(在服务器端安全存储)
  • s3IsAccelerated (boolean, optional) — 启用 S3 Transfer Acceleration
  • gcStorageBucketName (string, optional) — Google Cloud Storage 存储桶名称
  • gcStoragePrefix (string, optional) — Google Cloud Storage 前缀
  • gcStorageAuthJsonContent (string, optional) — GCS 服务账户 JSON 凭据(在服务器端安全存储)

test_storage_config

测试存储配置的连接。 参数:
  • uid (string, required) — 要测试的存储配置的唯一标识符(UUID)

delete_storage_config

按 UID 删除存储配置。 参数:
  • uid (string, required) — 要删除的存储配置的唯一标识符(UUID)

list_quality_targets

列出特定项目配置的质量目标。 参数:
  • projectUid (string, required) — 项目的唯一标识符(UUID)
  • limit (number, optional) — 返回的最大质量目标数量
  • cursor (string, optional) — 来自上一次请求的分页游标

evaluate_quality

评估项目的所有质量目标并返回其当前状态。 参数:
  • projectUid (string, required) — 要评估的项目的唯一标识符(UUID)

get_consensus_summary

获取项目的共识摘要,包括平均值/中位数分数和分布。 参数:
  • projectUid (string, required) — 项目的唯一标识符(UUID)

compute_consensus

触发项目的共识计算。 参数:
  • projectUid (string, required) — 项目的唯一标识符(UUID)

list_organizations

列出您所属的所有组织。 参数:
  • limit (number, optional) — 返回的最大组织数量
  • cursor (string, optional) — 来自上一次请求的分页游标

get_organization

获取特定组织的详细信息。 参数:
  • slug (string, required) — 组织的 slug 标识符

list_slices

列出所有者(用户或组织)的切片。 参数:
  • owner (string, required) — 所有者名称(用户或组织的 slug)
  • limit (number, optional) — 返回的最大切片数量
  • cursor (string, optional) — 来自上一次请求的分页游标

get_slice

获取特定切片的详细信息。 参数:
  • owner (string, required) — 所有者名称(用户或组织的 slug)
  • slug (string, required) — 切片的 slug

list_annotation_issues_by_sequence

列出特定序列的所有标注问题。 参数:
  • sequenceUid (string, required) — 序列的 UUID
  • datasetItemUid (string, optional) — 按数据集项 UUID 筛选
  • projectUid (string, optional) — 按项目 UUID 筛选

create_annotation_issue

在序列上创建新的标注问题。 参数:
  • sequenceUid (string, required) — 序列的 UUID
  • toolUid (string, required) — 标注工具的 UUID
  • problemUid (string, required) — 问题类型的 UUID
  • datasetItemUid (string, optional) — 数据集项的 UUID
  • projectUid (string, optional) — 项目的 UUID
  • priority (string, optional) — 优先级:lowestlowmediumhighhighest
  • severity (string, optional) — 严重程度:criticalmoderate
  • description (string, optional) — 问题描述
  • wrongClass (string, optional) — 错误的类别标签
  • correctClass (string, optional) — 正确的类别标签
  • objectUid (string, optional) — 标注对象的 UUID
  • shouldReAnnotate (boolean, optional) — 是否需要重新标注
  • shouldDelete (boolean, optional) — 是否删除标注
  • framesAffected (string, optional) — 受影响的帧

update_annotation_issue

更新现有的标注问题(状态、优先级等)。 参数:
  • sequenceUid (string, required) — 序列的 UUID
  • issueUid (string, required) — 标注问题的 UUID
  • status (string, optional) — 状态:openrelabelingin_reviewcompletedcant_reproduceawaiting_feedbackno_action_taken
  • priority (string, optional) — 优先级:lowestlowmediumhighhighest
  • severity (string, optional) — 严重程度:criticalmoderate
  • description (string, optional) — 更新后的描述
  • toolUid (string, optional) — 标注工具的 UUID
  • problemUid (string, optional) — 问题类型的 UUID
  • wrongClass (string, optional) — 错误的类别标签
  • framesAffected (string, optional) — 受影响的帧

delete_annotation_issue

删除标注问题。 参数:
  • sequenceUid (string, required) — 序列的 UUID
  • issueUid (string, required) — 要删除的标注问题的 UUID

list_annotation_issues_by_dataset

列出数据集的所有标注问题。 参数:
  • owner (string, required) — 数据集所有者的用户名
  • datasetSlug (string, required) — 数据集的 slug
  • sequenceUid (string, optional) — 按序列 UUID 筛选

get_annotation_issue_metrics

获取数据集中标注问题的聚合指标(状态/优先级/严重程度计数、关闭时间)。 参数:
  • owner (string, required) — 数据集所有者的用户名
  • datasetSlug (string, required) — 数据集的 slug
  • sequenceUid (string, optional) — 按序列 UUID 筛选

list_qc_tools

列出指定数据集类型可用的 QC 标注工具。 参数:
  • datasetType (string, required) — 数据集类型(例如 lidarimagevideo

fleet_list_devices

列出车队设备,支持可选筛选。 参数:
  • status (string, optional) — 按设备状态筛选(onlineofflinemaintenance
  • type (string, optional) — 按设备类型筛选
  • limit (number, optional) — 返回的最大设备数量
  • cursor (string, optional) — 分页游标
示例响应:

fleet_get_device

获取特定车队设备的详细信息。 参数:
  • uid (string, required) — 设备的唯一标识符

fleet_list_recordings

列出车队录制,支持可选筛选。 参数:
  • device (string, optional) — 按设备 UID 筛选
  • status (string, optional) — 按录制状态筛选
  • limit (number, optional) — 返回的最大录制数量
  • cursor (string, optional) — 分页游标

fleet_get_recording

获取特定录制的详细信息。 参数:
  • uid (string, required) — 录制的唯一标识符

fleet_list_events

列出车队事件,支持可选筛选。 参数:
  • recording (string, optional) — 按录制 UID 筛选
  • device (string, optional) — 按设备 UID 筛选
  • type (string, optional) — 按事件类型筛选
  • severity (string, optional) — 按严重程度筛选
  • limit (number, optional) — 返回的最大事件数量
  • cursor (string, optional) — 分页游标

fleet_list_alerts

列出车队警报,支持可选筛选。 参数:
  • status (string, optional) — 按警报状态筛选(openacknowledgedresolved
  • severity (string, optional) — 按严重程度筛选(infowarningerrorcritical
  • device (string, optional) — 按设备 UID 筛选
  • rule (string, optional) — 按规则 UID 筛选
  • limit (number, optional) — 返回的最大警报数量
  • cursor (string, optional) — 分页游标
示例响应:

fleet_list_rules

列出车队规则,支持可选筛选。 参数:
  • enabled (boolean, optional) — 按启用状态筛选
  • limit (number, optional) — 返回的最大规则数量
  • cursor (string, optional) — 分页游标

fleet_register_device

注册新的车队设备。 参数:
  • name (string, required) — 设备名称
  • type (string, required) — 设备类型
  • firmwareVersion (string, optional) — 固件版本
  • tags (string[], optional) — 设备标签

fleet_acknowledge_alert

确认车队警报。 参数:
  • uid (string, required) — 要确认的警报的唯一标识符

使用示例

可以通过自然语言运行的多步骤工作流。每个示例展示了助手在后台进行的工具调用。

示例 1:数据集健康检查

向助手提问:「检查一下我的工作区——我有多少个数据集,哪些数据集的项目数最多?」 步骤 1 — 助手调用 get_workspace_stats 获取概览。
步骤 2 — 助手调用 list_datasets,设置 limit: 50 获取所有数据集。 步骤 3 — 助手按 itemCount 排序结果并呈现排名摘要:
您有 14 个数据集。最大的三个是:
  1. Warehouse Cameras — 34,200 个项目(image)
  2. Urban Driving Q1 — 12,450 个项目(lidar)
  3. Parking Lot Footage — 8,900 个项目(video)

示例 2:导出和下载

向助手提问:「导出 Urban Driving Q1 项目,准备好了告诉我。」 步骤 1 — 助手调用 list_projects 查找与「Urban Driving Q1」匹配的项目 UID。 步骤 2 — 助手使用项目 UID 调用 create_export
步骤 3 — 助手轮询 get_export_status,直到状态变为 completed
步骤 4 — 助手提供下载链接和文件大小。
您的导出已准备就绪(50 MB)。在此处下载:https://api.avala.ai/exports/.../download

示例 3:跨项目质量审计

向助手提问:「评估我所有项目的质量目标,标记未通过的项目。」 步骤 1 — 助手调用 list_projects 获取所有项目。 步骤 2 — 对于每个项目,助手使用项目 UID 调用 evaluate_quality 步骤 3 — 助手汇总结果并突出显示未通过的项目:
7 个项目中有 5 个通过了所有质量目标。两个需要关注:
  • Sidewalk Segmentation — 「标签准确率」目标为 88%(阈值:95%)
  • Fleet Camera Review — 「共识分数」目标为 0.72(阈值:0.85)

示例 4:车队设备监控

向助手提问:「显示所有尚未确认的车队警报,按严重程度分组。」 步骤 1 — 助手调用 fleet_list_alerts,设置 status: "open" 步骤 2 — 助手对响应进行分组和格式化:
Critical(1 条)
  • Dock Camera 3 — 「设备离线超过 24 小时」(自 3 月 18 日起)
Warning(2 条)
  • Forklift Sensor Unit 12 — 「设备温度超过阈值(72C)」(自 3 月 19 日起)
  • Rooftop LiDAR 1 — 「磁盘空间不足(< 5%)」(自 3 月 19 日起)
步骤 3 — 您可以继续提问:「确认所有 warning 级别的警报。」 助手将为每个 warning 警报的 UID 调用 fleet_acknowledge_alert

示例 5:标注问题分类

向助手提问:「获取 urban-driving-q1 数据集的标注问题指标,显示详细分类。」 步骤 1 — 助手使用所有者和数据集 slug 调用 get_annotation_issue_metrics 步骤 2 — 助手展示格式化的摘要:
Urban Driving Q1 — 问题指标 按状态:12 个 open,5 个 in review,3 个 relabeling,45 个 completed 按严重程度:8 个 critical,57 个 moderate 按优先级:2 个 highest,6 个 high,18 个 medium,25 个 low,14 个 lowest 平均关闭时间:4.2 小时
步骤 3 — 您继续提问:「列出打开的 critical 问题。」 助手使用筛选条件调用 list_annotation_issues_by_dataset 并显示结果。

提示词示例

以下是一些可以在任何 MCP 兼容客户端中使用的自然语言提示词:
AI 助手将调用相应的 Avala MCP 工具,处理响应,并以易读的格式呈现结果。您可以在一次对话中连续发出请求——例如,列出数据集,选择一个,然后查看导出状态。

故障排除

AVALA_API_KEY 未设置

如果 AVALA_API_KEY 环境变量缺失,MCP Server 会立即以错误代码 1 退出。请确保在 MCP 配置的 env 块中设置了密钥,或在启动服务器之前在 shell 中导出了该变量。

变更类工具未显示

如果 create_exportcreate_agentfleet_register_device 等工具未出现在工具列表中,您需要在服务器环境中设置 AVALA_MCP_ENABLE_MUTATIONS=true。将其添加到 MCP 配置文件的 env 块中:

npx 未找到或 Node.js 版本不正确

MCP Server 需要 Node.js 18 或更高版本。如果您看到 npx: command not found 或模块语法错误,请验证您的 Node.js 版本:

缓存的旧版 MCP Server

如果您最近更新了 @avala-ai/mcp-server 包,但仍然看到旧的行为或缺少工具,npx 可能在使用缓存的版本。强制重新安装:
然后重启您的 MCP 客户端。

API 密钥无效或已过期

如果工具调用返回 401 Unauthorized,您的 API 密钥可能无效、已过期或已被撤销。在 Mission ControlSettings > Security 中生成新密钥,并更新您的 MCP 配置。
Avala MCP Server 是开源的。访问 GitHub 仓库查看源代码或参与贡献。