Airtable MCP server
Last verified: 2026-09
Read and write Airtable bases.
Community Databases & data Needs a secret Claude Desktop, Cursor, Windsurf, Claude Code, VS Code
What it does
CRUD on Airtable bases: list, search, get, create, update, delete records. Needs a PAT that can see those bases.
It sits in Databases & data: A database MCP is SQL or an API with your credentials.
Good for
- list_records on one table with maxRecords of 10.
- search_records with a filterByFormula you already know.
- Create a record in a test base, not the customer CRM base.
- Read a content calendar the team already keeps in Airtable.
Tools
- list_records / search_records — Read a table, optional filterByFormula.
- get / create / update / delete records — Single-record writes.
Config (Claude Desktop / Cursor / Windsurf)
Paste the JSON below. Same mcpServers shape. Replace placeholder paths and secrets.
Windows paths look like C:\\Users\\you\\project, not /path/to.
Host-side steps →
Claude Desktop
| OS | Config file |
|---|---|
| macOS | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Windows | %APPDATA%\Claude\claude_desktop_config.json
(usually C:\Users\<you>\AppData\Roaming\Claude\) |
| Linux | ~/.config/Claude/claude_desktop_config.json |
Cursor
| Scope | macOS / Linux | Windows |
|---|---|---|
| This project | .cursor/mcp.json in the repo root | |
| This user | ~/.cursor/mcp.json |
%USERPROFILE%\.cursor\mcp.json |
Windsurf
| OS | Config file |
|---|---|
| macOS / Linux | ~/.codeium/windsurf/mcp_config.json |
| Windows | %USERPROFILE%\.codeium\windsurf\mcp_config.json |
{
"mcpServers": {
"airtable": {
"command": "npx",
"args": [
"-y",
"airtable-mcp-server"
],
"env": {
"AIRTABLE_API_KEY": "pat..."
}
}
}
}
Windsurf remote MCP: use serverUrl instead of url if the block below is HTTP.
One-liner: npx -y airtable-mcp-server
Secrets it wants: AIRTABLE_API_KEY
How to get started
- Create an Airtable PAT with data.records:read on one base. Add write scopes only if you want them.
- Ask it to list_records with a maxRecords of 10.
- Keep the baseId/tableId out of chat logs if the base is customer data.
Access risk
delete records is real. A PAT with schema scopes can change the base itself.
When to skip it
Skip it for a real database (Postgres) or for Notion if that is where the table lives.
Instead: Notion, PostgreSQL, Google Maps.
Vs alternatives
| Server | Official? | Needs a secret? | Best for |
|---|---|---|---|
| Airtable | No | Yes | Read and write Airtable bases. |
| Notion | No | Yes | Search and update Notion pages. |
| PostgreSQL | Yes | Yes | Run SQL against a Postgres database. |
| Google Maps | Yes | Yes | Geocode and place search via Google Maps. |
More in Databases & data
FAQ
Which scopes?
A PAT with data.records:read on one base. Add write only if you want create/update/delete.
Can it change the schema?
If the PAT has schema scopes, yes. Keep those off.
Airtable or Notion?
Airtable if the data is a grid/CRM-ish base. Notion if it is pages.
Is delete real?
Yes. delete records removes rows.