Gridbase

io.github.CloudCorpRecords由 GitHub 账号 CloudCorpRecords 发布v0.1.0更新于 Nov 1, 2026

Bases, tables, and records in Airtable: list, search, create, update, delete.

已验证STDIO仅桌面数据库效率与工作流

概览

AI 生成的概览

Airtable 工作台 MCP 服务器,让助手浏览 base、表和记录,并创建、更新或删除它们。

可以做什么
  • 列出可访问的 base,并按指定详细程度查看表、字段和视图
  • 列出记录、按公式筛选、按文本搜索以及获取单条记录
  • 在表中创建、更新和删除记录
  • 创建表和字段,并重命名或修改表和字段的描述
  • 为记录添加评论,并分页列出某条记录的评论
适用场景
当助手需要读取或维护 Airtable base 中的数据时适用,例如查找记录、按公式筛选、批量更新状态或调整表结构,无需离开对话。
运行要求
通过 npx 或 Docker 镜像以 stdio 在本地运行。需要 Airtable 个人访问令牌,放在 AIRTABLE_API_KEY 环境变量中,至少具备 schema.bases:read 和 data.records:read 权限,写入工具还需对应的写入权限。需要能访问 Airtable API 的网络。
安装前请注意
该令牌可访问其能触达的所有 base,应尽量缩小权限范围。写入工具会创建、更新和删除记录、表与字段,并添加评论;通过此服务器执行的删除无法撤销。记录数据和评论会发送到 Airtable API。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Gridbase,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

gridbase

gridbase is a workbench for Airtable. It walks a base the way a person would: first the list of bases a token can reach, then the tables inside one base and the fields and views each table declares, then the records themselves — listed, filtered by formula, searched by text, or fetched one at a time. The same surface writes back: records can be created, updated, and deleted, tables and fields can be created and renamed, and comments can be attached to records and read again. One binary serves a command-line interface and a stdio MCP server.

An Airtable personal access token is required. Put it in the AIRTABLE_API_KEY environment variable; it is sent to the API as an Authorization: Bearer header and never appears in output. When the variable is missing, every call fails with an error that names it, before any request is made. The token needs the schema.bases:read and data.records:read scopes at minimum, plus the matching write scopes for the write tools.

Install

bash
npx @reneturcios/gridbase bases

Or run the container image:

bash
docker run -i -e AIRTABLE_API_KEY ghcr.io/cloudcorprecords/gridbase

The container defaults to the MCP server (see below). Pass CLI arguments to use it as a CLI instead.

CLI

bash
export AIRTABLE_API_KEY="pat..."
gridbase basesgridbase tables appXXXXXXXXXXXXXX --detail fullgridbase describe appXXXXXXXXXXXXXX tblXXXXXXXXXXXXXXgridbase records appXXXXXXXXXXXXXX tblXXXXXXXXXXXXXX --max 25 --filter "{Status}='Open'"gridbase search appXXXXXXXXXXXXXX tblXXXXXXXXXXXXXX "quarterly report"gridbase get appXXXXXXXXXXXXXX tblXXXXXXXXXXXXXX recXXXXXXXXXXXXXXgridbase create appXXXXXXXXXXXXXX tblXXXXXXXXXXXXXX '{"Name":"New task","Status":"Open"}'gridbase update appXXXXXXXXXXXXXX tblXXXXXXXXXXXXXX '[{"id":"recXXXXXXXXXXXXXX","fields":{"Status":"Done"}}]'gridbase delete appXXXXXXXXXXXXXX tblXXXXXXXXXXXXXX recXXXXXXXXXXXXXXgridbase create-table appXXXXXXXXXXXXXX Reports '[{"name":"Title","type":"singleLineText"}]'gridbase comment appXXXXXXXXXXXXXX tblXXXXXXXXXXXXXX recXXXXXXXXXXXXXX "Looks good"gridbase comments appXXXXXXXXXXXXXX tblXXXXXXXXXXXXXX recXXXXXXXXXXXXXX --page-size 10
gridbase --version

Each command prints the upstream JSON payload. Exit codes: 0 on success, 1 when a call fails (including a missing AIRTABLE_API_KEY or an API error), 2 for usage errors.

MCP server

One bin serves both faces. The mcp subcommand starts a stdio MCP server:

bash
npx -y @reneturcios/gridbase mcp

MCP client configuration:

json
{  "mcpServers": {    "gridbase": {      "command": "npx",      "args": ["-y", "@reneturcios/gridbase", "mcp"],      "env": { "AIRTABLE_API_KEY": "pat..." }    }  }}

Tools

ToolInputWhat it returns
list_bases(none)Every accessible base with its ID, name, and permission level.
list_tablesbaseId (required), detailLevel (optional)Tables in the base, trimmed to the requested detail level.
describe_tablebaseId, tableId (required), detailLevel (optional)One table's fields and views.
list_recordsbaseId, tableId (required), maxRecords, filterByFormula (optional)Records from the table.
search_recordsbaseId, tableId, searchTerm (required), fieldIds, maxRecords (optional)Records whose field values contain the term.
get_recordbaseId, tableId, recordId (required)The single record.
create_recordbaseId, tableId, fields (required)The created record.
update_recordsbaseId, tableId, records (required)The updated records.
delete_recordsbaseId, tableId, recordIds (required)Deletion receipts for each record.
create_tablebaseId, name, fields (required), description (optional)The created table.
update_tablebaseId, tableId (required), name, description (optional)The updated table.
create_fieldbaseId, tableId, name, type (required), description, options (optional)The created field.
update_fieldbaseId, tableId, fieldId (required), name, description (optional)The updated field.
create_commentbaseId, tableId, recordId, text (required), parentCommentId (optional)The created comment.
list_commentsbaseId, tableId, recordId (required), pageSize, offset (optional)The record's comments, newest first.

Airtable offers no text-search endpoint, so search_records lists the table (bounded by maxRecords) and keeps the records whose field values contain the term, restricted to fieldIds when supplied. Schema reads trim the meta payload themselves: tableIdentifiersOnly keeps table IDs and names, identifiersOnly also reduces fields and views to IDs and names, and full (the default) returns everything.

Development

bash
npm installnpm run build   # tsc -> dist/npm test        # node test runner over test/*.test.ts, no network (fake fetch fixtures)npm run dev     # run the CLI from source via tsx

License

MIT — see LICENSE.

来源:README.md,提交 a86ec9a

工具

15

list_bases

List every Airtable base the configured token can access, with its ID, name, and permission level.

无需输入参数。

list_tables

List the tables in a base, with fields and views at the requested level of detail.

输入参数baseId必填detailLevel

describe_table

Describe one table in a base, returning its fields and views at the requested level of detail.

输入参数baseId必填tableId必填detailLevel

list_records

List records from a table, optionally filtered by an Airtable formula.

输入参数baseId必填tableId必填maxRecordsfilterByFormula

search_records

Search records in a table for a text term, across all text fields or a chosen subset.

输入参数baseId必填tableId必填fieldIdsmaxRecordssearchTerm必填

get_record

Fetch a single record from a table by its record ID.

输入参数baseId必填tableId必填recordId必填

create_record

Create a new record in a table from a set of field values.

输入参数baseId必填fields必填tableId必填

update_records

Update one or more records in a table, setting the given fields on each.

输入参数baseId必填records必填tableId必填

delete_records

Delete one or more records from a table by their record IDs.

输入参数baseId必填tableId必填recordIds必填

create_table

Create a new table in a base with the given name, optional description, and field definitions.

输入参数name必填baseId必填fields必填description

update_table

Update a table's name or description.

输入参数namebaseId必填tableId必填description

create_field

Create a new field in a table with the given name and type.

输入参数name必填type必填baseId必填optionstableId必填description

update_field

Update a field's name or description.

输入参数namebaseId必填fieldId必填tableId必填description

create_comment

Add a comment to a record, optionally as a reply to an existing comment.

输入参数text必填baseId必填tableId必填recordId必填parentCommentId

list_comments

List the comments on a record, newest first, with pagination.

输入参数baseId必填offsettableId必填pageSizerecordId必填

版本历史

1
  1. v0.1.0最新Nov 1, 2026

评分

已满足适用检查项的 90%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分
  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分