mcpField
A
airtable-mcp-server

airtable-mcp-server

ローカル
npmjs.comデータベース4564 日前に更新

airtable-mcp-server について

airtable-mcp-server は、LLM が Airtable ベースのスキーマを確認し、レコードの読み取りと書き込みを行えるようにする MCP サーバーです。AI から Airtable ベースを直接操作したいユーザー向けです。stdio と HTTP の両方のトランスポートに対応しています。

主な機能

  1. 01ベース、テーブル、フィールド構造の一覧表示
  2. 02レコードのクエリ、検索、取得
  3. 03レコードの作成、更新、削除
  4. 04テーブルとフィールドの作成と変更
  5. 05レコードコメントの読み取りと作成
  6. 06HTTP トランスポートモードへの対応

活用シーン

  1. 01LLM による Airtable ベース構造の確認
  2. 02テーブル内のレコードの絞り込みや検索
  3. 03AI アシスタントによるレコードの一括更新や追加

MCP 対応

本プロジェクトは MCP サーバーであり、Airtable のベース、テーブル、レコード、コメントの照会・書き込み・管理用のツールを MCP クライアントに提供します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの 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 から取得済み)がわかっている場合にのみ設定してください。推測すると、誤ったデータが警告なく返されます。
tableIdstringはいテーブルの ID または名前
maxRecordsnumberいいえ返されるレコードの合計最大数
filterByFormulastringいいえレコードの絞り込みに使用する数式

詳細

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 ベースの ID
      • tableId(string、必須):検索対象のテーブルの ID
      • maxRecords(number、任意):返すレコードの最大数です。デフォルトは 100 です。
      • filterByFormula(string、任意):レコードを絞り込む Airtable 数式
  • search_records

    • 特定のテキストを含むレコードを検索します
    • 入力パラメーター:
      • baseId(string、必須):Airtable ベースの ID
      • tableId(string、必須):検索対象のテーブルの ID
      • searchTerm(string、必須):レコード内で検索するテキスト
      • fieldIds(array、任意):検索対象にする特定のフィールド ID です。指定しない場合は、テキスト形式のすべてのフィールドを検索します。
      • maxRecords(number、任意):返すレコードの最大数です。デフォルトは 100 です。
  • list_bases

    • アクセス可能な Airtable ベースをすべて一覧表示します
    • 入力パラメーターは不要です
    • ベース ID、名前、権限レベルを返します
  • list_tables

    • 特定のベースにあるテーブルをすべて一覧表示します
    • 入力パラメーター:
      • baseId(string、必須):Airtable ベースの ID
      • detailLevel(string、任意):テーブルについて取得する詳細度です(tableIdentifiersOnly、identifiersOnly、または full)
    • テーブル ID、名前、説明、フィールド、ビューを(指定された detailLevel に応じて)返します
  • describe_table

    • 特定のテーブルの詳細情報を取得します
    • 入力パラメーター:
      • baseId(string、必須):Airtable ベースの ID
      • tableId(string、必須):説明を取得するテーブルの ID
      • detailLevel(string、任意):テーブルについて取得する詳細度です(tableIdentifiersOnly、identifiersOnly、または full)
    • 単一のテーブルについて、list_tables と同じ形式の情報を返します
    • ベース内のすべてのテーブルの情報を取得せずに、特定のテーブルの詳細を確認するのに便利です
  • get_record

    • ID を指定して特定のレコードを取得します
    • 入力パラメーター:
      • baseId(string、必須):Airtable ベースの ID
      • tableId(string、必須):テーブルの ID
      • recordId(string、必須):取得するレコードの ID
  • create_record

    • テーブルに新しいレコードを作成します
    • 入力パラメーター:
      • baseId(string、必須):Airtable ベースの ID
      • tableId(string、必須):テーブルの ID
      • fields(object、必須):新しいレコードのフィールドと値
  • update_records

    • テーブル内の 1 件以上のレコードを更新します
    • 入力パラメーター:
      • baseId(string、必須):Airtable ベースの ID
      • tableId(string、必須):テーブルの ID
      • records(array、必須):レコード ID と更新するフィールドを含むオブジェクトの配列
  • delete_records

    • テーブルから1つ以上のレコードを削除します
    • 入力パラメーター:
      • baseId (string, required):Airtable ベースの ID
      • tableId (string, required):テーブルの ID
      • recordIds (array, required):削除するレコード ID の配列
  • create_table

    • ベースに新しいテーブルを作成します
    • 入力パラメーター:
      • baseId (string, required):Airtable ベースの ID
      • name (string, required):新しいテーブルの名前
      • description (string, optional):テーブルの説明
      • fields (array, required):フィールド定義(名前、タイプ、説明、オプション)の配列
  • update_table

    • テーブルの名前または説明を更新します
    • 入力パラメーター:
      • baseId (string, required):Airtable ベースの ID
      • tableId (string, required):テーブルの ID
      • name (string, optional):テーブルの新しい名前
      • description (string, optional):テーブルの新しい説明
  • create_field

    • テーブルに新しいフィールドを作成します
    • 入力パラメーター:
      • baseId (string, required):Airtable ベースの ID
      • tableId (string, required):テーブルの ID
      • name (string, required):新しいフィールドの名前
      • type (string, required):フィールドのタイプ
      • description (string, optional):フィールドの説明
      • options (object, optional):フィールド固有のオプション
  • update_field

    • フィールドの名前または説明を更新します
    • 入力パラメーター:
      • baseId (string, required):Airtable ベースの ID
      • tableId (string, required):テーブルの ID
      • fieldId (string, required):フィールドの ID
      • name (string, optional):フィールドの新しい名前
      • description (string, optional):フィールドの新しい説明
  • create_comment

    • レコードにコメントを作成します
    • 入力パラメーター:
      • baseId (string, required):Airtable ベースの ID
      • tableId (string, required):テーブルの ID
      • recordId (string, required):レコードの ID
      • text (string, required):コメントのテキスト
      • parentCommentId (string, optional):スレッド形式の返信に使用する親コメントの ID
    • ID、作成者、作成日時、テキストを含む作成済みコメントを返します
  • list_comments

    • レコードのコメント一覧を取得します
    • 入力パラメーター:
      • baseId (string, required):Airtable ベースの ID
      • tableId (string, required):テーブルの ID
      • recordId (string, required):レコードの ID
      • pageSize (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 でプルリクエストを歓迎します!始めるには、次の手順に従ってください。

  1. Git と Node.js をインストールします
  2. リポジトリをクローンします
  3. npm install で依存関係をインストールします
  4. npm run test を実行してテストを実行します
  5. npm run build でビルドします
  • src/index.ts を編集した後に自動でビルドするには、npm run build:watch を使用できます。これにより、保存して Claude Desktop を再読み込み(Ctrl/Cmd+R)すると、変更が反映されます。

リリース

バージョンにはセマンティックバージョニングの仕様に従います。

リリースするには、次の手順に従ってください。

  1. npm version <major | minor | patch> を使用してバージョンを更新します
  2. git push --follow-tags を実行してタグとともにプッシュします
  3. GitHub Actions が NPM レジストリに公開するまで待ちます。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。