사전 요구사항
- Node.js 18 이상이 설치되어 있어야 합니다
- Avala API key (Mission Control의 Settings > Security에서 생성)
설정
Claude Desktop
Claude Desktop 설정 파일을 여세요:- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
Cursor
프로젝트 루트(또는 글로벌 config 디렉터리)에서.cursor/mcp.json을 생성하거나 편집하세요:
VS Code
워크스페이스에서.vscode/mcp.json을 생성하거나 편집하세요:
Claude Code
단일 명령어로 Claude Code에 Avala MCP server를 추가하세요:ChatGPT
ChatGPT의 MCP 지원은 발전 중입니다. 최신 설정 안내 및 플랜과 지역에서의 사용 가능 여부는 OpenAI 문서를 참조하세요.
MCP 보안 모드
안전을 위해 MCP server는 기본적으로 읽기 전용입니다. 변경 도구는 명시적으로 활성화하지 않으면 등록되지 않습니다:create_datasetcreate_agent,delete_agentcreate_annotation_issue,update_annotation_issue,delete_annotation_issuecreate_storage_config,delete_storage_configcreate_webhook,delete_webhookcreate_exportevaluate_qualitycompute_consensusfleet_register_device,fleet_acknowledge_alert
사용 가능한 MCP 도구
연결되면 AI 어시스턴트에서 다음 도구를 사용할 수 있습니다:| 도구 | 설명 |
|---|---|
list_datasets | 워크스페이스의 모든 datasets를 나열합니다. |
get_dataset | 특정 dataset의 상세 정보를 가져옵니다. |
create_dataset | annotation을 위한 새 dataset을 생성합니다. mutation |
list_projects | 모든 annotation projects를 나열합니다. |
get_project | 전체 project 상세 정보를 가져옵니다. |
create_export | dataset 또는 project에 대한 새 export를 트리거합니다. (AVALA_MCP_ENABLE_MUTATIONS=true 필요) |
get_export_status | export 상태를 확인합니다. |
list_exports | 모든 exports를 나열합니다. |
get_workspace_stats | 워크스페이스 사용 요약을 가져옵니다. |
list_tasks | 선택적 필터링으로 tasks를 나열합니다. |
get_task | task 상세 정보를 가져옵니다. |
list_agents | automation agents를 나열합니다. |
get_agent | agent 상세 정보를 가져옵니다. |
create_agent | 새 automation agent를 생성합니다. (AVALA_MCP_ENABLE_MUTATIONS=true 필요) |
delete_agent | agent를 삭제합니다. (AVALA_MCP_ENABLE_MUTATIONS=true 필요) |
list_webhooks | webhook subscriptions를 나열합니다. |
create_webhook | webhook subscription을 생성합니다. (AVALA_MCP_ENABLE_MUTATIONS=true 필요) |
delete_webhook | webhook을 삭제합니다. (AVALA_MCP_ENABLE_MUTATIONS=true 필요) |
list_storage_configs | storage configurations를 나열합니다. |
create_storage_config | storage configuration을 생성합니다. (AVALA_MCP_ENABLE_MUTATIONS=true 필요) |
test_storage_config | storage 연결을 테스트합니다. |
delete_storage_config | storage configuration을 삭제합니다. (AVALA_MCP_ENABLE_MUTATIONS=true 필요) |
list_quality_targets | project의 quality targets를 나열합니다. |
evaluate_quality | quality targets를 평가합니다. (AVALA_MCP_ENABLE_MUTATIONS=true 필요) |
get_consensus_summary | project의 consensus 요약을 가져옵니다. |
compute_consensus | consensus 계산을 트리거합니다. (AVALA_MCP_ENABLE_MUTATIONS=true 필요) |
list_organizations | organizations를 나열합니다. |
get_organization | organization 상세 정보를 가져옵니다. |
list_slices | owner의 slices를 나열합니다. |
get_slice | slice 상세 정보를 가져옵니다. |
list_annotation_issues_by_sequence | sequence의 annotation issues를 나열합니다. |
create_annotation_issue | 새 annotation issue를 생성합니다. (AVALA_MCP_ENABLE_MUTATIONS=true 필요) |
update_annotation_issue | annotation issue를 업데이트합니다. (AVALA_MCP_ENABLE_MUTATIONS=true 필요) |
delete_annotation_issue | annotation issue를 삭제합니다. (AVALA_MCP_ENABLE_MUTATIONS=true 필요) |
list_annotation_issues_by_dataset | dataset의 annotation issues를 나열합니다. |
get_annotation_issue_metrics | dataset의 issue metrics를 가져옵니다. |
list_qc_tools | 사용 가능한 QC 도구를 나열합니다. |
Fleet (미리보기)
Fleet 도구는 미리보기 상태이며 변경될 수 있습니다. fleet devices, recordings, events, alerts 및 rules에 대한 읽기 및 쓰기 액세스를 제공합니다.
| 도구 | 설명 |
|---|---|
fleet_list_devices | 선택적 필터로 fleet devices를 나열합니다. |
fleet_get_device | 특정 fleet device의 상세 정보를 가져옵니다. |
fleet_list_recordings | 선택적 필터로 fleet recordings를 나열합니다. |
fleet_get_recording | 특정 recording의 상세 정보를 가져옵니다. |
fleet_list_events | 선택적 필터로 fleet events를 나열합니다. |
fleet_list_alerts | 선택적 필터로 fleet alerts를 나열합니다. |
fleet_list_rules | 선택적 필터로 fleet rules를 나열합니다. |
fleet_register_device | 새 fleet device를 등록합니다. mutation |
fleet_acknowledge_alert | fleet alert를 확인합니다. mutation |
도구 정의
각 MCP 도구의 상세 스키마입니다. 모든 도구는 JSON을 text content로 반환합니다.list_datasets
워크스페이스의 모든 datasets를 나열합니다. Parameters:dataType(string, optional) — 데이터 유형별 필터 (image,video,lidar,mcap,splat)name(string, optional) — dataset 이름별 필터 (부분 일치)status(string, optional) — dataset 상태별 필터visibility(string, optional) — 가시성별 필터 (private또는public)limit(number, optional) — 반환할 최대 datasets 수cursor(string, optional) — 이전 요청의 pagination cursor
get_dataset
특정 dataset의 상세 정보를 가져옵니다. Parameters:uid(string, required) — dataset의 고유 식별자 (UUID)
list_projects
모든 annotation projects를 나열합니다. Parameters:limit(number, optional) — 반환할 최대 projects 수cursor(string, optional) — 이전 요청의 pagination cursor
get_project
특정 project의 상세 정보를 가져옵니다. Parameters:uid(string, required) — project의 고유 식별자 (UUID)
create_dataset
annotation을 위한 새 dataset을 생성합니다. Parameters:name(string, required) — dataset의 표시 이름slug(string, required) — dataset의 URL 친화적 식별자dataType(string, required) — 데이터 유형:image,video,lidar또는mcapisSequence(boolean, optional) — dataset이 sequences를 포함하는지 여부 (기본값: false)visibility(string, optional) — dataset 가시성:private또는public(기본값:private)createMetadata(boolean, optional) — dataset metadata를 생성할지 여부 (기본값: true)providerConfig(object, optional) — 클라우드 스토리지 provider 설정ownerName(string, optional) — dataset owner 사용자 이름 또는 이메일
create_export
dataset 또는 project에 대한 새 export를 트리거합니다. Parameters:project(string, optional) — export할 project UIDdataset(string, optional) — export할 dataset UID
get_export_status
export의 상태를 확인합니다. Parameters:uid(string, required) — export의 고유 식별자 (UUID)
list_exports
워크스페이스의 모든 exports를 나열합니다. Parameters:limit(number, optional) — 반환할 최대 exports 수cursor(string, optional) — 이전 요청의 pagination cursor
get_workspace_stats
워크스페이스 내용(datasets, projects, exports)의 빠른 확인을 가져옵니다. Parameters: 없음 응답 예시:list_tasks
project 또는 상태별 선택적 필터링으로 tasks를 나열합니다. Parameters:project(string, optional) — project UID별 필터status(string, optional) — task 상태별 필터limit(number, optional) — 반환할 최대 tasks 수cursor(string, optional) — 이전 요청의 pagination cursor
get_task
특정 task의 상세 정보를 가져옵니다. Parameters:uid(string, required) — task의 고유 식별자 (UUID)
list_agents
워크스페이스에 설정된 모든 automation agents를 나열합니다. Parameters:limit(number, optional) — 반환할 최대 agents 수cursor(string, optional) — 이전 요청의 pagination cursor
get_agent
특정 automation agent의 상세 정보를 가져옵니다. Parameters:uid(string, required) — agent의 고유 식별자 (UUID)
create_agent
event subscriptions 및 callback URL을 가진 새 automation agent를 생성합니다. Parameters:name(string, required) — agent의 이름events(string[], required) — agent가 구독하는 event 유형 목록callbackUrl(string, optional) — event callbacks를 수신할 URLdescription(string, optional) — agent 설명project(string, optional) — agent 범위를 지정할 project UIDtaskTypes(string[], optional) — agent가 처리하는 task 유형
delete_agent
UID로 automation agent를 삭제합니다. Parameters:uid(string, required) — 삭제할 agent의 고유 식별자 (UUID)
list_webhooks
워크스페이스의 모든 webhook subscriptions를 나열합니다. Parameters:limit(number, optional) — 반환할 최대 webhooks 수cursor(string, optional) — 이전 요청의 pagination cursor
create_webhook
특정 events에 대한 새 webhook subscription을 생성합니다. Parameters:targetUrl(string, required) — webhook deliveries를 수신할 URLevents(string[], required) — 구독할 event 유형 목록
delete_webhook
UID로 webhook subscription을 삭제합니다. Parameters:uid(string, required) — 삭제할 webhook의 고유 식별자 (UUID)
list_storage_configs
워크스페이스의 모든 storage configurations를 나열합니다. Parameters:limit(number, optional) — 반환할 최대 storage configs 수cursor(string, optional) — 이전 요청의 pagination cursor
create_storage_config
새 storage configuration을 생성합니다 (S3 또는 Google Cloud Storage). Parameters:name(string, required) — storage configuration의 이름provider(string, required) — storage provider 유형 (s3또는gcs)s3BucketName(string, optional) — S3 bucket 이름s3BucketRegion(string, optional) — S3 bucket regions3BucketPrefix(string, optional) — S3 key prefixs3AccessKeyId(string, optional) — S3 access key ID (서버 측에서 안전하게 저장됨)s3SecretAccessKey(string, optional) — S3 secret access key (서버 측에서 안전하게 저장됨)s3IsAccelerated(boolean, optional) — S3 Transfer Acceleration 활성화gcStorageBucketName(string, optional) — Google Cloud Storage bucket 이름gcStoragePrefix(string, optional) — Google Cloud Storage prefixgcStorageAuthJsonContent(string, optional) — GCS service account JSON credentials (서버 측에서 안전하게 저장됨)
test_storage_config
storage configuration의 연결을 테스트합니다. Parameters:uid(string, required) — 테스트할 storage config의 고유 식별자 (UUID)
delete_storage_config
UID로 storage configuration을 삭제합니다. Parameters:uid(string, required) — 삭제할 storage config의 고유 식별자 (UUID)
list_quality_targets
특정 project에 설정된 quality targets를 나열합니다. Parameters:projectUid(string, required) — project의 고유 식별자 (UUID)limit(number, optional) — 반환할 최대 quality targets 수cursor(string, optional) — 이전 요청의 pagination cursor
evaluate_quality
project의 모든 quality targets를 평가하고 현재 상태를 반환합니다. Parameters:projectUid(string, required) — 평가할 project의 고유 식별자 (UUID)
get_consensus_summary
평균/중앙값 점수 및 분포를 포함한 project의 consensus 요약을 가져옵니다. Parameters:projectUid(string, required) — project의 고유 식별자 (UUID)
compute_consensus
project의 consensus 계산을 트리거합니다. Parameters:projectUid(string, required) — project의 고유 식별자 (UUID)
list_organizations
회원으로 속해 있는 모든 organizations를 나열합니다. Parameters:limit(number, optional) — 반환할 최대 organizations 수cursor(string, optional) — 이전 요청의 pagination cursor
get_organization
특정 organization의 상세 정보를 가져옵니다. Parameters:slug(string, required) — organization의 slug 식별자
list_slices
owner(사용자 또는 organization)의 slices를 나열합니다. Parameters:owner(string, required) — owner 이름 (사용자 또는 organization slug)limit(number, optional) — 반환할 최대 slices 수cursor(string, optional) — 이전 요청의 pagination cursor
get_slice
특정 slice의 상세 정보를 가져옵니다. Parameters:owner(string, required) — owner 이름 (사용자 또는 organization slug)slug(string, required) — slice의 slug
list_annotation_issues_by_sequence
특정 sequence의 모든 annotation issues를 나열합니다. Parameters:sequenceUid(string, required) — sequence의 UUIDdatasetItemUid(string, optional) — dataset item UUID별 필터projectUid(string, optional) — project UUID별 필터
create_annotation_issue
sequence에 새 annotation issue를 생성합니다. Parameters:sequenceUid(string, required) — sequence의 UUIDtoolUid(string, required) — annotation tool의 UUIDproblemUid(string, required) — problem type의 UUIDdatasetItemUid(string, optional) — dataset item UUIDprojectUid(string, optional) — project UUIDpriority(string, optional) — 우선순위:lowest,low,medium,high,highestseverity(string, optional) — 심각도:critical,moderatedescription(string, optional) — issue 설명wrongClass(string, optional) — 잘못된 class labelcorrectClass(string, optional) — 올바른 class labelobjectUid(string, optional) — annotation object의 UUIDshouldReAnnotate(boolean, optional) — 재 annotation 여부shouldDelete(boolean, optional) — annotation 삭제 여부framesAffected(string, optional) — issue의 영향을 받는 frames
update_annotation_issue
기존 annotation issue를 업데이트합니다 (상태, 우선순위 등). Parameters:sequenceUid(string, required) — sequence의 UUIDissueUid(string, required) — annotation issue의 UUIDstatus(string, optional) — 상태:open,relabeling,in_review,completed,cant_reproduce,awaiting_feedback,no_action_takenpriority(string, optional) — 우선순위:lowest,low,medium,high,highestseverity(string, optional) — 심각도:critical,moderatedescription(string, optional) — 업데이트된 설명toolUid(string, optional) — annotation tool의 UUIDproblemUid(string, optional) — problem type의 UUIDwrongClass(string, optional) — 잘못된 class labelframesAffected(string, optional) — issue의 영향을 받는 frames
delete_annotation_issue
annotation issue를 삭제합니다. Parameters:sequenceUid(string, required) — sequence의 UUIDissueUid(string, required) — 삭제할 annotation issue의 UUID
list_annotation_issues_by_dataset
dataset의 모든 annotation issues를 나열합니다. Parameters:owner(string, required) — dataset owner 사용자 이름datasetSlug(string, required) — dataset slugsequenceUid(string, optional) — sequence UUID별 필터
get_annotation_issue_metrics
dataset의 annotation issues에 대한 집계 metrics를 가져옵니다 (상태/우선순위/심각도 수, 종료 시간). Parameters:owner(string, required) — dataset owner 사용자 이름datasetSlug(string, required) — dataset slugsequenceUid(string, optional) — sequence UUID별 필터
list_qc_tools
지정된 dataset 유형에 사용 가능한 QC annotation 도구를 나열합니다. Parameters:datasetType(string, required) — dataset 유형 (예:lidar,image,video)
fleet_list_devices
선택적 필터로 fleet devices를 나열합니다. Parameters:status(string, optional) — device 상태별 필터 (online,offline,maintenance)type(string, optional) — device 유형별 필터limit(number, optional) — 반환할 최대 devices 수cursor(string, optional) — pagination cursor
fleet_get_device
특정 fleet device의 상세 정보를 가져옵니다. Parameters:uid(string, required) — device의 고유 식별자
fleet_list_recordings
선택적 필터로 fleet recordings를 나열합니다. Parameters:device(string, optional) — device UID별 필터status(string, optional) — recording 상태별 필터limit(number, optional) — 반환할 최대 recordings 수cursor(string, optional) — pagination cursor
fleet_get_recording
특정 recording의 상세 정보를 가져옵니다. Parameters:uid(string, required) — recording의 고유 식별자
fleet_list_events
선택적 필터로 fleet events를 나열합니다. Parameters:recording(string, optional) — recording UID별 필터device(string, optional) — device UID별 필터type(string, optional) — event 유형별 필터severity(string, optional) — 심각도별 필터limit(number, optional) — 반환할 최대 events 수cursor(string, optional) — pagination cursor
fleet_list_alerts
선택적 필터로 fleet alerts를 나열합니다. Parameters:status(string, optional) — alert 상태별 필터 (open,acknowledged,resolved)severity(string, optional) — 심각도별 필터 (info,warning,error,critical)device(string, optional) — device UID별 필터rule(string, optional) — rule UID별 필터limit(number, optional) — 반환할 최대 alerts 수cursor(string, optional) — pagination cursor
fleet_list_rules
선택적 필터로 fleet rules를 나열합니다. Parameters:enabled(boolean, optional) — 활성화 상태별 필터limit(number, optional) — 반환할 최대 rules 수cursor(string, optional) — pagination cursor
fleet_register_device
새 fleet device를 등록합니다. Parameters:name(string, required) — device의 이름type(string, required) — device의 유형firmwareVersion(string, optional) — firmware 버전tags(string[], optional) — device의 tags
fleet_acknowledge_alert
fleet alert를 확인합니다. Parameters:uid(string, required) — 확인할 alert의 고유 식별자
레시피
자연어를 통해 실행할 수 있는 다단계 워크플로우입니다. 각 레시피는 어시스턴트가 백그라운드에서 수행하는 tool calls를 보여줍니다.레시피 1: Dataset 상태 점검
어시스턴트에게 요청하세요: “내 워크스페이스의 상태를 점검해줘 — datasets가 몇 개 있고, 어떤 것이 가장 많은 items을 가지고 있어?” 단계 1 — 어시스턴트가get_workspace_stats를 호출하여 개요를 가져옵니다.
limit: 50으로 list_datasets를 호출하여 모든 datasets를 가져옵니다.
단계 3 — 어시스턴트가 결과를 itemCount 기준으로 정렬하고 순위 요약을 제공합니다:
14개의 datasets가 있습니다. 가장 큰 세 개는:
- Warehouse Cameras — 34,200 items (image)
- Urban Driving Q1 — 12,450 items (lidar)
- Parking Lot Footage — 8,900 items (video)
레시피 2: Export 및 다운로드
어시스턴트에게 요청하세요: “Urban Driving Q1 project를 export하고 준비되면 알려줘.” 단계 1 — 어시스턴트가 “Urban Driving Q1”과 일치하는 project UID를 찾기 위해list_projects를 호출합니다.
단계 2 — 어시스턴트가 project UID로 create_export를 호출합니다.
completed로 변경될 때까지 get_export_status를 폴링합니다.
export가 준비되었습니다 (50 MB). 여기에서 다운로드하세요: https://api.avala.ai/exports/.../download
레시피 3: Projects 전반의 품질 감사
어시스턴트에게 요청하세요: “모든 projects의 quality targets를 평가하고 실패한 것을 표시해줘.” 단계 1 — 어시스턴트가 모든 projects를 가져오기 위해list_projects를 호출합니다.
단계 2 — 각 project에 대해 어시스턴트가 project UID로 evaluate_quality를 호출합니다.
단계 3 — 어시스턴트가 결과를 집계하고 실패 항목을 강조합니다:
7개 projects 중 5개가 모든 quality targets를 통과합니다. 두 개는 주의가 필요합니다:
- Sidewalk Segmentation — “Label accuracy” 목표 88% (기준: 95%)
- Fleet Camera Review — “Consensus score” 목표 0.72 (기준: 0.85)
레시피 4: Fleet device 모니터링
어시스턴트에게 요청하세요: “아직 확인되지 않은 모든 fleet alerts를 심각도별로 그룹화해서 보여줘.” 단계 1 — 어시스턴트가status: "open"으로 fleet_list_alerts를 호출합니다.
단계 2 — 어시스턴트가 응답을 그룹화하고 포맷합니다:
Critical (1)단계 3 — 후속 요청: “모든 warning 레벨 alerts를 확인해줘.” 어시스턴트가 각 warning alert UID에 대해Warning (2)
- Dock Camera 3 — “Device offline for more than 24 hours” (3월 18일부터)
- Forklift Sensor Unit 12 — “Device temperature exceeded threshold (72C)” (3월 19일부터)
- Rooftop LiDAR 1 — “Low disk space (< 5%)” (3월 19일부터)
fleet_acknowledge_alert를 호출합니다.
레시피 5: Annotation issue 분류
어시스턴트에게 요청하세요: “urban-driving-q1 dataset의 annotation issue metrics를 가져와서 분석을 보여줘.” 단계 1 — 어시스턴트가 owner 및 dataset slug로get_annotation_issue_metrics를 호출합니다.
단계 2 — 어시스턴트가 포맷된 요약을 제공합니다:
Urban Driving Q1 — Issue Metrics 상태별: 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 — 후속 요청: “open critical issues를 나열해줘.” 어시스턴트가 필터와 함께
list_annotation_issues_by_dataset를 호출하고 결과를 보여줍니다.
예시 프롬프트
MCP 호환 client에서 사용할 수 있는 자연어 프롬프트입니다:문제 해결
AVALA_API_KEY가 설정되지 않음
AVALA_API_KEY environment variable이 없으면 MCP server가 error code 1과 함께 즉시 종료됩니다. MCP config의 env 블록에 key가 설정되어 있거나 server를 시작하기 전에 shell에서 export되어 있는지 확인하세요.
Mutation 도구가 표시되지 않음
create_export, create_agent 또는 fleet_register_device와 같은 도구가 도구 목록에 없는 경우, server 환경에서 AVALA_MCP_ENABLE_MUTATIONS=true를 설정해야 합니다. MCP configuration 파일의 env 블록에 추가하세요:
npx를 찾을 수 없거나 잘못된 Node.js 버전
MCP server는 Node.js 18 이상이 필요합니다. npx: command not found 또는 module syntax errors가 표시되면 Node.js 버전을 확인하세요:
오래된 캐시된 MCP server
최근에@avala-ai/mcp-server package를 업데이트했지만 이전 동작이나 누락된 도구가 계속 표시되는 경우, npx가 캐시된 버전을 제공하고 있을 수 있습니다. 새로 설치를 강제하세요:
API key가 유효하지 않거나 만료됨
tool calls가401 Unauthorized를 반환하면 API key가 유효하지 않거나, 만료되었거나, 해지되었을 수 있습니다. Mission Control의 Settings > Security에서 새 key를 생성하고 MCP configuration을 업데이트하세요.
Avala MCP server는 오픈 소스입니다. 소스 코드를 확인하거나 기여하려면 GitHub repository를 방문하세요.