mcpField
A
airtable-mcp-server

airtable-mcp-server

本地服务
npmjs.com数据库4563 天前更新

关于 airtable-mcp-server

airtable-mcp-server 是一个 MCP 服务,让 LLM 能够读取 Airtable 数据库的结构,并对记录进行读写。适合希望让 AI 系统直接操作 Airtable 基座的用户。支持 stdio 与 HTTP 两种传输方式。

主要功能

  1. 01列出基座、数据表与字段结构
  2. 02查询、搜索与获取记录
  3. 03创建、更新与删除记录
  4. 04创建与修改数据表和字段
  5. 05读取与创建记录评论
  6. 06支持 HTTP 传输模式

适用场景

  1. 01让 LLM 检查 Airtable 基座的表结构
  2. 02按条件筛选或搜索表中的记录
  3. 03通过 AI 助手批量更新或新增记录

MCP 相关

该项目是 MCP 服务,向 MCP 客户端暴露用于查询、写入和管理 Airtable 基座、数据表、记录与评论的工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库
安装包
npmairtable-mcp-server1.14.0
ocidocker.io/domdomegg/airtable-mcp-server:1.14.0
mcpbairtable-mcp-server.mcpb1.14.0

工具

16

收录的工具列表 · 更新于 3 周前

参数类型必填说明
sortarray否用于指定记录排序方式的排序对象列表
viewstring否表格中视图的名称或 ID
baseIdstring是基础的 ID
fieldsarray否响应中要包含的字段名称或 ID 数组。省略此参数可返回所有字段,这通常是你需要的结果。仅当表格字段很多且你不需要其中大部分字段,并且已知确切的字段名称或 ID 时才设置此参数(例如,通过 describe_table 获取);猜测字段名称或 ID 会导致静默返回错误数据。
tableIdstring是表格的 ID 或名称
maxRecordsnumber否返回的记录总数上限
filterByFormulastring否记录筛选公式

详细介绍

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 的 ID
      • tableId(字符串,必需):要查询的表的 ID
      • maxRecords(数字,可选):返回记录的最大数量。默认值为 100。
      • filterByFormula(字符串,可选):用于筛选记录的 Airtable 公式
  • search_records

    • 搜索包含指定文本的记录
    • 输入参数:
      • baseId(字符串,必需):Airtable base 的 ID
      • tableId(字符串,必需):要查询的表的 ID
      • searchTerm(字符串,必需):要在记录中搜索的文本
      • fieldIds(数组,可选):要搜索的特定字段 ID。如果未提供,则搜索所有基于文本的字段。
      • maxRecords(数字,可选):返回记录的最大数量。默认值为 100。
  • list_bases

    • 列出所有可访问的 Airtable base
    • 无需输入参数
    • 返回 base ID、名称和权限级别
  • list_tables

    • 列出指定 base 中的所有表
    • 输入参数:
      • baseId(字符串,必需):Airtable base 的 ID
      • detailLevel(字符串,可选):要获取的表信息详细程度(tableIdentifiersOnly、identifiersOnly 或 full)
    • 根据指定的 detailLevel 返回表 ID、名称、描述、字段和视图
  • describe_table

    • 获取指定表的详细信息
    • 输入参数:
      • baseId(字符串,必需):Airtable base 的 ID
      • tableId(字符串,必需):要描述的表的 ID
      • detailLevel(字符串,可选):要获取的表信息详细程度(tableIdentifiersOnly、identifiersOnly 或 full)
    • 返回格式与 list_tables 相同,但仅针对单个表
    • 适用于获取指定表的详细信息,而无需获取该 base 中所有表的信息
  • get_record

    • 根据 ID 获取指定记录
    • 输入参数:
      • baseId(字符串,必需):Airtable base 的 ID
      • tableId(字符串,必需):表的 ID
      • recordId(字符串,必需):要获取的记录的 ID
  • create_record

    • 在表中创建新记录
    • 输入参数:
      • baseId(字符串,必需):Airtable base 的 ID
      • tableId(字符串,必需):表的 ID
      • fields(对象,必需):新记录的字段和值
  • update_records

    • 更新表中的一条或多条记录
    • 输入参数:
      • baseId(字符串,必需):Airtable base 的 ID
      • tableId(字符串,必需):表的 ID
      • records(数组,必需):包含记录 ID 和待更新字段的对象数组
  • delete_records

    • 从表中删除一条或多条记录
    • 输入参数:
      • baseId (string, required):Airtable base 的 ID
      • tableId (string, required):表的 ID
      • recordIds (array, required):要删除的记录 ID 数组
  • create_table

    • 在 base 中创建新表
    • 输入参数:
      • baseId (string, required):Airtable base 的 ID
      • name (string, required):新表的名称
      • description (string, optional):表的描述
      • fields (array, required):字段定义数组(名称、类型、描述、选项)
  • update_table

    • 更新表的名称或描述
    • 输入参数:
      • baseId (string, required):Airtable base 的 ID
      • tableId (string, required):表的 ID
      • name (string, optional):表的新名称
      • description (string, optional):表的新描述
  • create_field

    • 在表中创建新字段
    • 输入参数:
      • baseId (string, required):Airtable base 的 ID
      • tableId (string, required):表的 ID
      • name (string, required):新字段的名称
      • type (string, required):字段类型
      • description (string, optional):字段描述
      • options (object, optional):字段专属选项
  • update_field

    • 更新字段的名称或描述
    • 输入参数:
      • baseId (string, required):Airtable base 的 ID
      • tableId (string, required):表的 ID
      • fieldId (string, required):字段的 ID
      • name (string, optional):字段的新名称
      • description (string, optional):字段的新描述
  • create_comment

    • 在记录上创建评论
    • 输入参数:
      • baseId (string, required):Airtable base 的 ID
      • tableId (string, required):表的 ID
      • recordId (string, required):记录的 ID
      • text (string, required):评论内容
      • parentCommentId (string, optional):用于串联回复的父评论 ID
    • 返回新建的评论,包含 ID、作者、创建时间和内容
  • list_comments

    • 列出记录上的评论
    • 输入参数:
      • baseId (string, required):Airtable base 的 ID
      • tableId (string, required):表的 ID
      • recordId (string, required):记录的 ID
      • pageSize (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 上提交拉取请求!开始贡献:

  1. 安装 Git 和 Node.js
  2. 克隆仓库
  3. 使用 npm install 安装依赖
  4. 运行 npm run test 执行测试
  5. 使用 npm run build 构建
  • 你可以使用 npm run build:watch,在编辑 src/index.ts 后自动构建。这样,你只需保存并重新加载 Claude Desktop(按 Ctrl/Cmd+R),更改就会生效。

发布

版本遵循语义化版本规范。

发布步骤:

  1. 使用 npm version <major | minor | patch> 更新版本号
  2. 运行 git push --follow-tags 推送并附带标签
  3. 等待 GitHub Actions 发布到 NPM 注册表。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。