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 分