MCP server: One MCP server.

Avala

@avala-aiMCP server · External

Read Physical AI datasets, projects, fleet and quality data. Requires authorized Avala access.

Datasetsv1.0.0MITTypeScript
Freeno charge per call

One address for any MCP client. You sign in at auth.avala.ai once, after adding it.

What it does

  1. Reads
  2. Writes
  3. High impact

At most: only reads or looks up information.

What it costs

Free

Odel charges nothing per call. The publisher may charge for its own service.

What it asks for at sign-in

Access toReadChange
Agents
Datasets
Exports
Fleet
McpNot stated: mcp.staff_access
Operations
Organizations
Projects
Qc
Slices
Storage
Tasks
Webhooks
Workforce

From the sign-in at auth.avala.ai, as the endpoint publishes it. You approve it there.

Tools

None listed · checked 8 Oct 2026

Odel could not list its tools without signing in.

Try it in the Inspector
README3 min read

Avala TypeScript SDK + MCP Server

npm: @avala-ai/sdk npm: @avala-ai/mcp-server CI License: MIT

Official TypeScript SDK and MCP server for the Avala API — the open Physical AI Data Platform. Programmatically manage sensor datasets (MCAP, LiDAR, video), annotation projects, exports, tasks, and fleet devices.

Note: This repository is a read-only mirror. To report bugs or request features, please open an issue. See CONTRIBUTING.md for details.

Packages

PackageVersionDescription
@avala-ai/sdk0.5.0TypeScript SDK for the Avala API
@avala-ai/mcp-server0.5.0MCP server for AI assistant integrations

SDK Quick Start

bash
npm install @avala-ai/sdk
typescript
import Avala from "@avala-ai/sdk";

const avala = new Avala();  // reads AVALA_API_KEY env var

// List datasets
const page = await avala.datasets.list({ limit: 10 });
page.items.forEach(d => console.log(d.uid, d.name));

// Get a specific dataset
const dataset = await avala.datasets.get("dataset-uid");

// Create an export
const exp = await avala.exports.create({ project: "project-uid" });
console.log(exp.uid, exp.status);

// List tasks with filters
const tasks = await avala.tasks.list({ project: "project-uid", status: "completed" });

Authentication

The client reads your API key from the AVALA_API_KEY environment variable by default:

bash
export AVALA_API_KEY="avk_your_api_key"

Or pass it explicitly:

typescript
const avala = new Avala({ apiKey: "avk_your_api_key" });

Delegated services may instead pass an OAuth access token issued specifically for the Avala API:

typescript
const avala = new Avala({ accessToken: apiAudienceAccessToken });

apiKey and accessToken are mutually exclusive. Do not pass an ID token or a token issued for another resource (for example, an MCP-server token); exchange it for an Avala API-audience token first.

Pagination

All .list() methods return a CursorPage with .items, .hasMore, and .nextCursor:

typescript
let page = await avala.datasets.list({ limit: 20 });

for (const dataset of page.items) {
  console.log(dataset.name);
}

if (page.hasMore) {
  const nextPage = await avala.datasets.list({ cursor: page.nextCursor });
}

Error Handling

typescript
import Avala, { AvalaError, NotFoundError, RateLimitError } from "@avala-ai/sdk";

try {
  const dataset = await avala.datasets.get("nonexistent");
} catch (e) {
  if (e instanceof NotFoundError) {
    console.log("Dataset not found");
  } else if (e instanceof RateLimitError) {
    console.log("Rate limited");
  } else if (e instanceof AvalaError) {
    console.log(`API error: ${e.message}`);
  }
}

Available Resources

ResourceMethodsDescription
avala.permissionsget()Discover the current credential's scopes, capabilities, and toolsets
avala.datasetslist(), get(uid)Browse and inspect datasets
avala.projectslist(), get(uid)Browse and inspect projects
avala.exportslist(), get(uid), create()Create and manage annotation exports
avala.taskslist(), get(uid)Browse tasks with project/status filters
avala.storageConfigslist(), create(), test(), delete()Manage cloud storage connections

MCP Server

The @avala-ai/mcp-server package provides an MCP server that lets AI assistants (Claude, etc.) interact with your Avala data.

bash
npm install -g @avala-ai/mcp-server
avala-mcp-server

See MCP Setup Guide for configuration details.

Development

This is a Bun workspace. To get started (Node 20+ and npm are also required):

bash
bun install --frozen-lockfile
bun run build
bun run test
bun run lint

bun run test includes bun run test:package: build both packages, pack them with npm, install the tarballs into a disposable directory outside the workspace, and initialize/list tools through the installed MCP executable using Node. This needs access to the public npm registry for third-party dependencies, but uses no real Avala credentials and makes no Avala API calls. The SDK and MCP versions and the MCP server's exact SDK dependency must match; npm does not rewrite workspace:* when packing.

Documentation

License

MIT - see LICENSE for details.

Similar modules

Browse Datasets