关于 airtable-mcp-server
airtable-mcp-server 是一个 MCP 服务,让 LLM 能够读取 Airtable 数据库的结构,并对记录进行读写。适合希望让 AI 系统直接操作 Airtable 基座的用户。支持 stdio 与 HTTP 两种传输方式。
主要功能
- 01列出基座、数据表与字段结构
- 02查询、搜索与获取记录
- 03创建、更新与删除记录
- 04创建与修改数据表和字段
- 05读取与创建记录评论
- 06支持 HTTP 传输模式
适用场景
- 01让 LLM 检查 Airtable 基座的表结构
- 02按条件筛选或搜索表中的记录
- 03通过 AI 助手批量更新或新增记录
MCP 相关
该项目是 MCP 服务,向 MCP 客户端暴露用于查询、写入和管理 Airtable 基座、数据表、记录与评论的工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
16收录的工具列表 · 更新于 3 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| sort | array | 否 | 用于指定记录排序方式的排序对象列表 |
| view | string | 否 | 表格中视图的名称或 ID |
| baseId | string | 是 | 基础的 ID |
| fields | array | 否 | 响应中要包含的字段名称或 ID 数组。省略此参数可返回所有字段,这通常是你需要的结果。仅当表格字段很多且你不需要其中大部分字段,并且已知确切的字段名称或 ID 时才设置此参数(例如,通过 describe_table 获取);猜测字段名称或 ID 会导致静默返回错误数据。 |
| tableId | string | 是 | 表格的 ID 或名称 |
| maxRecords | number | 否 | 返回的记录总数上限 |
| filterByFormula | string | 否 | 记录筛选公式 |
详细介绍
airtable-mcp-server
一个 Model Context Protocol 服务,可读写 Airtable 数据库。此服务可让大模型检查数据库架构,然后读取和写入记录。
https://github.com/user-attachments/assets/c8285e76-d0ed-4018-94c7-20535db6c944
安装
按照 install-mcp 上的说明操作,该工具会为你的 MCP 客户端(Claude Code、Claude Desktop、Cursor、Cline、VS Code 等)生成正确的配置。
你需要一个 Airtable 个人访问令牌——可在此处创建,并授予 schema.bases:read 和 data.records:read 权限范围(也可选择授予 schema.bases:write、data.records:write、data.recordComments:read、data.recordComments:write),同时需要拥有你要使用的 base 的访问权限。令牌格式类似 pat123.abc123(但会更长)。将其设为 AIRTABLE_API_KEY(替换生成配置中的占位符)。
组件
工具
-
list_records
- 列出指定 Airtable 表中的记录
- 输入参数:
baseId(字符串,必需):Airtable base 的 IDtableId(字符串,必需):要查询的表的 IDmaxRecords(数字,可选):返回记录的最大数量。默认值为 100。filterByFormula(字符串,可选):用于筛选记录的 Airtable 公式
-
search_records
- 搜索包含指定文本的记录
- 输入参数:
baseId(字符串,必需):Airtable base 的 IDtableId(字符串,必需):要查询的表的 IDsearchTerm(字符串,必需):要在记录中搜索的文本fieldIds(数组,可选):要搜索的特定字段 ID。如果未提供,则搜索所有基于文本的字段。maxRecords(数字,可选):返回记录的最大数量。默认值为 100。
-
list_bases
- 列出所有可访问的 Airtable base
- 无需输入参数
- 返回 base ID、名称和权限级别
-
list_tables
- 列出指定 base 中的所有表
- 输入参数:
baseId(字符串,必需):Airtable base 的 IDdetailLevel(字符串,可选):要获取的表信息详细程度(tableIdentifiersOnly、identifiersOnly或full)
- 根据指定的
detailLevel返回表 ID、名称、描述、字段和视图
-
describe_table
- 获取指定表的详细信息
- 输入参数:
baseId(字符串,必需):Airtable base 的 IDtableId(字符串,必需):要描述的表的 IDdetailLevel(字符串,可选):要获取的表信息详细程度(tableIdentifiersOnly、identifiersOnly或full)
- 返回格式与 list_tables 相同,但仅针对单个表
- 适用于获取指定表的详细信息,而无需获取该 base 中所有表的信息
-
get_record
- 根据 ID 获取指定记录
- 输入参数:
baseId(字符串,必需):Airtable base 的 IDtableId(字符串,必需):表的 IDrecordId(字符串,必需):要获取的记录的 ID
-
create_record
- 在表中创建新记录
- 输入参数:
baseId(字符串,必需):Airtable base 的 IDtableId(字符串,必需):表的 IDfields(对象,必需):新记录的字段和值
-
update_records
- 更新表中的一条或多条记录
- 输入参数:
baseId(字符串,必需):Airtable base 的 IDtableId(字符串,必需):表的 IDrecords(数组,必需):包含记录 ID 和待更新字段的对象数组
-
delete_records
- 从表中删除一条或多条记录
- 输入参数:
baseId(string, required):Airtable base 的 IDtableId(string, required):表的 IDrecordIds(array, required):要删除的记录 ID 数组
-
create_table
- 在 base 中创建新表
- 输入参数:
baseId(string, required):Airtable base 的 IDname(string, required):新表的名称description(string, optional):表的描述fields(array, required):字段定义数组(名称、类型、描述、选项)
-
update_table
- 更新表的名称或描述
- 输入参数:
baseId(string, required):Airtable base 的 IDtableId(string, required):表的 IDname(string, optional):表的新名称description(string, optional):表的新描述
-
create_field
- 在表中创建新字段
- 输入参数:
baseId(string, required):Airtable base 的 IDtableId(string, required):表的 IDname(string, required):新字段的名称type(string, required):字段类型description(string, optional):字段描述options(object, optional):字段专属选项
-
update_field
- 更新字段的名称或描述
- 输入参数:
baseId(string, required):Airtable base 的 IDtableId(string, required):表的 IDfieldId(string, required):字段的 IDname(string, optional):字段的新名称description(string, optional):字段的新描述
-
create_comment
- 在记录上创建评论
- 输入参数:
baseId(string, required):Airtable base 的 IDtableId(string, required):表的 IDrecordId(string, required):记录的 IDtext(string, required):评论内容parentCommentId(string, optional):用于串联回复的父评论 ID
- 返回新建的评论,包含 ID、作者、创建时间和内容
-
list_comments
- 列出记录上的评论
- 输入参数:
baseId(string, required):Airtable base 的 IDtableId(string, required):表的 IDrecordId(string, required):记录的 IDpageSize(number, optional):要返回的评论数量(最多 100 条,默认 100 条)offset(string, optional):用于获取更多评论的分页偏移量
- 返回评论数组,包含作者、内容、时间戳、反应和提及
- 评论按从新到旧的顺序返回
HTTP 传输
服务器也可以在 HTTP 模式下运行,以供远程 MCP 客户端使用:
MCP_TRANSPORT=http PORT=3000 npx airtable-mcp-server
这会在 http://localhost:3000/mcp 启动一个无状态 HTTP 服务器。
警告
HTTP 传输没有内置身份验证;绑定到 localhost 或专用网络也不能作为防范浏览器的安全边界:恶意网站可以利用 DNS 重绑定 让访问者的浏览器向
http://localhost:3000/mcp发送请求并调用工具,包括读取、写入和删除记录, 而这些操作会使用此服务器的 Airtable 令牌。只有在不受信任的调用方(包括同一台机器或网络上的浏览器)无法在未经身份验证的情况下访问
/mcp时,才运行 HTTP 模式。 实际上,这意味着要将其置于反向代理或网关之后,并要求提供浏览器不会跨源附加的凭据, 例如Authorization标头。如果你只想在同一台机器上通过 MCP 客户端使用此服务器,请改用默认的 stdio 传输——它完全不会开放端口。
贡献
欢迎在 GitHub 上提交拉取请求!开始贡献:
- 安装 Git 和 Node.js
- 克隆仓库
- 使用
npm install安装依赖 - 运行
npm run test执行测试 - 使用
npm run build构建
- 你可以使用
npm run build:watch,在编辑src/index.ts后自动构建。这样,你只需保存并重新加载 Claude Desktop(按 Ctrl/Cmd+R),更改就会生效。
发布
版本遵循语义化版本规范。
发布步骤:
- 使用
npm version <major | minor | patch>更新版本号 - 运行
git push --follow-tags推送并附带标签 - 等待 GitHub Actions 发布到 NPM 注册表。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。