domdomegg avatar

Airtable

domdomegg/airtable-mcp-server

The Airtable MCP Server provides read and write access to Airtable databases through the Model Context Protocol, enabling LLMs to inspect database schemas and perform CRUD operations on records. It exposes tools for querying and modifying Airtable bases after authenticating with a personal access token, solving the problem of integrating Airtable data directly into AI workflows without manual data transfer. The server supports multiple client implementations including Claude Desktop, Cursor, and Cline, with flexible installation options ranging from browser extensions to manual configuration.

GitHub stars
456
tools
18
auth
Secret needed
transport
STDIO
env var
1
last updated
Jul 27, 2026

Tools

18 tools

Public tool metadata for what this MCP can expose to an agent.

airtable_list_recordsList records from an Airtable table. Supports filtering with formulas, sorting, field selection, views, and pagination (max 100 per page). Use the offset token from the response to get the next page.9 params

List records from an Airtable table. Supports filtering with formulas, sorting, field selection, views, and pagination (max 100 per page). Use the offset token from the response to get the next page.

Parameters* required
base_idstring
Airtable base ID (e.g., "appXXXXXXXXXXXXXX")
fieldsarray
Array of field names to include in the response
filter_by_formulastring
Airtable formula to filter records (e.g., "{Status}='Active'")
max_recordsnumber
Maximum total records to return
offsetstring
Pagination token from previous response
page_sizenumber
Number of records per page (1-100, default: 100)
sortarray
Array of sort objects: [{"field": "Name", "direction": "asc"}]
table_id_or_namestring
Table ID (e.g., "tblXXX") or table name (e.g., "Tasks")
viewstring
View name or ID to use for pre-filtering
airtable_get_recordGet a single record by its ID. Returns the record with all fields.3 params

Get a single record by its ID. Returns the record with all fields.

Parameters* required
base_idstring
Airtable base ID
record_idstring
Record ID (e.g., "recXXXXXXXXXXXXXX")
table_id_or_namestring
Table ID or name
airtable_create_recordsCreate one or more records in a table (max 10 per request). Each record needs a "fields" object with field name-value pairs. Enable typecast to auto-convert values to the correct field type.4 params

Create one or more records in a table (max 10 per request). Each record needs a "fields" object with field name-value pairs. Enable typecast to auto-convert values to the correct field type.

Parameters* required
base_idstring
Airtable base ID
recordsarray
Array of record objects (max 10). Each: {"fields": {"Name": "value", "Status": "Open"}}
table_id_or_namestring
Table ID or name
typecastboolean
Auto-convert field values to correct type (default: false)
airtable_update_recordsUpdate specific fields in one or more records (PATCH — partial update, max 10 per request). Only specified fields are changed; other fields remain untouched.4 params

Update specific fields in one or more records (PATCH — partial update, max 10 per request). Only specified fields are changed; other fields remain untouched.

Parameters* required
base_idstring
Airtable base ID
recordsarray
Array of record objects (max 10). Each: {"id": "recXXX", "fields": {"Status": "Done"}}
table_id_or_namestring
Table ID or name
typecastboolean
Auto-convert field values to correct type (default: false)
airtable_delete_recordsDelete one or more records by their IDs (max 10 per request). This action is irreversible.3 params

Delete one or more records by their IDs (max 10 per request). This action is irreversible.

Parameters* required
base_idstring
Airtable base ID
record_idsarray
Array of record IDs to delete (max 10)
table_id_or_namestring
Table ID or name
airtable_upsert_recordsUpdate existing records or create new ones based on matching fields. Specify fields_to_merge_on to match existing records — matched records are updated, unmatched are created.5 params

Update existing records or create new ones based on matching fields. Specify fields_to_merge_on to match existing records — matched records are updated, unmatched are created.

Parameters* required
base_idstring
Airtable base ID
fields_to_merge_onarray
Field names to match existing records on (e.g., ["Email"])
recordsarray
Array of record objects. Each: {"fields": {"Email": "user@example.com", "Name": "John"}}
table_id_or_namestring
Table ID or name
typecastboolean
Auto-convert field values to correct type (default: false)
airtable_list_basesList all bases accessible to the authenticated user. Returns base ID, name, and permission level.1 params

List all bases accessible to the authenticated user. Returns base ID, name, and permission level.

Parameters* required
offsetstring
Pagination token from previous response
airtable_get_base_schemaGet the complete schema of a base — all tables with their fields (name, type, options) and views. Essential for understanding the data structure before querying.1 params

Get the complete schema of a base — all tables with their fields (name, type, options) and views. Essential for understanding the data structure before querying.

Parameters* required
base_idstring
Airtable base ID (e.g., "appXXXXXXXXXXXXXX")
airtable_create_baseCreate a new base in a workspace. Requires at least one table with at least one field.3 params

Create a new base in a workspace. Requires at least one table with at least one field.

Parameters* required
namestring
Name for the new base
tablesarray
Array of table definitions. Each: {"name": "Tasks", "fields": [{"name": "Name", "type": "singleLineText"}]}
workspace_idstring
Workspace ID (e.g., "wspXXXXXXXXXXXXXX")
airtable_create_tableCreate a new table in a base. Requires at least one field. Field types: singleLineText, multilineText, number, singleSelect, multipleSelects, date, checkbox, email, url, etc.4 params

Create a new table in a base. Requires at least one field. Field types: singleLineText, multilineText, number, singleSelect, multipleSelects, date, checkbox, email, url, etc.

Parameters* required
base_idstring
Airtable base ID
descriptionstring
Table description
fieldsarray
Array of field definitions. Each: {"name": "Status", "type": "singleSelect", "options": {"choices": [{"name": "Open"}]}}
namestring
Table name
airtable_update_tableUpdate a table name or description.4 params

Update a table name or description.

Parameters* required
base_idstring
Airtable base ID
descriptionstring
New table description
namestring
New table name
table_idstring
Table ID (e.g., "tblXXXXXXXXXXXXXX")
airtable_create_fieldAdd a new field to a table. Common types: singleLineText, multilineText, number, singleSelect, multipleSelects, date, dateTime, checkbox, email, url, multipleAttachments, multipleRecordLinks.6 params

Add a new field to a table. Common types: singleLineText, multilineText, number, singleSelect, multipleSelects, date, dateTime, checkbox, email, url, multipleAttachments, multipleRecordLinks.

Parameters* required
base_idstring
Airtable base ID
descriptionstring
Field description
namestring
Field name
optionsobject
Field options (e.g., for singleSelect: {"choices": [{"name": "High", "color": "redBright"}]})
table_idstring
Table ID
typestring
Field type (e.g., "singleLineText", "number", "singleSelect")
airtable_update_fieldUpdate a field name or description. Cannot change field type.5 params

Update a field name or description. Cannot change field type.

Parameters* required
base_idstring
Airtable base ID
descriptionstring
New field description
field_idstring
Field ID (e.g., "fldXXXXXXXXXXXXXX")
namestring
New field name
table_idstring
Table ID
airtable_create_webhookCreate a webhook to receive notifications when data changes in a base. Webhooks expire after 7 days — use airtable_refresh_webhook to extend. Returns a MAC secret for verifying payloads.3 params

Create a webhook to receive notifications when data changes in a base. Webhooks expire after 7 days — use airtable_refresh_webhook to extend. Returns a MAC secret for verifying payloads.

Parameters* required
base_idstring
Airtable base ID
notification_urlstring
HTTPS URL to receive webhook notifications
specificationobject
Webhook specification with filters (e.g., {"options": {"filters": {"dataTypes": ["tableData"], "recordChangeScope": "tblXXX"}}})
airtable_list_webhooksList all webhooks for a base. Shows webhook IDs, enabled status, notification URLs, and expiration times.1 params

List all webhooks for a base. Shows webhook IDs, enabled status, notification URLs, and expiration times.

Parameters* required
base_idstring
Airtable base ID
airtable_refresh_webhookExtend a webhook expiration time by 7 days from now. Webhooks expire after 7 days — call this periodically to keep them active.2 params

Extend a webhook expiration time by 7 days from now. Webhooks expire after 7 days — call this periodically to keep them active.

Parameters* required
base_idstring
Airtable base ID
webhook_idstring
Webhook ID (e.g., "achXXXXXXXXXXXXXX")
airtable_list_webhook_payloadsGet pending webhook notification payloads. Returns changed records, fields, and tables since the last cursor position.4 params

Get pending webhook notification payloads. Returns changed records, fields, and tables since the last cursor position.

Parameters* required
base_idstring
Airtable base ID
cursornumber
Cursor position from previous response for pagination
limitnumber
Number of payloads to return (1-100, default: 100)
webhook_idstring
Webhook ID
airtable_delete_webhookDelete a webhook. Stops all notifications for this webhook.2 params

Delete a webhook. Stops all notifications for this webhook.

Parameters* required
base_idstring
Airtable base ID
webhook_idstring
Webhook ID to delete

Sponsors

Configuration

AIRTABLE_API_KEY*secret

Airtable personal access token (e.g., pat123.abc123). Create at https://airtable.com/create/tokens/new with scopes: schema.bases:read, data.records:read, and optionally schema.bases:write and data.records:write.

Readme

airtable-mcp-server

A Model Context Protocol server that provides read and write access to Airtable databases. This server enables LLMs to inspect database schemas, then read and write records.

https://github.com/user-attachments/assets/c8285e76-d0ed-4018-94c7-20535db6c944

Installation

Follow the instructions on install-mcp, which generates the right config for your MCP client (Claude Code, Claude Desktop, Cursor, Cline, VS Code, and more).

You'll need an Airtable personal access token — create one here with scopes schema.bases:read and data.records:read (and optionally schema.bases:write, data.records:write, data.recordComments:read, data.recordComments:write), and access to the bases you want to use. It looks something like pat123.abc123 (but longer). Set it as AIRTABLE_API_KEY (replacing the placeholder in the generated config).

Components

Tools


View the full README on GitHub

Details

Repository
github.com/domdomegg/airtable-mcp-server
Website
github.com/domdomegg/airtable-mcp-server#readme
Categories
Databases, Documents & Knowledge
Package
airtable-mcp-server
Transport
STDIO
Auth
Required
Registry
MCP registry, active

More from domdomegg

Related Databases MCP servers

View all
1massive-com avatarMassive.commassive-com/mcp_massiveProvides access to Massive.com data via an MCP server with four composable tools and in-memory DataFrame storage for SQL queries and analytics.332stars
2slow-stack avatarMneme Memoryslow-stack/mnemeCross-session memory for AI coding agents via six tools; local-first SQLite store.211stars
3thomasxm avatarCrowdsentinel Mcp Serverthomasxm/crowdsentinels-ai-mcpAI threat hunting & incident response for Elasticsearch/OpenSearch with endpoint & network forensics0stars
4tuannvm avatarMcp Trinotuannvm/mcp-trinoMCP server for Trino distributed SQL query engine access109stars
5bintocher avatarMCP Supersetbintocher/mcp-supersetApache Superset MCP server — 135+ tools for dashboards, charts, datasets, SQL Lab, and security45stars
6spranab avatarSaga Mcpspranab/saga-mcpJira-like project tracker for AI agents with SQLite, full task hierarchy, and dashboard42stars