> ## Documentation Index
> Fetch the complete documentation index at: https://avala.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# MCP Server

> Model Context Protocol を通じて、Claude、Claude Code、Cursor、VS Code、ChatGPT で Avala を使用する

[Model Context Protocol (MCP)](https://modelcontextprotocol.io/) は、AI アシスタントが外部ツールやデータソースと連携するためのオープンスタンダードです。Avala の MCP Server は、データセット、プロジェクト、エクスポートをツールとして公開し、MCP 対応のクライアントから呼び出すことができます。コンテキストを切り替えることなく、自然言語でアノテーションワークフローを管理できます。

つまり、Claude に「データセットをすべて表示して」と頼んだり、Cursor でエクスポートを作成したり、VS Code でプロジェクトのステータスを確認したりできます。すべて、既にお使いの Avala API によって実現されています。

## 前提条件

* **Node.js** 18 以降がマシンにインストールされていること
* **Avala API キー**（[Mission Control](https://avala.ai/settings?section=security) の **Settings > Security** で生成できます）

## セットアップ

### Claude Desktop

Claude Desktop の設定ファイルを開きます：

* **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
* **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`

Avala MCP Server を追加します：

<Warning>
  実際の API キーを含む設定ファイルをバージョン管理にコミットしないでください。`AVALA_API_KEY` をシステム環境変数として設定するか、`"your-api-key"` を実際のキーに置き換え、設定ファイルが `.gitignore` に含まれていることを確認してください。
</Warning>

```json theme={null}
{
  "mcpServers": {
    "avala": {
      "command": "npx",
      "args": ["-y", "@avala-ai/mcp-server"],
      "env": {
        "AVALA_API_KEY": "your-api-key"
      }
    }
  }
}
```

Claude Desktop を再起動してください。ツールピッカーに Avala のツールが表示されます。

### Cursor

プロジェクトルート（またはグローバル設定ディレクトリ）に `.cursor/mcp.json` を作成または編集します：

<Warning>
  `.cursor/mcp.json` はプロジェクトルートにあり、git にコミットされる可能性があります。`.gitignore` に追加するか、設定ファイルに直接記載する代わりに `AVALA_API_KEY` をシステム環境変数として設定してください。
</Warning>

```json theme={null}
{
  "mcpServers": {
    "avala": {
      "command": "npx",
      "args": ["-y", "@avala-ai/mcp-server"],
      "env": {
        "AVALA_API_KEY": "your-api-key"
      }
    }
  }
}
```

Cursor を再起動するか、ウィンドウをリロードしてください。Cursor のエージェントモードで Avala のツールが利用可能になります。

### VS Code

ワークスペースの `.vscode/mcp.json` を作成または編集します：

<Warning>
  `.vscode/mcp.json` はワークスペースにあり、git にコミットされる可能性があります。`.gitignore` に追加するか、設定ファイルに直接記載する代わりに `AVALA_API_KEY` をシステム環境変数として設定してください。
</Warning>

```json theme={null}
{
  "mcpServers": {
    "avala": {
      "command": "npx",
      "args": ["-y", "@avala-ai/mcp-server"],
      "env": {
        "AVALA_API_KEY": "your-api-key"
      }
    }
  }
}
```

MCP サポートが有効な [GitHub Copilot](https://marketplace.visualstudio.com/items?itemName=GitHub.copilot) 拡張機能がインストールされていることを確認してください。VS Code を再起動すると、新しいサーバーが認識されます。

### Claude Code

1 つのコマンドで Avala MCP Server を Claude Code に追加できます：

```bash theme={null}
claude mcp add avala -- npx -y @avala-ai/mcp-server
```

API キーを環境変数として設定します：

```bash theme={null}
export AVALA_API_KEY="your-api-key"
```

Claude Code を再起動してください。セッションで Avala のツールが利用可能になります。

### ChatGPT

<Info>
  ChatGPT の MCP サポートは進化中です。最新のセットアップ手順やお使いのプランおよび地域での利用可否については、[OpenAI のドキュメント](https://platform.openai.com/docs)を参照してください。
</Info>

## MCP セキュリティモード

安全のため、MCP Server はデフォルトで読み取り専用です。変更を伴うツールは、以下の設定で明示的に有効にしない限り登録されません：

```bash theme={null}
AVALA_MCP_ENABLE_MUTATIONS=true
```

この環境変数は、サーバー起動前に MCP Server のプロセス環境で設定できます。

デフォルトでは、以下の書き込み/削除操作がブロックされます：

* `create_dataset`
* `create_agent`、`delete_agent`
* `create_annotation_issue`、`update_annotation_issue`、`delete_annotation_issue`
* `create_storage_config`、`test_storage_config`、`delete_storage_config`
* `create_webhook`、`delete_webhook`
* `create_export`
* `evaluate_quality`
* `compute_consensus`
* `fleet_register_device`、`fleet_acknowledge_alert`

## 利用可能な MCP ツール

接続すると、AI アシスタントで以下のツールが利用可能になります：

| ツール                                  | 説明                                                                                              |
| ------------------------------------ | ----------------------------------------------------------------------------------------------- |
| `list_datasets`                      | ワークスペース内のすべてのデータセットを一覧表示します。                                                                    |
| `get_dataset`                        | 特定のデータセットの詳細を取得します。                                                                             |
| `create_dataset`                     | アノテーション用の新しいデータセットを作成します。 <span className="text-orange-500 text-xs font-medium">mutation</span> |
| `list_projects`                      | すべてのアノテーションプロジェクトを一覧表示します。                                                                      |
| `get_project`                        | プロジェクトの詳細を取得します。                                                                                |
| `create_export`                      | データセットまたはプロジェクトの新しいエクスポートをトリガーします。*（`AVALA_MCP_ENABLE_MUTATIONS=true` が必要）*                     |
| `get_export_status`                  | エクスポートのステータスを確認します。                                                                             |
| `list_exports`                       | すべてのエクスポートを一覧表示します。                                                                             |
| `get_workspace_stats`                | ワークスペースの使用状況の概要を取得します。                                                                          |
| `list_tasks`                         | オプションのフィルタリングでタスクを一覧表示します。                                                                      |
| `get_task`                           | タスクの詳細を取得します。                                                                                   |
| `list_agents`                        | オートメーションエージェントを一覧表示します。                                                                         |
| `get_agent`                          | エージェントの詳細を取得します。                                                                                |
| `create_agent`                       | 新しいオートメーションエージェントを作成します。*（`AVALA_MCP_ENABLE_MUTATIONS=true` が必要）*                               |
| `delete_agent`                       | エージェントを削除します。*（`AVALA_MCP_ENABLE_MUTATIONS=true` が必要）*                                          |
| `list_webhooks`                      | Webhook サブスクリプションを一覧表示します。                                                                      |
| `create_webhook`                     | Webhook サブスクリプションを作成します。*（`AVALA_MCP_ENABLE_MUTATIONS=true` が必要）*                               |
| `delete_webhook`                     | Webhook を削除します。*（`AVALA_MCP_ENABLE_MUTATIONS=true` が必要）*                                        |
| `list_storage_configs`               | ストレージ設定を一覧表示します。                                                                                |
| `create_storage_config`              | ストレージ設定を作成します。*（`AVALA_MCP_ENABLE_MUTATIONS=true` が必要）*                                         |
| `test_storage_config`                | ストレージ接続をテストします。*（`AVALA_MCP_ENABLE_MUTATIONS=true` が必要）*                                        |
| `delete_storage_config`              | ストレージ設定を削除します。*（`AVALA_MCP_ENABLE_MUTATIONS=true` が必要）*                                         |
| `list_quality_targets`               | プロジェクトの品質ターゲットを一覧表示します。                                                                         |
| `evaluate_quality`                   | 品質ターゲットを評価します。*（`AVALA_MCP_ENABLE_MUTATIONS=true` が必要）*                                         |
| `get_consensus_summary`              | プロジェクトのコンセンサスサマリーを取得します。                                                                        |
| `compute_consensus`                  | コンセンサス計算をトリガーします。*（`AVALA_MCP_ENABLE_MUTATIONS=true` が必要）*                                      |
| `list_organizations`                 | 組織を一覧表示します。                                                                                     |
| `get_organization`                   | 組織の詳細を取得します。                                                                                    |
| `list_slices`                        | オーナーのスライスを一覧表示します。                                                                              |
| `get_slice`                          | スライスの詳細を取得します。                                                                                  |
| `list_annotation_issues_by_sequence` | シーケンスのアノテーションイシューを一覧表示します。                                                                      |
| `create_annotation_issue`            | 新しいアノテーションイシューを作成します。*（`AVALA_MCP_ENABLE_MUTATIONS=true` が必要）*                                  |
| `update_annotation_issue`            | アノテーションイシューを更新します。*（`AVALA_MCP_ENABLE_MUTATIONS=true` が必要）*                                     |
| `delete_annotation_issue`            | アノテーションイシューを削除します。*（`AVALA_MCP_ENABLE_MUTATIONS=true` が必要）*                                     |
| `list_annotation_issues_by_dataset`  | データセットのアノテーションイシューを一覧表示します。                                                                     |
| `get_annotation_issue_metrics`       | データセットのイシューメトリクスを取得します。                                                                         |
| `list_qc_tools`                      | 利用可能な QC ツールを一覧表示します。                                                                           |

### Fleet（プレビュー）

<Info>
  Fleet ツールはプレビュー版であり、変更される可能性があります。フリートのデバイス、録画、イベント、アラート、ルールへの読み取り・書き込みアクセスを提供します。
</Info>

| ツール                       | 説明                                                                                       |
| ------------------------- | ---------------------------------------------------------------------------------------- |
| `fleet_list_devices`      | オプションのフィルタ付きでフリートデバイスを一覧表示します。                                                           |
| `fleet_get_device`        | 特定のフリートデバイスの詳細情報を取得します。                                                                  |
| `fleet_list_recordings`   | オプションのフィルタ付きでフリート録画を一覧表示します。                                                             |
| `fleet_get_recording`     | 特定の録画の詳細情報を取得します。                                                                        |
| `fleet_list_events`       | オプションのフィルタ付きでフリートイベントを一覧表示します。                                                           |
| `fleet_list_alerts`       | オプションのフィルタ付きでフリートアラートを一覧表示します。                                                           |
| `fleet_list_rules`        | オプションのフィルタ付きでフリートルールを一覧表示します。                                                            |
| `fleet_register_device`   | 新しいフリートデバイスを登録します。 <span className="text-orange-500 text-xs font-medium">mutation</span> |
| `fleet_acknowledge_alert` | フリートアラートを確認済みにします。 <span className="text-orange-500 text-xs font-medium">mutation</span> |

## ツール定義

各 MCP ツールの詳細なスキーマです。すべてのツールはテキストコンテンツとして JSON を返します。

### list\_datasets

ワークスペース内のすべてのデータセットを一覧表示します。

**パラメータ：**

* `dataType` (string, optional) — データタイプでフィルタ（`image`、`video`、`lidar`、`mcap`、`splat`）
* `name` (string, optional) — データセット名でフィルタ（部分一致）
* `status` (string, optional) — データセットのステータスでフィルタ
* `visibility` (string, optional) — 可視性でフィルタ（`private` または `public`）
* `limit` (number, optional) — 返すデータセットの最大数
* `cursor` (string, optional) — 前回のリクエストからのページネーションカーソル

**レスポンス例：**

```json theme={null}
{
  "datasets": [
    {
      "uid": "d8f2e1a4-3b7c-4e9f-a1d6-5c8b9e0f2a3d",
      "name": "Urban Driving Q1",
      "slug": "urban-driving-q1",
      "dataType": "lidar",
      "itemCount": 12450,
      "visibility": "private",
      "status": "active",
      "createdAt": "2026-01-15T08:30:00Z"
    },
    {
      "uid": "a1b2c3d4-5e6f-7a8b-9c0d-e1f2a3b4c5d6",
      "name": "Warehouse Cameras",
      "slug": "warehouse-cameras",
      "dataType": "image",
      "itemCount": 34200,
      "visibility": "private",
      "status": "active",
      "createdAt": "2026-02-20T14:15:00Z"
    }
  ],
  "cursor": "eyJpZCI6MTAwfQ=="
}
```

### get\_dataset

特定のデータセットの詳細を取得します。

**パラメータ：**

* `uid` (string, required) — データセットの一意識別子（UUID）

**レスポンス例：**

```json theme={null}
{
  "uid": "d8f2e1a4-3b7c-4e9f-a1d6-5c8b9e0f2a3d",
  "name": "Urban Driving Q1",
  "slug": "urban-driving-q1",
  "dataType": "lidar",
  "itemCount": 12450,
  "sequenceCount": 85,
  "visibility": "private",
  "status": "active",
  "owner": "acme-robotics",
  "createdAt": "2026-01-15T08:30:00Z",
  "updatedAt": "2026-03-10T11:45:00Z"
}
```

**エラーレスポンス（無効な UID）：**

```json theme={null}
{
  "error": "not_found",
  "message": "Dataset with UID 'invalid-uid-here' was not found.",
  "status": 404
}
```

### 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) — データタイプ：`image`、`video`、`lidar`、または `mcap`
* `visibility` (string, optional) — データセットの可視性：`private` または `public`（デフォルト：`private`）
* `createMetadata` (boolean, optional) — データセットメタデータを作成するかどうか（デフォルト：true）
* `providerConfig` (object, optional) — クラウドストレージプロバイダー設定
* `ownerName` (string, optional) — データセットオーナーのユーザー名またはメールアドレス

### create\_export

データセットまたはプロジェクトの新しいエクスポートをトリガーします。

**パラメータ：**

* `project` (string, optional) — エクスポートするプロジェクトの UID
* `dataset` (string, optional) — エクスポートするデータセットの UID

**レスポンス例：**

```json theme={null}
{
  "uid": "e3a1b2c4-9d8f-4e7a-b6c5-d4e3f2a1b0c9",
  "status": "pending",
  "project": "770a9600-a40d-63f6-c938-668877660000",
  "createdAt": "2026-03-19T10:00:00Z"
}
```

### get\_export\_status

エクスポートのステータスを確認します。

**パラメータ：**

* `uid` (string, required) — エクスポートの一意識別子（UUID）

**レスポンス例：**

```json theme={null}
{
  "uid": "e3a1b2c4-9d8f-4e7a-b6c5-d4e3f2a1b0c9",
  "status": "completed",
  "project": "770a9600-a40d-63f6-c938-668877660000",
  "downloadUrl": "https://api.avala.ai/exports/e3a1b2c4-9d8f-4e7a-b6c5-d4e3f2a1b0c9/download",
  "fileSize": 52428800,
  "createdAt": "2026-03-19T10:00:00Z",
  "completedAt": "2026-03-19T10:02:34Z"
}
```

### list\_exports

ワークスペース内のすべてのエクスポートを一覧表示します。

**パラメータ：**

* `limit` (number, optional) — 返すエクスポートの最大数
* `cursor` (string, optional) — 前回のリクエストからのページネーションカーソル

### get\_workspace\_stats

ワークスペースの内容（データセット、プロジェクト、エクスポート）を簡単に確認します。

**パラメータ：** なし

**レスポンス例：**

```json theme={null}
{
  "datasets": 14,
  "projects": 7,
  "exports": 23,
  "tasks": {
    "total": 8420,
    "pending": 312,
    "completed": 7856,
    "inProgress": 252
  },
  "members": 18
}
```

### list\_tasks

プロジェクトやステータスによるオプションのフィルタリングでタスクを一覧表示します。

**パラメータ：**

* `project` (string, optional) — プロジェクト UID でフィルタ
* `status` (string, optional) — タスクのステータスでフィルタ
* `limit` (number, optional) — 返すタスクの最大数
* `cursor` (string, optional) — 前回のリクエストからのページネーションカーソル

**レスポンス例：**

```json theme={null}
{
  "tasks": [
    {
      "uid": "t1a2b3c4-d5e6-f7a8-b9c0-d1e2f3a4b5c6",
      "status": "completed",
      "project": "770a9600-a40d-63f6-c938-668877660000",
      "assignee": "jane.doe@acme.com",
      "completedAt": "2026-03-18T16:30:00Z"
    },
    {
      "uid": "t7e8f9a0-b1c2-d3e4-f5a6-b7c8d9e0f1a2",
      "status": "pending",
      "project": "770a9600-a40d-63f6-c938-668877660000",
      "assignee": null,
      "completedAt": null
    }
  ],
  "cursor": "eyJ0YXNrSWQiOjUwfQ=="
}
```

### 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) — ストレージプロバイダーの種類（`s3` または `gcs`）
* `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) — 組織のスラッグ識別子

### list\_slices

オーナー（ユーザーまたは組織）のスライスを一覧表示します。

**パラメータ：**

* `owner` (string, required) — オーナー名（ユーザーまたは組織のスラッグ）
* `limit` (number, optional) — 返すスライスの最大数
* `cursor` (string, optional) — 前回のリクエストからのページネーションカーソル

### get\_slice

特定のスライスの詳細情報を取得します。

**パラメータ：**

* `owner` (string, required) — オーナー名（ユーザーまたは組織のスラッグ）
* `slug` (string, required) — スライスのスラッグ

### 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) — 優先度：`lowest`、`low`、`medium`、`high`、`highest`
* `severity` (string, optional) — 重大度：`critical`、`moderate`
* `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) — ステータス：`open`、`relabeling`、`in_review`、`completed`、`cant_reproduce`、`awaiting_feedback`、`no_action_taken`
* `priority` (string, optional) — 優先度：`lowest`、`low`、`medium`、`high`、`highest`
* `severity` (string, optional) — 重大度：`critical`、`moderate`
* `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) — データセットのスラッグ
* `sequenceUid` (string, optional) — シーケンスの UUID でフィルタ

### get\_annotation\_issue\_metrics

データセット内のアノテーションイシューの集約メトリクス（ステータス/優先度/重大度の件数、クローズ時間）を取得します。

**パラメータ：**

* `owner` (string, required) — データセットオーナーのユーザー名
* `datasetSlug` (string, required) — データセットのスラッグ
* `sequenceUid` (string, optional) — シーケンスの UUID でフィルタ

### list\_qc\_tools

指定したデータセットタイプで利用可能な QC アノテーションツールを一覧表示します。

**パラメータ：**

* `datasetType` (string, required) — データセットタイプ（例：`lidar`、`image`、`video`）

### fleet\_list\_devices

オプションのフィルタ付きでフリートデバイスを一覧表示します。

**パラメータ：**

* `status` (string, optional) — デバイスのステータスでフィルタ（`online`、`offline`、`maintenance`）
* `type` (string, optional) — デバイスタイプでフィルタ
* `limit` (number, optional) — 返すデバイスの最大数
* `cursor` (string, optional) — ページネーションカーソル

**レスポンス例：**

```json theme={null}
{
  "devices": [
    {
      "uid": "dev-a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "name": "Forklift Sensor Unit 12",
      "type": "lidar-sensor",
      "status": "online",
      "firmwareVersion": "2.4.1",
      "lastSeenAt": "2026-03-19T09:55:00Z",
      "tags": ["warehouse-a", "forklift"]
    },
    {
      "uid": "dev-b2c3d4e5-f6a7-8901-bcde-f12345678901",
      "name": "Dock Camera 3",
      "type": "camera",
      "status": "offline",
      "firmwareVersion": "1.8.0",
      "lastSeenAt": "2026-03-18T23:10:00Z",
      "tags": ["dock", "exterior"]
    }
  ],
  "cursor": "eyJkZXZpY2VJZCI6MjB9"
}
```

### 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) — アラートのステータスでフィルタ（`open`、`acknowledged`、`resolved`）
* `severity` (string, optional) — 重大度でフィルタ（`info`、`warning`、`error`、`critical`）
* `device` (string, optional) — デバイス UID でフィルタ
* `rule` (string, optional) — ルール UID でフィルタ
* `limit` (number, optional) — 返すアラートの最大数
* `cursor` (string, optional) — ページネーションカーソル

**レスポンス例：**

```json theme={null}
{
  "alerts": [
    {
      "uid": "alert-c3d4e5f6-a7b8-9012-cdef-123456789012",
      "status": "open",
      "severity": "warning",
      "device": "dev-a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "rule": "rule-d4e5f6a7-b8c9-0123-defa-234567890123",
      "message": "Device temperature exceeded threshold (72C)",
      "createdAt": "2026-03-19T08:45:00Z"
    },
    {
      "uid": "alert-e5f6a7b8-c9d0-1234-efab-345678901234",
      "status": "acknowledged",
      "severity": "critical",
      "device": "dev-b2c3d4e5-f6a7-8901-bcde-f12345678901",
      "rule": "rule-f6a7b8c9-d0e1-2345-fabc-456789012345",
      "message": "Device offline for more than 24 hours",
      "createdAt": "2026-03-18T09:00:00Z",
      "acknowledgedAt": "2026-03-18T10:30:00Z"
    }
  ],
  "cursor": "eyJhbGVydElkIjoxMH0="
}
```

### 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` を呼び出して概要を取得します。

```json theme={null}
{
  "datasets": 14,
  "projects": 7,
  "exports": 23,
  "tasks": { "total": 8420, "pending": 312, "completed": 7856, "inProgress": 252 },
  "members": 18
}
```

**ステップ 2** — アシスタントが `list_datasets` を `limit: 50` で呼び出し、すべてのデータセットを取得します。

**ステップ 3** — アシスタントが結果を `itemCount` でソートし、ランキングサマリーを表示します：

> データセットは 14 個あります。最も大きい 3 つは：
>
> 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` を呼び出します。

```json theme={null}
{
  "uid": "e3a1b2c4-9d8f-4e7a-b6c5-d4e3f2a1b0c9",
  "status": "pending",
  "project": "770a9600-a40d-63f6-c938-668877660000",
  "createdAt": "2026-03-19T10:00:00Z"
}
```

**ステップ 3** — アシスタントがステータスが `completed` に変わるまで `get_export_status` をポーリングします。

```json theme={null}
{
  "uid": "e3a1b2c4-9d8f-4e7a-b6c5-d4e3f2a1b0c9",
  "status": "completed",
  "downloadUrl": "https://api.avala.ai/exports/e3a1b2c4-9d8f-4e7a-b6c5-d4e3f2a1b0c9/download",
  "fileSize": 52428800,
  "completedAt": "2026-03-19T10:02:34Z"
}
```

**ステップ 4** — アシスタントがダウンロードリンクとファイルサイズを提供します。

> エクスポートの準備ができました（50 MB）。こちらからダウンロードしてください：`https://api.avala.ai/exports/.../download`

### レシピ 3：プロジェクト全体の品質監査

アシスタントに尋ねます：*「すべてのプロジェクトの品質ターゲットを評価して、不合格のものをフラグしてください。」*

**ステップ 1** — アシスタントが `list_projects` を呼び出し、すべてのプロジェクトを取得します。

**ステップ 2** — 各プロジェクトに対して、アシスタントがプロジェクト UID を使って `evaluate_quality` を呼び出します。

**ステップ 3** — アシスタントが結果を集約し、不合格のものを強調表示します：

> 7 プロジェクト中 5 つがすべての品質ターゲットに合格しています。注意が必要な 2 つ：
>
> * **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** — アシスタントがオーナーとデータセットスラッグを使って `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 対応の任意のクライアントで使用できる自然言語プロンプトの例です：

```
List all my datasets
```

```
Show me the details of dataset "autonomous-driving-v3"
```

```
What's the status of the "Lidar QA" project?
```

```
Create an export for project 770a9600-a40d-63f6-c938-668877660000
```

```
How many exports do I have?
```

```
Show my workspace stats
```

```
List all my automation agents
```

```
Create a webhook for task.completed events pointing to https://my-server.com/hooks
```

```
Show me the quality targets for project proj_abc123
```

```
What's the consensus score summary for my annotation project?
```

```
List all organizations I belong to
```

```
Show workspace storage config list
```

```
List all online fleet devices
```

```
Show me open critical alerts across the fleet
```

```
Register a new lidar-sensor device called "Rooftop Unit 5"
```

AI アシスタントが適切な Avala MCP ツールを呼び出し、レスポンスを処理して、読みやすい形式で結果を表示します。1 つの会話でリクエストを連続して行うことができます。たとえば、データセットを一覧表示し、1 つを選択してからエクスポートのステータスを確認できます。

## トラブルシューティング

### `AVALA_API_KEY` が設定されていない

`AVALA_API_KEY` 環境変数が設定されていない場合、MCP Server はエラーコード 1 で即座に終了します。MCP 設定の `env` ブロックにキーが設定されているか、サーバー起動前にシェルでエクスポートされていることを確認してください。

```
Error: AVALA_API_KEY environment variable is required
```

### ミューテーションツールが表示されない

`create_export`、`create_agent`、`fleet_register_device` などのツールがツール一覧に表示されない場合は、サーバー環境で `AVALA_MCP_ENABLE_MUTATIONS=true` を設定する必要があります。MCP 設定ファイルの `env` ブロックに追加してください：

```json theme={null}
{
  "env": {
    "AVALA_API_KEY": "your-api-key",
    "AVALA_MCP_ENABLE_MUTATIONS": "true"
  }
}
```

### `npx` が見つからない、または Node.js のバージョンが異なる

MCP Server には Node.js 18 以降が必要です。`npx: command not found` やモジュール構文エラーが表示される場合は、Node.js のバージョンを確認してください：

```bash theme={null}
node --version  # Must be v18.0.0 or later
```

### キャッシュされた古い MCP Server

`@avala-ai/mcp-server` パッケージを最近更新したにもかかわらず、古い動作やツールの欠落が見られる場合、npx がキャッシュされたバージョンを使用している可能性があります。強制的に新規インストールしてください：

```bash theme={null}
npx --yes @avala-ai/mcp-server@latest
```

その後、MCP クライアントを再起動してください。

### API キーが無効または期限切れ

ツール呼び出しが `401 Unauthorized` を返す場合、API キーが無効、期限切れ、または失効している可能性があります。[Mission Control](https://avala.ai/settings?section=security) の **Settings > Security** で新しいキーを生成し、MCP 設定を更新してください。

<Info>
  Avala MCP Server はオープンソースです。ソースコードの閲覧やコントリビュートは [GitHub リポジトリ](https://github.com/avala-ai/avala-sdk-ts)をご覧ください。
</Info>
