MCP Server

The @air/mcp package is an MCP server that connects any MCP-compatible AI client to your Air workspace. It enables asset search, board management, tagging, custom fields, and more — directly from tools like Claude, Cursor, Windsurf, and ChatGPT.

Supports both STDIO (direct process) and HTTP/SSE (localhost server) transports.

Prerequisites

  • Node.js 18+
  • An Air API key and workspace ID — see Getting Started for details on obtaining credentials

Setup

Claude Desktop

Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

{
  "mcpServers": {
    "air": {
      "command": "npx",
      "args": ["-y", "@air/mcp"],
      "env": {
        "AIR_API_KEY": "your-api-key",
        "AIR_WORKSPACE_ID": "your-workspace-id"
      }
    }
  }
}

nvm users: Claude Desktop doesn't load your shell profile, so it may use the wrong Node version. If you get engine errors, use the full path to a Node 20+ npx instead:

"command": "/Users/you/.nvm/versions/node/v20.19.4/bin/npx"

Find your path with nvm which 20 in a terminal.

See Claude Desktop MCP docs for more details.

Claude Code

claude mcp add air -t stdio -e AIR_API_KEY=your-api-key -e AIR_WORKSPACE_ID=your-workspace-id -- npx -y @air/mcp

See Claude Code MCP docs for more details.

Codex

Add to your Codex config (~/.codex/config.toml):

[mcp_servers.air]
command = "npx"
args = ["-y", "@air/mcp"]

[mcp_servers.air.env]
AIR_API_KEY = "your-api-key"
AIR_WORKSPACE_ID = "your-workspace-id"

Or add via the CLI:

codex mcp add air --env AIR_API_KEY=your-api-key --env AIR_WORKSPACE_ID=your-workspace-id -- npx -y @air/mcp

See Codex MCP docs for more details on configuring MCP servers in Codex.

Cursor

Add to .cursor/mcp.json in your project or ~/.cursor/mcp.json globally:

{
  "mcpServers": {
    "air": {
      "command": "npx",
      "args": ["-y", "@air/mcp"],
      "env": {
        "AIR_API_KEY": "your-api-key",
        "AIR_WORKSPACE_ID": "your-workspace-id"
      }
    }
  }
}

See Cursor MCP docs for more details.

Windsurf

Add to ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "air": {
      "command": "npx",
      "args": ["-y", "@air/mcp"],
      "env": {
        "AIR_API_KEY": "your-api-key",
        "AIR_WORKSPACE_ID": "your-workspace-id"
      }
    }
  }
}

See Windsurf MCP docs for more details.

VS Code (GitHub Copilot)

Add to .vscode/mcp.json in your project, or open the user-level config via the MCP: Open User Configuration command:

{
  "servers": {
    "air": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@air/mcp"],
      "env": {
        "AIR_API_KEY": "your-api-key",
        "AIR_WORKSPACE_ID": "your-workspace-id"
      }
    }
  }
}

Make sure to use Copilot in Agent mode to access MCP tools. See VS Code MCP docs for more details.

Zed

Add to your Zed settings (~/.config/zed/settings.json):

{
  "context_servers": {
    "air": {
      "command": "npx",
      "args": ["-y", "@air/mcp"],
      "env": {
        "AIR_API_KEY": "your-api-key",
        "AIR_WORKSPACE_ID": "your-workspace-id"
      }
    }
  }
}

See Zed MCP docs for more details.

ChatGPT Desktop (HTTP/SSE)

ChatGPT desktop does not support STDIO MCP servers — it only supports MCP via HTTP. To connect it to a locally running Air MCP server:

  1. Install the package:
npm install @air/mcp
  1. Create a .env file in your project:
AIR_API_KEY=your-api-key
AIR_WORKSPACE_ID=your-workspace-id
  1. Start the HTTP server:
npx -y @air/mcp -- --http
  1. In ChatGPT, open Settings > Connectors > Add connector.
  2. Set the URL to:
http://localhost:3000/mcp
  1. Set authentication to None and save.

Note: ChatGPT MCP support requires Developer mode and is currently available on Windows and web. macOS support may be limited — see ChatGPT MCP docs for the latest.

Available tools

Assets

ToolDescription
list_assetsList assets with filters (board, tags, search, custom fields)
list_nested_assetsList all assets within a board and its nested sub-boards
get_assetGet detailed asset info including cover version and metadata
get_asset_download_urlGet a temporary download URL for an asset version
get_asset_boardsList all boards that contain an asset
get_asset_imageGet an inline image preview (base64) of an asset
rename_assetRename an asset's cover version title
add_tag_to_assetAdd a tag to an asset version
remove_tag_from_assetRemove a tag from an asset version
update_asset_custom_fieldSet a custom field value on an asset

Boards

ToolDescription
list_boardsList boards, optionally filtered by name or parent
get_boardGet detailed board info
create_boardCreate a new board
add_asset_to_boardAdd assets to a board

Tags

ToolDescription
list_tagsList tags, optionally filtered by name
create_tagCreate a new tag

Custom Fields

ToolDescription
list_custom_fieldsList custom fields in the workspace
get_custom_fieldGet custom field details including type and possible values