# Airtable MCP server: setup, tools and read-only access

> Airtable's official MCP server at mcp.airtable.com: setup in Claude, ChatGPT, Claude Code and Cursor, its 40 tools, read-only scopes, limits and fixes.

Updated 2026-11-15 · https://upsy.ai/guides/airtable-mcp-server

## Short answer

Airtable runs an official MCP server (a connector that lets an AI agent use your Airtable) at `https://mcp.airtable.com/mcp`, on every plan. Add it to Claude, ChatGPT, Gemini, Claude Code, Cursor or any MCP client, sign in to Airtable, and choose which bases to share. The agent can then search and read records, create and update them, build tables, and draft interfaces and automations. In Claude Code:

```
claude mcp add --transport http airtable https://mcp.airtable.com/mcp
```

Then run `/mcp` to sign in. For read-only access, grant only the read scopes. Airtable's own controls cover most needs; add Airtable through Upsy if you want a different level for each agent, or Airtable next to your email and other apps.

## Airtable's MCP server

| | |
|---|---|
| Address | `https://mcp.airtable.com/mcp` (Streamable HTTP, no SSE) |
| Sign-in | OAuth with dynamic client registration, or a personal access token as `Authorization: Bearer` |
| Reach | The bases you share at sign-in, within your role in each |
| Plans | All, at no extra charge. Generally available since Airtable's Fall Release |
| Limits | Airtable's API limits: 5 requests a second per base, and monthly call caps on Free and Team |
| Admin | Enterprise admins can block MCP, or allowlist it by client ID |

Airtable's [MCP docs](https://airtable.com/developers/agents/mcp/getting-started) and [support article](https://support.airtable.com/articles/9897799762-using-the-airtable-mcp-server) have the details.

### Sharing, roles and read-only

- **Bases.** At sign-in you choose "Everything you have access to" or pick bases. Change it later under **Profile › Integrations › Third-party integrations**, where you can also remove the integration.
- **Your role decides writes.** Owners, Creators and Editors can change records through MCP; Commenters and Read-only users can only read.
- **Read-only connections.** Grant only `data.records:read`, `schema.bases:read`, `data.recordComments:read` and `workspacesAndBases:read`, and the agent can't create, update or delete records. With a personal access token, give it only those scopes.

### Connect it to your client

**Claude.** Add Airtable from Claude's connector directory and sign in.

**Claude Code.** Run the command above, or install Airtable's plugin with `claude plugin install airtable@claude-plugins-official`, then authenticate it under `/plugin`. To use a personal access token instead, add `--header "Authorization: Bearer ${AIRTABLE_PAT}"`.

**ChatGPT.** Use Airtable's app in ChatGPT, or add the address as a custom app in developer mode.

**Gemini.** At gemini.google.com/apps, turn Airtable on.

**Cursor.** Add `{"mcpServers":{"airtable":{"type":"http","url":"https://mcp.airtable.com/mcp"}}}` to `~/.cursor/mcp.json`, or use the install link in [Airtable's Cursor guide](https://airtable.com/developers/agents/mcp/cursor).

**Codex.** Run `codex mcp add airtable --url https://mcp.airtable.com/mcp`, then `codex mcp login airtable`. For a token, set `bearer_token_env_var` in the server's entry in `config.toml`.

**VS Code.** Add `{"servers":{"airtable":{"type":"http","url":"https://mcp.airtable.com/mcp"}}}` to `.vscode/mcp.json`.

**Scripts.** Airtable's CLI, `npm install -g @airtable/mcp-cli`, then `airtable-mcp configure`, calls the same server with a token.

### Its tools

Airtable lists 40 tools ([tool list](https://airtable.com/developers/agents/mcp/tools)):

| Area | Read | Change |
|---|---|---|
| Bases and tables | `list_bases`, `search_bases`, `list_workspaces`, `list_tables_for_base`, `get_table_schema`, `list_views_for_table` | `create_base`, `create_table`, `update_table`, `delete_table`, `create_field`, `update_field` |
| Records | `list_records_for_table`, `search_records`, `display_records_for_table`, `search_candidate_linked_records` | `create_records_for_table`, `update_records_for_table`, `delete_records_for_table`, `revert_action` |
| Interfaces and forms | `list_pages_for_base`, `list_records_for_page`, `get_record_for_page`, `describe_page_type`, `describe_page_element`, `get_form_schema` | `create_interface`, `create_page`, `delete_interface`, `delete_page`, `submit_form` |
| Automations | `list_automations`, `get_automation`, `get_create_automation_instructions`, `fetch_automation_input_data`, `list_external_accounts` | `create_automation`, `update_automation`, `delete_automation`, `test_automation_webhook_trigger` |

- **It can delete.** `delete_records_for_table` removes records by ID, and `delete_table` removes a table with its records, fields and views. No tool deletes a base or a field. `revert_action` undoes an earlier change.
- **10 records per request** for creating records.
- **Automations start as drafts.** You turn them on in Airtable yourself, and `delete_automation` only removes automations that are off.
- **Fields:** `update_field` can't change a field's type or its select options.
- **No comment tools,** although Airtable's overview mentions comments and its scopes include them.

### Where Airtable's server stops

- **Usage caps.** Free allows 1,000 API calls per workspace a month, and Team 100,000 before Airtable slows it down. MCP "will count against any existing API rate limits".
- **One level for every tool you use.** The scopes you grant apply to every client on that connection. Keeping one agent from deleting while another may needs separate connections, or your client's settings.
- **Interfaces in development** return a 403; MCP works with installed interfaces.

For one or two clients, Airtable's server, with its base picker and read-only scopes, is enough.

## Airtable MCP servers compared

| | Airtable's server | Upsy | domdomegg/airtable-mcp-server |
|---|---|---|---|
| Who runs it | Airtable | Upsy, on top of Airtable's server | You, on your machine |
| Sign-in | OAuth, or a personal access token | OAuth to Upsy; Upsy signs in to Airtable | A personal access token |
| Tools | 40 | Airtable's 40, listed on request | 16, including comments and attachment upload |
| Limits | Scopes and bases at sign-in | Read-only or picked tools, per agent, on top of Airtable's | The token's scopes |
| Accounts | One per connection | Up to 5 Airtable accounts | One per token |

### Community servers

- **[domdomegg/airtable-mcp-server](https://github.com/domdomegg/airtable-mcp-server)** is the popular open-source one, MIT licensed and maintained. It runs locally with a personal access token and adds comments and attachment uploads, which Airtable's server lacks.
- **[rashidazarang/airtable-mcp](https://github.com/rashidazarang/airtable-mcp)** has 42 tools, including webhooks, and a smaller `core` set for clients with tool limits.

## Upsy's Airtable MCP server

Upsy connects to Airtable's server with your Airtable sign-in, so the bases you share and your role in each still apply. It's the same address as Upsy's other apps, `https://upsy.ai/connect`.

What it adds:

- **A level per agent.** One Airtable sign-in, with **Read-only** for one agent and full access for another, enforced by Upsy.
- **No deletes.** With **Pick actions**, leave out `delete_records_for_table`, `delete_table` and the other delete tools, and keep the rest.
- **Airtable next to your other apps.** One server holds Airtable, Gmail, Slack, Calendar and more, so an agent can turn order emails into records or post a weekly summary to Slack.
- **Up to five Airtable accounts,** each with its own access.
- **History and alerts:** every Airtable tool an agent runs, listed under that agent.
- **Any client:** Claude, Claude Code, Cursor, Codex, ChatGPT, Grok, Muse, or anything with remote MCP and OAuth.

### Connect Airtable to Upsy

1. Go to [upsy.ai](https://upsy.ai) and click **Set up Upsy**.
2. Open **Apps**, click **Connect an app** and pick **Airtable**. On Airtable's page, choose the bases to share. For another account, click **Add account** next to Airtable.
3. On the **Assistants** page, click **Add assistant** and choose your client under **Which assistant?** for its exact steps.

### Add the server to your client

Signing in opens an Upsy page: tick Airtable, keep full access or pick **Read-only**, and click **Allow**. To leave out deletes, use **Pick actions** on the agent's page afterwards.

- **Claude Code:** `claude mcp add --transport http --scope user upsy https://upsy.ai/connect`, then `/mcp` to sign in.
- **Cursor:** add `{"mcpServers":{"upsy":{"url":"https://upsy.ai/connect"}}}` to `~/.cursor/mcp.json`, then click **Connect** next to upsy.
- **Codex:** `codex mcp add upsy --url https://upsy.ai/connect`, then `codex mcp login upsy`.
- **Claude and ChatGPT:** add `https://upsy.ai/connect` as a custom connector ([Claude](/guides/claude/custom-connector), [ChatGPT](/guides/chatgpt/custom-connector)).
- **Grok and Muse:** paste the setup prompt Upsy shows into a chat and approve the sign-in ([Grok](/guides/grok/airtable), [Muse](/guides/muse/airtable)).

Server details, such as OAuth endpoints and token lifetimes, are in the [Gmail MCP server guide](/guides/gmail-mcp-server#server-details); they're the same for Airtable.

### Check that it works

> Using Upsy, list my Airtable bases, then show the first five records of the main table in the first one.

The agent should name your shared bases, then list records. The calls show in Upsy's **History** under that agent.

## Prompts to try

- "In my CRM base, which leads haven't been contacted in 30 days? Draft a short check-in for each."
- "Add these receipts to my Expenses table: date, shop, amount and category."
- "Find my order confirmations in Gmail from this month and add each one to my Purchases table."
- "Create a draft automation that emails me when a record's Status changes to Done."
- "Add a Priority field to my Tasks table with High, Medium and Low."

## Troubleshooting

### The agent can't find any bases

You didn't share the base at sign-in, or an Enterprise admin blocks MCP. Add the base under **Profile › Integrations › Third-party integrations**, or reconnect and pick it. If your organization's bases are missing, ask an admin.

### Airtable says the integration is blocked

Your Enterprise admin restricts third-party integrations. They allow it under **Admin Panel › Settings › Integrations & development › Third party integration allowlist** with your client's ID. A **Block MCP access** setting overrides the allowlist.

### `INVALID_PERMISSIONS_OR_MODEL_NOT_FOUND`

Your role in the base, or the token's scopes, don't allow the call, or the ID is wrong. Check your access to that base, and the scopes you granted.

### The agent can read but not change records

You're a Commenter or Read-only user in that base, or you granted only read scopes. Ask for Editor access, or reconnect with write scopes.

### Only 10 records were added

Airtable creates at most 10 records per request. Ask the agent to continue in batches of 10.

### `RATE_LIMIT_REACHED`

The base got more than 5 requests a second. Airtable asks you to wait 30 seconds. On Free, the monthly cap of 1,000 calls can also run out.

### An interface returns a 403

It's still in development. Point the agent at the installed interface.

### "The user hasn't allowed you to use Airtable's …"

That's Upsy refusing a tool outside the agent's level, such as `delete_records_for_table` when you left it out. Change Airtable's level on the agent's page in Upsy.

## Security and privacy

- **Every connection acts as you,** in the bases you shared, within your role. Share only the bases an agent needs.
- **Prefer read scopes** for agents that only report, and check your client's approval prompts before deletes.
- **Personal access tokens** act with the scopes and bases you gave them until you revoke them at airtable.com/create/tokens. Keep them out of shared config files.
- **Prompt injection.** A record or form submission can carry instructions aimed at your agent. Give agents that read public form data read-only access.
- **Through Upsy,** agents never get your Airtable token: they call Upsy, and Upsy calls Airtable. Upsy emails you when one agent reads 100 or more items in 10 minutes or deletes 50 or more, and when a new agent or app connects.

## FAQ

### Is there an official Airtable MCP server?

Yes. Airtable hosts it at `https://mcp.airtable.com/mcp`, available to all users on all plans.

### Is the Airtable MCP server free?

There's no extra charge for it. Its calls count against Airtable's normal API limits, which on Free are 1,000 calls per workspace a month.

### Can I use a personal access token with it?

Yes. Send it as `Authorization: Bearer`, with only the scopes and bases you want the agent to have.

### Can I make the Airtable MCP server read-only?

Yes. Grant only the read scopes at sign-in, or give your token only read scopes. Through Upsy, set the agent to Read-only.

### Can the Airtable MCP server delete records?

Yes, with `delete_records_for_table`, and whole tables with `delete_table`. It can't delete bases or fields.

### How many tools does the Airtable MCP server have?

40 in Airtable's tool list, covering bases, tables, records, interfaces, forms and automations.

### Can Airtable MCP create automations?

Yes, as drafts. You review and turn them on in Airtable. Automations with a Script step can't be created this way.

---

Upsy connects personal AI assistants (Muse, Grok, ChatGPT, Claude, Cursor, Claude Code, Codex, Devin) to your Gmail, Google Calendar, Google Drive, Slack, Notion and other apps through one MCP server, with a shared memory, files and a cloud browser signed in to your sites. You choose what each assistant may do in each app, see everything it did, and turn it off in one click. Upsy is free. To add Upsy to an assistant, add a remote MCP server (Streamable HTTP) named Upsy at https://upsy.ai/connect. It signs in with OAuth; there is no API key.
