Airtable MCP Server

Airtable MCP servers enable AI models to interact with Airtable bases, providing capabilities for base management, record operations, field configuration, and structured data automation.

GitHub starsnpm version

Overview

The Airtable MCP Server enables AI assistants to programmatically manage Airtable bases, tables, fields, and records through the Model Context Protocol. It provides a specialized implementation that builds complex tables in stages, minimizing failures common with multi-step operations.

Created by:

Developed by felores

Key Features

🗂️

Complete Base Management

Create, list, and manage Airtable bases, tables, and field configurations

📝

Intelligent Record Operations

Create, read, update, and delete records with filtering and search capabilities

🔄

Staged Table Construction

Build complex tables in stages to reduce complexity-related failures

🎨

Rich Field Type Support

Support for 14+ field types including text, email, numbers, dates, and selects

Available Tools

Quick Reference

ToolPurposeCategory
list_basesList all accessible Airtable basesBase Management
list_tablesList tables within a baseBase Management
create_tableCreate new table with fieldsBase Management
update_tableModify table name or descriptionBase Management
create_fieldAdd new field to tableField Management
update_fieldModify existing fieldField Management
list_recordsRetrieve records from tableRecord Operations
create_recordInsert new recordRecord Operations
update_recordModify existing recordRecord Operations
delete_recordRemove recordRecord Operations
search_recordsFind records matching criteriaRecord Operations
get_recordGet single record by IDRecord Operations

Detailed Usage

list_bases

Retrieve all Airtable bases accessible to the authenticated user.

use_mcp_tool({
  server_name: "airtable",
  tool_name: "list_bases",
  arguments: {}
});

Returns base IDs, names, and permission levels.

list_tables

List all tables within a specified Airtable base.

use_mcp_tool({
  server_name: "airtable",
  tool_name: "list_tables",
  arguments: {
    base_id: "appXXXXXXXXXXXXXX"
  }
});
create_table

Create a new table with specified fields in an Airtable base.

use_mcp_tool({
  server_name: "airtable",
  tool_name: "create_table",
  arguments: {
    base_id: "appXXXXXXXXXXXXXX",
    name: "Projects",
    description: "Project tracking table",
    fields: [
      {
        name: "Project Name",
        type: "singleLineText"
      },
      {
        name: "Status",
        type: "singleSelect",
        options: {
          choices: [
            { name: "Active" },
            { name: "Completed" }
          ]
        }
      }
    ]
  }
});

The staged construction approach reduces failures when creating complex tables.

update_table

Update a table's name or description.

use_mcp_tool({
  server_name: "airtable",
  tool_name: "update_table",
  arguments: {
    base_id: "appXXXXXXXXXXXXXX",
    table_id: "tblXXXXXXXXXXXXXX",
    name: "Updated Projects",
    description: "Updated description"
  }
});
create_field

Add a new field to an existing table.

use_mcp_tool({
  server_name: "airtable",
  tool_name: "create_field",
  arguments: {
    base_id: "appXXXXXXXXXXXXXX",
    table_id: "tblXXXXXXXXXXXXXX",
    name: "Due Date",
    type: "date",
    options: {
      dateFormat: {
        name: "us"
      }
    }
  }
});
list_records

Retrieve records from a table with optional filtering, sorting, and pagination.

use_mcp_tool({
  server_name: "airtable",
  tool_name: "list_records",
  arguments: {
    base_id: "appXXXXXXXXXXXXXX",
    table_id: "tblXXXXXXXXXXXXXX",
    view: "Grid view",
    maxRecords: 100
  }
});
create_record

Create a new record in a specified table.

use_mcp_tool({
  server_name: "airtable",
  tool_name: "create_record",
  arguments: {
    base_id: "appXXXXXXXXXXXXXX",
    table_id: "tblXXXXXXXXXXXXXX",
    fields: {
      "Project Name": "New Website",
      "Status": "Active",
      "Due Date": "2025-12-31"
    }
  }
});
update_record

Modify an existing record's fields.

use_mcp_tool({
  server_name: "airtable",
  tool_name: "update_record",
  arguments: {
    base_id: "appXXXXXXXXXXXXXX",
    table_id: "tblXXXXXXXXXXXXXX",
    record_id: "recXXXXXXXXXXXXXX",
    fields: {
      "Status": "Completed"
    }
  }
});
delete_record

Permanently delete a record from a table.

use_mcp_tool({
  server_name: "airtable",
  tool_name: "delete_record",
  arguments: {
    base_id: "appXXXXXXXXXXXXXX",
    table_id: "tblXXXXXXXXXXXXXX",
    record_id: "recXXXXXXXXXXXXXX"
  }
});

This action cannot be undone.

search_records

Find records matching specific criteria using Airtable formulas.

use_mcp_tool({
  server_name: "airtable",
  tool_name: "search_records",
  arguments: {
    base_id: "appXXXXXXXXXXXXXX",
    table_id: "tblXXXXXXXXXXXXXX",
    filterByFormula: "{Status} = 'Active'"
  }
});
get_record

Retrieve a single record by its unique ID.

use_mcp_tool({
  server_name: "airtable",
  tool_name: "get_record",
  arguments: {
    base_id: "appXXXXXXXXXXXXXX",
    table_id: "tblXXXXXXXXXXXXXX",
    record_id: "recXXXXXXXXXXXXXX"
  }
});

Supported Field Types

The Airtable MCP server supports all standard Airtable field types:

  • Text: singleLineText, multilineText
  • Contact: email, phoneNumber, url
  • Numeric: number, currency, percent, duration
  • Date & Time: date, dateTime
  • Selection: singleSelect, multipleSelects
  • References: multipleRecordLinks, multipleLookupValues
  • Advanced: checkbox, rating, barcode, button

Installation

Prerequisites

  1. Node.js 18+ with npm installed
  2. Airtable Personal Access Token with required scopes:
    • data.records:read and data.records:write
    • schema.bases:read and schema.bases:write

Get Your API Token

  1. Visit Airtable Personal Access Tokens
  2. Click "Create token"
  3. Name your token (e.g., "MCP Server")
  4. Add required scopes: data.records:read, data.records:write, schema.bases:read, schema.bases:write
  5. Add access to specific bases
  6. Click "Create token" and copy the token

Configuration

{
  "mcpServers": {
    "airtable": {
      "command": "npx",
      "args": [
        "-y",
        "@felores/airtable-mcp-server"
      ],
      "env": {
        "AIRTABLE_API_KEY": "your_personal_access_token_here"
      }
    }
  }
}

Keep Token Secure:

Your Airtable Personal Access Token is sensitive. Never share it publicly or commit it to version control.

Common Use Cases

Project Management

Automate project tracking and status updates:

"Create a new project record in Airtable with name 'Website Redesign',
status 'Active', and assign it to the Design team"

CRM Management

Manage contacts and relationships:

"Add a new contact to the CRM base: John Smith, email [email protected],
company Acme Corp, and tag as 'Prospect'"

Content Calendar

Organize content creation workflows:

"List all blog posts scheduled for next month from the Content Calendar table,
filtered by status 'In Progress'"

Sources