Airtable
Read and write access to Airtable database schemas, tables, and records.
Que pouvez-vous faire avec Airtable ?
- list_records
- search_records
- list_bases
- list_tables
- describe_table
- get_record
- create_record
- update_records
Installation
Ajoutez ceci à la configuration MCP de votre client (Claude Desktop : claude_desktop_config.json ; Cursor : .cursor/mcp.json ; VS Code et les autres utilisent la même forme « mcpServers »).
airtable-mcp-serverclaude mcp add airtable -e 'AIRTABLE_API_KEY=<your airtable_api_key>' -- npx -y airtable-mcp-server@1.14.0
{
"mcpServers": {
"airtable": {
"command": "npx",
"args": [
"-y",
"airtable-mcp-server@1.14.0"
],
"env": {
"AIRTABLE_API_KEY": "<your airtable_api_key>"
}
}
}
}
Variables d'environnement
AIRTABLE_API_KEYobligatoire 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.
docker.io/domdomegg/airtable-mcp-server:1.14.0claude mcp add airtable -e 'AIRTABLE_API_KEY=<your airtable_api_key>' -- docker run -i --rm docker.io/domdomegg/airtable-mcp-server:1.14.0
{
"mcpServers": {
"airtable": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"docker.io/domdomegg/airtable-mcp-server:1.14.0"
],
"env": {
"AIRTABLE_API_KEY": "<your airtable_api_key>"
}
}
}
}
Variables d'environnement
AIRTABLE_API_KEYobligatoire 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.
https://github.com/domdomegg/airtable-mcp-server/releases/download/v1.14.0/airtable-mcp-server.mcpbDocumentation
Tirée du README du projet sur GitHub, actualisée chaque semaine. Les liens ouvrent GitHub.
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
- list_records
- Lists records from a specified Airtable table
- Input parameters:
baseId(string, required): The ID of the Airtable basetableId(string, required): The ID of the table to querymaxRecords(number, optional): Maximum number of records to return. Defaults to 100.filterByFormula(string, optional): Airtable formula to filter records
- search_records
- Search for records containing specific text
- Input parameters:
baseId(string, required): The ID of the Airtable basetableId(string, required): The ID of the table to querysearchTerm(string, required): Text to search for in recordsfieldIds(array, optional): Specific field IDs to search in. If not provided, searches all text-based fields.maxRecords(number, optional): Maximum number of records to return. Defaults to 100.
- list_bases
- Lists all accessible Airtable bases
- No input parameters required
- Returns base ID, name, and permission level
- list_tables
- Lists all tables in a specific base
- Input parameters:
baseId(string, required): The ID of the Airtable basedetailLevel(string, optional): The amount of detail to get about the tables (tableIdentifiersOnly,identifiersOnly, orfull)
- Returns table ID, name, description, fields, and views (to the given
detailLevel)
- describe_table
- Gets detailed information about a specific table
- Input parameters:
baseId(string, required): The ID of the Airtable basetableId(string, required): The ID of the table to describedetailLevel(string, optional): The amount of detail to get about the table (tableIdentifiersOnly,identifiersOnly, orfull)
- Returns the same format as list_tables but for a single table
- Useful for getting details about a specific table without fetching information about all tables in the base
- get_record
- Gets a specific record by ID
- Input parameters:
baseId(string, required): The ID of the Airtable basetableId(string, required): The ID of the tablerecordId(string, required): The ID of the record to retrieve
- create_record
- Creates a new record in a table
- Input parameters:
baseId(string, required): The ID of the Airtable basetableId(string, required): The ID of the tablefields(object, required): The fields and values for the new record
- update_records
- Updates one or more records in a table
- Input parameters:
baseId(string, required): The ID of the Airtable basetableId(string, required): The ID of the tablerecords(array, required): Array of objects containing record ID and fields to update
- delete_records
- Deletes one or more records from a table
- Input parameters:
baseId(string, required): The ID of the Airtable basetableId(string, required): The ID of the tablerecordIds(array, required): Array of record IDs to delete
- create_table
- Creates a new table in a base
- Input parameters:
baseId(string, required): The ID of the Airtable basename(string, required): Name of the new tabledescription(string, optional): Description of the tablefields(array, required): Array of field definitions (name, type, description, options)
- update_table
- Updates a table's name or description
- Input parameters:
baseId(string, required): The ID of the Airtable basetableId(string, required): The ID of the tablename(string, optional): New name for the tabledescription(string, optional): New description for the table
- create_field
- Creates a new field in a table
- Input parameters:
baseId(string, required): The ID of the Airtable basetableId(string, required): The ID of the tablename(string, required): Name of the new fieldtype(string, required): Type of the fielddescription(string, optional): Description of the fieldoptions(object, optional): Field-specific options
- update_field
- Updates a field's name or description
- Input parameters:
baseId(string, required): The ID of the Airtable basetableId(string, required): The ID of the tablefieldId(string, required): The ID of the fieldname(string, optional): New name for the fielddescription(string, optional): New description for the field
- create_comment
- Creates a comment on a record
- Input parameters:
baseId(string, required): The ID of the Airtable basetableId(string, required): The ID of the tablerecordId(string, required): The ID of the recordtext(string, required): The comment textparentCommentId(string, optional): Parent comment ID for threaded replies
- Returns the created comment with ID, author, creation time, and text
- list_comments
- Lists comments on a record
- Input parameters:
baseId(string, required): The ID of the Airtable basetableId(string, required): The ID of the tablerecordId(string, required): The ID of the recordpageSize(number, optional): Number of comments to return (max 100, default 100)offset(string, optional): Pagination offset for retrieving additional comments
- Returns comments array with author, text, timestamps, reactions, and mentions
- Comments are returned from newest to oldest
HTTP Transport
The server can also run in HTTP mode for use with remote MCP clients:
MCP_TRANSPORT=http PORT=3000 npx airtable-mcp-server
This starts a stateless HTTP server at http://localhost:3000/mcp.
[!WARNING] The HTTP transport has no built-in authentication, and binding to localhost or a private network is not a security boundary against browsers: a malicious website can use DNS rebinding to make a visitor's browser send requests to
http://localhost:3000/mcpand invoke tools — including reading, writing and deleting records — using this server's Airtable token.Only run HTTP mode where untrusted callers (including browsers on the same machine or network) cannot reach
/mcpwithout authenticating. In practice that means putting it behind a reverse proxy or gateway that requires a credential a browser won't attach cross-origin, such as anAuthorizationheader.If you just want to use this server with an MCP client on the same machine, use the default stdio transport instead — it doesn't open a port at all.
Contributing
Pull requests are welcomed on GitHub! To get started:
- Install Git and Node.js
- Clone the repository
- Install dependencies with
npm install - Run
npm run testto run tests - Build with
npm run build- You can use
npm run build:watchto automatically build after editingsrc/index.ts. This means you can hit save, reload Claude Desktop (with Ctrl/Cmd+R), and the changes apply.
- You can use
Releases
Versions follow the semantic versioning spec.
To release:
- Use
npm version <major | minor | patch>to bump the version - Run
git push --follow-tagsto push with tags - Wait for GitHub Actions to publish to the NPM registry.
Questions fréquentes
Qu'est-ce que Airtable ?
Read and write access to Airtable database schemas, tables, and records.
Comment installer Airtable ?
Il s'exécute sur votre machine. Dans Claude Code : claude mcp add airtable -e 'AIRTABLE_API_KEY=<your airtable_api_key>' -- npx -y airtable-mcp-server@1.14.0. Pour les autres clients, collez la configuration JSON de cette page dans leurs réglages MCP.
Faut-il une clé API pour Airtable ?
Oui. Il attend AIRTABLE_API_KEY, à renseigner dans sa configuration.
Airtable est-il open source ?
Oui. Son code est sur GitHub sous licence MIT.
Qui maintient Airtable ?
Il est publié par domdomegg. AI.tn le référence sans le maintenir ni le recommander.
Issu du registre MCP officiel. Être listé n'est pas une recommandation : vérifiez le code et les permissions d'un serveur avant de lui donner accès à vos données.