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

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 and support article 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.

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):

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 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 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 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, ChatGPT).
  • Grok and Muse: paste the setup prompt Upsy shows into a chat and approve the sign-in (Grok, Muse).

Server details, such as OAuth endpoints and token lifetimes, are in the Gmail MCP server guide; 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.

Related guides