airtable-mcp-server について
airtable-mcp-server は、LLM が Airtable ベースのスキーマを確認し、レコードの読み取りと書き込みを行えるようにする MCP サーバーです。AI から Airtable ベースを直接操作したいユーザー向けです。stdio と HTTP の両方のトランスポートに対応しています。
主な機能
- 01ベース、テーブル、フィールド構造の一覧表示
- 02レコードのクエリ、検索、取得
- 03レコードの作成、更新、削除
- 04テーブルとフィールドの作成と変更
- 05レコードコメントの読み取りと作成
- 06HTTP トランスポートモードへの対応
活用シーン
- 01LLM による Airtable ベース構造の確認
- 02テーブル内のレコードの絞り込みや検索
- 03AI アシスタントによるレコードの一括更新や追加
MCP 対応
本プロジェクトは MCP サーバーであり、Airtable のベース、テーブル、レコード、コメントの照会・書き込み・管理用のツールを MCP クライアントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
16掲載時のツール一覧 · 3 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| sort | array | いいえ | レコードの並べ替え方法を指定するソートオブジェクトのリスト |
| view | string | いいえ | テーブル内のビュー名または ID |
| baseId | string | はい | ベースの ID |
| fields | array | いいえ | レスポンスに含めるフィールド名または ID の配列です。省略するとすべてのフィールドが返されます。通常はこちらが必要です。テーブルのフィールド数が多く、その大半が不要で、かつ正確なフィールド名または ID(例:describe_table から取得済み)がわかっている場合にのみ設定してください。推測すると、誤ったデータが警告なく返されます。 |
| tableId | string | はい | テーブルの ID または名前 |
| maxRecords | number | いいえ | 返されるレコードの合計最大数 |
| filterByFormula | string | いいえ | レコードの絞り込みに使用する数式 |
詳細
airtable-mcp-server
Airtable データベースへの読み取りおよび書き込みアクセスを提供する Model Context Protocol サーバーです。このサーバーを使うと、LLM はデータベースのスキーマを確認したうえで、レコードを読み書きできます。
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)を指定して、こちらで作成してください。また、使用するベースへのアクセス権も必要です。トークンは pat123.abc123 のような形式です(実際はもっと長くなります)。AIRTABLE_API_KEY として設定してください(生成された設定内のプレースホルダーを置き換えます)。
コンポーネント
ツール
-
list_records
- 指定した Airtable テーブルのレコードを一覧表示します
- 入力パラメーター:
baseId(string、必須):Airtable ベースの IDtableId(string、必須):検索対象のテーブルの IDmaxRecords(number、任意):返すレコードの最大数です。デフォルトは 100 です。filterByFormula(string、任意):レコードを絞り込む Airtable 数式
-
search_records
- 特定のテキストを含むレコードを検索します
- 入力パラメーター:
baseId(string、必須):Airtable ベースの IDtableId(string、必須):検索対象のテーブルの IDsearchTerm(string、必須):レコード内で検索するテキストfieldIds(array、任意):検索対象にする特定のフィールド ID です。指定しない場合は、テキスト形式のすべてのフィールドを検索します。maxRecords(number、任意):返すレコードの最大数です。デフォルトは 100 です。
-
list_bases
- アクセス可能な Airtable ベースをすべて一覧表示します
- 入力パラメーターは不要です
- ベース ID、名前、権限レベルを返します
-
list_tables
- 特定のベースにあるテーブルをすべて一覧表示します
- 入力パラメーター:
baseId(string、必須):Airtable ベースの IDdetailLevel(string、任意):テーブルについて取得する詳細度です(tableIdentifiersOnly、identifiersOnly、またはfull)
- テーブル ID、名前、説明、フィールド、ビューを(指定された
detailLevelに応じて)返します
-
describe_table
- 特定のテーブルの詳細情報を取得します
- 入力パラメーター:
baseId(string、必須):Airtable ベースの IDtableId(string、必須):説明を取得するテーブルの IDdetailLevel(string、任意):テーブルについて取得する詳細度です(tableIdentifiersOnly、identifiersOnly、またはfull)
- 単一のテーブルについて、list_tables と同じ形式の情報を返します
- ベース内のすべてのテーブルの情報を取得せずに、特定のテーブルの詳細を確認するのに便利です
-
get_record
- ID を指定して特定のレコードを取得します
- 入力パラメーター:
baseId(string、必須):Airtable ベースの IDtableId(string、必須):テーブルの IDrecordId(string、必須):取得するレコードの ID
-
create_record
- テーブルに新しいレコードを作成します
- 入力パラメーター:
baseId(string、必須):Airtable ベースの IDtableId(string、必須):テーブルの IDfields(object、必須):新しいレコードのフィールドと値
-
update_records
- テーブル内の 1 件以上のレコードを更新します
- 入力パラメーター:
baseId(string、必須):Airtable ベースの IDtableId(string、必須):テーブルの IDrecords(array、必須):レコード ID と更新するフィールドを含むオブジェクトの配列
-
delete_records
- テーブルから1つ以上のレコードを削除します
- 入力パラメーター:
baseId(string, required):Airtable ベースの IDtableId(string, required):テーブルの IDrecordIds(array, required):削除するレコード ID の配列
-
create_table
- ベースに新しいテーブルを作成します
- 入力パラメーター:
baseId(string, required):Airtable ベースの IDname(string, required):新しいテーブルの名前description(string, optional):テーブルの説明fields(array, required):フィールド定義(名前、タイプ、説明、オプション)の配列
-
update_table
- テーブルの名前または説明を更新します
- 入力パラメーター:
baseId(string, required):Airtable ベースの IDtableId(string, required):テーブルの IDname(string, optional):テーブルの新しい名前description(string, optional):テーブルの新しい説明
-
create_field
- テーブルに新しいフィールドを作成します
- 入力パラメーター:
baseId(string, required):Airtable ベースの IDtableId(string, required):テーブルの IDname(string, required):新しいフィールドの名前type(string, required):フィールドのタイプdescription(string, optional):フィールドの説明options(object, optional):フィールド固有のオプション
-
update_field
- フィールドの名前または説明を更新します
- 入力パラメーター:
baseId(string, required):Airtable ベースの IDtableId(string, required):テーブルの IDfieldId(string, required):フィールドの IDname(string, optional):フィールドの新しい名前description(string, optional):フィールドの新しい説明
-
create_comment
- レコードにコメントを作成します
- 入力パラメーター:
baseId(string, required):Airtable ベースの IDtableId(string, required):テーブルの IDrecordId(string, required):レコードの IDtext(string, required):コメントのテキストparentCommentId(string, optional):スレッド形式の返信に使用する親コメントの ID
- ID、作成者、作成日時、テキストを含む作成済みコメントを返します
-
list_comments
- レコードのコメント一覧を取得します
- 入力パラメーター:
baseId(string, required):Airtable ベースの IDtableId(string, required):テーブルの IDrecordId(string, required):レコードの IDpageSize(number, optional):返すコメント数(最大 100、デフォルトは 100)offset(string, optional):追加のコメントを取得するためのページネーションオフセット
- 作成者、テキスト、タイムスタンプ、リアクション、メンションを含むコメント配列を返します
- コメントは新しいものから古いものの順に返されます
HTTP トランスポート
リモート MCP クライアントで使用するため、サーバーを HTTP モードで実行することもできます。
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でビルドします
src/index.tsを編集した後に自動でビルドするには、npm run build:watchを使用できます。これにより、保存して Claude Desktop を再読み込み(Ctrl/Cmd+R)すると、変更が反映されます。
リリース
バージョンにはセマンティックバージョニングの仕様に従います。
リリースするには、次の手順に従ってください。
npm version <major | minor | patch>を使用してバージョンを更新しますgit push --follow-tagsを実行してタグとともにプッシュします- GitHub Actions が NPM レジストリに公開するまで待ちます。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。