Provides AI assistants with direct access to Airtable bases, allowing them to read schemas, query records, and interact with your Airtable data. Supports listing bases, retrieving table structures, and searching through records to help automate workflows and answer questions about your organized data.
10K+
16 Tools
Version 4.43 or later needs to be installed to add the server automatically
Use cases
About
Provides AI assistants with direct access to Airtable bases, allowing them to read schemas, query records, and interact with your Airtable data. Supports listing bases, retrieving table structures, and searching through records to help automate workflows and answer questions about your organized data.
| Attribute | Details |
|---|---|
| Docker Image | mcp/airtable-mcp-server |
| Author | domdomegg |
| Repository | https://github.com/domdomegg/airtable-mcp-server |
| Attribute | Details |
|---|---|
| Dockerfile | https://github.com/domdomegg/airtable-mcp-server/blob/2a5896d0891d13558e1313155b177fc0a4bc95d6/Dockerfile |
| Commit | 2a5896d0891d13558e1313155b177fc0a4bc95d6 |
| Docker Image built by | Docker Inc. |
| Docker Scout Health Score | |
| Verify Signature | COSIGN_REPOSITORY=mcp/signatures cosign verify mcp/airtable-mcp-server --key https://raw.githubusercontent.com/docker/keyring/refs/heads/main/public/mcp/latest.pub |
| Licence | MIT License |
| Tools provided by this Server | Short Description |
|---|---|
create_comment | Create a comment on a record |
create_field | Create a new field in a table |
create_record | Create a new record in a table |
create_table | Create a new table in a base |
delete_records | Delete records from a table |
describe_table | Get detailed information about a specific table |
get_record | Get a specific record by ID |
list_bases | List all accessible Airtable bases |
list_comments | List comments on a record |
list_records | List records from a table |
list_tables | List all tables in a specific base |
search_records | Search for records containing specific text |
update_field | Update a field's name or description |
update_records | Update up to 10 records in a table |
update_table | Update a table's name or description |
upload_attachment | Upload a file directly to an attachment field on an existing record using Airtable's upload API. |
create_commentCreate a comment on a record
| Parameters | Type | Description |
|---|---|---|
baseId | string | The ID of the base |
recordId | string | The ID of the record |
tableId | string | The ID or name of the table |
text | string | The comment text |
parentCommentId | stringoptional | Optional parent comment ID for threaded replies |
create_fieldCreate a new field in a table
| Parameters | Type | Description |
|---|---|---|
baseId | string | The ID of the base |
nested | object | |
tableId | string | The ID or name of the table |
create_recordCreate a new record in a table
| Parameters | Type | Description |
|---|---|---|
baseId | string | The ID of the base |
fields | object | The fields for the new record |
tableId | string | The ID or name of the table |
create_tableCreate a new table in a base
| Parameters | Type | Description |
|---|---|---|
baseId | string | The ID of the base |
fields | array | Array of field definitions |
name | string | The name of the table |
description | stringoptional | Optional description for the table |
delete_recordsDelete records from a table
| Parameters | Type | Description |
|---|---|---|
baseId | string | The ID of the base |
recordIds | array | Array of record IDs to delete |
tableId | string | The ID or name of the table |
This tool may perform destructive updates.
describe_tableGet detailed information about a specific table
| Parameters | Type | Description |
|---|---|---|
baseId | string | The ID of the base |
tableId | string | The ID or name of the table |
detailLevel | stringoptional | Detail level for table information: |
Note for LLMs: To optimize context window usage, request the minimum detail level needed:
If you only need detailed information on a few tables in a base with many complex tables, it might be more efficient for you to use list_tables with tableIdentifiersOnly, then describe_table with full on the specific tables you want.
This tool is read-only. It does not modify its environment.
get_recordGet a specific record by ID
| Parameters | Type | Description |
|---|---|---|
baseId | string | The ID of the base |
recordId | string | The ID of the record |
tableId | string | The ID or name of the table |
This tool is read-only. It does not modify its environment.
list_basesList all accessible Airtable bases
list_commentsList comments on a record
| Parameters | Type | Description |
|---|---|---|
baseId | string | The ID of the base |
recordId | string | The ID of the record |
tableId | string | The ID or name of the table |
offset | stringoptional | Offset for pagination |
pageSize | numberoptional | Number of comments to return (max 100, default 100) |
This tool is read-only. It does not modify its environment.
list_recordsList records from a table
| Parameters | Type | Description |
|---|---|---|
baseId | string | The ID of the base |
tableId | string | The ID or name of the table |
filterByFormula | stringoptional | A formula used to filter records |
maxRecords | numberoptional | The maximum total number of records that will be returned |
sort | arrayoptional | A list of sort objects that specifies how the records will be ordered |
view | stringoptional | The name or ID of a view in the table |
This tool is read-only. It does not modify its environment.
list_tablesList all tables in a specific base
| Parameters | Type | Description |
|---|---|---|
baseId | string | The ID of the base |
detailLevel | stringoptional | Detail level for table information: |
Note for LLMs: To optimize context window usage, request the minimum detail level needed:
If you only need detailed information on a few tables in a base with many complex tables, it might be more efficient for you to use list_tables with tableIdentifiersOnly, then describe_table with full on the specific tables you want.
This tool is read-only. It does not modify its environment.
search_recordsSearch for records containing specific text
| Parameters | Type | Description |
|---|---|---|
baseId | string | The ID of the base |
searchTerm | string | The text to search for |
tableId | string | The ID or name of the table |
fieldIds | arrayoptional | Optional array of field IDs to search in |
maxRecords | numberoptional | The maximum total number of records that will be returned |
view | stringoptional | The name or ID of a view in the table |
This tool is read-only. It does not modify its environment.
update_fieldUpdate a field's name or description
| Parameters | Type | Description |
|---|---|---|
baseId | string | The ID of the base |
fieldId | string | The ID of the field |
tableId | string | The ID or name of the table |
description | stringoptional | New description for the field |
name | stringoptional | New name for the field |
This tool may perform destructive updates.
update_recordsUpdate up to 10 records in a table
| Parameters | Type | Description |
|---|---|---|
baseId | string | The ID of the base |
records | array | Array of records to update (max 10) |
tableId | string | The ID or name of the table |
This tool may perform destructive updates.
update_tableUpdate a table's name or description
| Parameters | Type | Description |
|---|---|---|
baseId | string | The ID of the base |
tableId | string | The ID or name of the table |
description | stringoptional | New description for the table |
name | stringoptional | New name for the table |
This tool may perform destructive updates.
upload_attachmentUpload a file directly to an attachment field on an existing record using Airtable's upload API. Supports files up to 5 MB. For larger files, use create_record or update_records with a public URL. The record must already exist.
| Parameters | Type | Description |
|---|---|---|
attachmentFieldIdOrName | string | The ID or name of the attachment field (e.g. fldXXXXXXXXXXXXXX or "Images") |
baseId | string | The ID of the base |
contentType | string | MIME type of the file (e.g. "image/jpeg", "image/png", "application/pdf") |
file | string | Raw base64-encoded file content (no data URL prefix) |
filename | string | Filename for the attachment (e.g. "image.jpg") |
recordId | string | The ID of the existing record (e.g. recXXXXXXXXXXXXXX) |
{
"mcpServers": {
"airtable-mcp-server": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"NODE_ENV",
"-e",
"AIRTABLE_API_KEY",
"mcp/airtable-mcp-server"
],
"env": {
"NODE_ENV": "production",
"AIRTABLE_API_KEY": "patABC123.def456ghi789jkl012mno345pqr678stu901vwx"
}
}
}
}