npm airtable-mcp-serverstdioMITupdated 28d ago
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.
Airtable 能做什么?
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.
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.
安装
把 Airtable 添加到你的客户端。选择你正在使用的那个。
claude mcp add airtable-mcp-server -- npx -y airtable-mcp-servercodex mcp add airtable-mcp-server -- npx -y airtable-mcp-serveramp mcp add airtable-mcp-server -- npx -y airtable-mcp-server{
"mcpServers": {
"airtable-mcp-server": {
"command": "npx",
"args": [
"-y",
"airtable-mcp-server"
]
}
}
}Add to `claude_desktop_config.json`, then restart Claude Desktop.
{
"mcpServers": {
"airtable-mcp-server": {
"command": "npx",
"args": [
"-y",
"airtable-mcp-server"
]
}
}
}Add to `~/.cursor/mcp.json`, or `.cursor/mcp.json` for a single project.
code --add-mcp '{"name":"airtable-mcp-server","command":"npx","args":["-y","airtable-mcp-server"]}'Or add the block manually to `.vscode/mcp.json` under `servers`.
{
"mcpServers": {
"airtable-mcp-server": {
"command": "npx",
"args": [
"-y",
"airtable-mcp-server"
]
}
}
}Add to `~/.codeium/windsurf/mcp_config.json`.
{
"mcpServers": {
"airtable-mcp-server": {
"command": "npx",
"args": [
"-y",
"airtable-mcp-server"
]
}
}
}Add to `cline_mcp_settings.json` via the MCP Servers panel.
{
"mcpServers": {
"airtable-mcp-server": {
"command": "npx",
"args": [
"-y",
"airtable-mcp-server"
]
}
}
}Add to `~/.gemini/settings.json`.
{
"mcpServers": {
"airtable-mcp-server": {
"type": "local",
"command": "npx",
"args": [
"-y",
"airtable-mcp-server"
],
"tools": [
"*"
]
}
}
}Add to `~/.copilot/mcp-config.json`, or run `/mcp add` inside the CLI.
{
"context_servers": {
"airtable-mcp-server": {
"command": {
"path": "npx",
"args": [
"-y",
"airtable-mcp-server"
]
}
}
}
}Add to your Zed `settings.json`.
npx -y airtable-mcp-serverRun `goose configure`, choose **Add Extension → Command-line Extension**, and paste this command.
12 个工具
Airtable 向已连接的智能体提供 12 个工具。
- baseId
- (string, required): The ID of the Airtable base
- tableId
- (string, required): The ID of the table
- maxRecords
- (number, optional): Maximum number of records to return. Defaults to 100.
- filterByFormula
- (string, optional): Airtable formula to filter records
- searchTerm
- (string, required): Text to search for in records
- fieldIds
- (array, optional): Specific field IDs to search in. If not provided, searches all text-based fields.
- detailLevel
- (string, optional): The amount of detail to get about the table (`tableIdentifiersOnly`, `identifiersOnly`, or `full`)
- recordId
- (string, required): The ID of the record
- recordIds
- (array, required): Array of record IDs to delete
- fieldId
- (string, required): The ID of the field
- parentCommentId
- (string, optional): Parent comment ID for threaded replies
- pageSize
- (number, optional): Number of comments to return (max 100, default 100)
评分
83 / 100
优秀
- 文档25/25
- 维护25/25
- 可信度13/20
- 能力8/15
- 安装体验12/15
- Documents what it does and how to connect
- Has a resolvable package or endpoint
- Exposes at least one tool, prompt or resource
- README has substantive content
- Includes a code example
- Documents its configuration
- Mentions credentials or security posture
- Last commit 20 days ago
- Has a release history
- Repository is not archived
- Licensed MIT
- Namespace verified in the official MCP registry
- Claimed by its owner
- Published under an organisation
- 12 tool(s) documented
- Provides prompt templates
- Provides resources
- 12 documented install method(s)
- Published to a package registry
- Offers a hosted endpoint — no local install
版本历史
| 版本 | 发布于 |
|---|---|
| 1.14.0最新 | 2026年7月27日 |
| 1.13.0 | 2026年3月7日 |
| 1.12.0 | 2026年2月27日 |
| 1.11.0 | 2026年2月16日 |
| 1.9.6 | 2025年12月8日 |
| 1.9.5 | 2025年11月20日 |
| 1.9.4 | 2025年10月26日 |
| 1.7.3 | 2025年9月12日 |
| 1.7.2 | 2025年9月9日 |