mcpField
A
airtable-cli

airtable-cli

github.com/airtableデータ・データベース53257 回インストール14 週間前に更新
リポジトリ

airtable-cli について

airtable-cliは、Airtable MCP サーバーのツールを確認・実行するコマンドラインクライアントです。トークン認証や名前付きプロファイルに対応し、スクリプトやエージェントでの利用を想定しています。

主な機能

  1. 01実行時のツール検出
  2. 02CLIからのMCPツール実行
  3. 03トークンと名前付きプロファイルの設定
  4. 04標準入力からのJSON引数
  5. 05JSONまたは生テキスト出力

活用シーン

  1. 01Airtableサーバーのツール確認
  2. 02Baseの検索とレコード取得
  3. 03フィールドによるレコード検索・絞り込み
  4. 04スクリプトでのレコード作成・更新

MCP 対応

実行時にAirtable MCPサーバーからツール一覧を取得し、ツールを呼び出します。CLIのハイフン区切りの名前は、MCPのアンダースコア形式に変換されます。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/airtable/skills --skill airtable-cli

インストール後、Claude Code で/airtable-cliを入力して読み込まれたか確認します。

詳細

airtable-mcp

自己発見

ツールは実行時に MCP サーバーから取得されるため、CLI にコマンド一覧がハードコードされることはありません。利用可能なツールを確認するには、次のコマンドを実行します。

airtable-mcp tools            # human-readable list
airtable-mcp tools --json     # machine-parseable list
airtable-mcp <tool> --help    # show flags and descriptions for a tool

ツールが存在すると決めつける前に、airtable-mcp tools を実行してください。ツール名、引数、出力形式は、CLI を更新しなくてもサーバーのリリースによって変更される場合があります。

インストール

npm install -g @airtable/mcp-cli

認証

CLI には Airtable の個人用アクセストークン(PAT)が必要です。設定方法は 2 つあります。

環境変数(スクリプト/エージェントでの使用に推奨):

export AIRTABLE_TOKEN=pat_xxx

対話形式で設定(トークンは 0600 権限で ~/.airtable/cli.json に保存されます):

airtable-mcp configure

トークンは https://airtable.com/create/tokens で作成してください。呼び出すツールに必要なスコープがトークンに設定されていることを確認してください。

--profile フラグを指定しない場合、AIRTABLE_TOKEN は保存済みのプロファイルより優先されます。トークンをログに記録したり、表示したりしないでください。

クイックリファレンス

タスクコマンド
認証情報を設定するairtable-mcp configure
名前付きプロファイルを追加するairtable-mcp configure --profile work
認証ステータスを確認するairtable-mcp whoami
認証情報を削除するairtable-mcp logout
すべてのプロファイルを削除するairtable-mcp logout --all
利用可能なツールを一覧表示するairtable-mcp tools
ツールを実行するairtable-mcp <tool> --flagName value
ツールのヘルプを表示するairtable-mcp <tool> --help
stdin 経由で引数を渡すecho '{"key":"val"}' | airtable-mcp <tool> --input -
ツールのキャッシュを無視するairtable-mcp <tool> --refresh
ステータスメッセージを非表示にするairtable-mcp <tool> -q
生テキストを出力するairtable-mcp <tool> --output raw
特定のプロファイルを使用するairtable-mcp <tool> --profile work

CLI ではツール名にハイフン(list-records)を使用しますが、MCP ではアンダースコア(list_records)を使用します。CLI が自動的に変換します。

ワークフロー

  1. 認証 — AIRTABLE_TOKEN を設定するか、airtable-mcp configure を実行します
  2. 確認 — airtable-mcp tools を実行して利用可能なツールを確認します
  3. 詳細確認 — airtable-mcp <tool> --help を実行してフラグと説明を確認します
  4. アクセス権の確認 — tools --json の出力で access フィールドを確認します。値は read-only、write、または destructive です。destructive ツールを実行する前に、ユーザーに確認してください。
  5. 実行 — airtable-mcp <tool> --flagName value を実行します

出力と自動化

  • デフォルトでは、整形済み JSON が stdout に出力されます。ステータスメッセージは stderr に出力されます。
  • tools に --json を指定すると、{name, title, access} の JSON 配列が出力されます。
  • -q / --quiet を指定すると、stderr のステータスメッセージ(キャッシュの警告など)が非表示になります。
  • --output raw を指定すると、解析済み JSON ではなく、サーバーの応答テキストがそのまま返されます。
  • --input - を指定すると、stdin からツール引数を JSON オブジェクトとして読み込み、フラグの解析を回避します。
  • 終了コード:0 は成功、1 はエラー(認証、ツールの失敗、見つからない場合)、2 は使用方法のエラー(フラグまたは入力が不正な場合)です。

よくあるタスク

ベースを検索して、テーブルを一覧表示する:

airtable-mcp search-bases --searchQuery "Project Tracker" -q
airtable-mcp list-tables-for-base --baseId appEXAMPLEbase001 -q

特定のフィールドを指定してレコードを一覧表示する:

airtable-mcp list-records-for-table \
  --baseId appEXAMPLEbase001 --tableId tblEXAMPLEtable01 \
  --fieldIds '["Name","Status"]' --pageSize 10 -q

レコードをフィルタリングする — フィルターには数式文字列ではなく、構造化 JSON を使用します。条件を operands 配列で囲みます。省略した場合、最上位の operator はデフォルトで and になります。

airtable-mcp list-records-for-table \
  --baseId appEXAMPLEbase001 --tableId tblEXAMPLEtable01 \
  --filters '{"operator":"and","operands":[{"operator":"=","operands":["Status","Done"]}]}' -q

選択フィールドでは、表示名ではなく、get-table-schema で取得した選択肢 ID でフィルタリングします。複合フィルター、日付フィルター、フィールド型ごとの演算子の詳細については、airtable-filters スキルを参照してください。

レコードを検索する — 大きなテーブルでフリーテキスト検索やあいまい検索を行うには、search-records を使用します。フィールドの完全一致でフィルタリングするには、--filters を指定して list-records-for-table を使用します。

airtable-mcp search-records \
  --baseId appEXAMPLEbase001 --table tblEXAMPLEtable01 \
  --query "acme" --fields '["Name","Notes"]' -q

すべてのインデックス付きフィールドを対象に検索するには、--fields ALL_SEARCHABLE_FIELDS を渡します。日付、評価、チェックボックス、ボタンの各フィールドは検索できません。

レコードを更新する — 複雑な引数には --input - を使用すると簡単です。

echo '{"baseId":"appEXAMPLEbase001","tableId":"tblEXAMPLEtable01","records":[{"id":"recEXAMPLErecord1","fields":{"fldEXAMPLEfield01":"Done"}}]}' \
  | airtable-mcp update-records-for-table --input - -q

選択フィールドの値はオブジェクト({"id":"sel...","name":"Done"})として返されますが、書き込むときはプレーンな文字列("Done")にする必要があります。現在、作成/更新時のレコードのフィールドキーにはフィールド ID(fldEXAMPLEfield02)が必要です。書き込む前に get-table-schema を使用して、名前から ID を特定してください。なお、fieldIds、sort、filters には名前と ID のどちらも指定できます。

注意点

問題原因解決方法
Unknown tool: Xツール名がサーバーに存在しないか、キャッシュが古くなっているairtable-mcp tools --refresh を実行して更新し、再試行する
Authentication failedトークンの有効期限切れ、取り消し、または誤りairtable-mcp configure を実行するか、AIRTABLE_TOKEN を確認する
Access deniedトークンに必要なスコープがないhttps://airtable.com/create/tokens でスコープを追加する
Connection timed outサーバーに到達できない(タイムアウトは 10 秒)ネットワークを確認する。利用可能な場合、CLI は古いキャッシュにフォールバックする
ブール値フラグに値を指定すると失敗する--dryRun true は次の引数として "true" を渡す--dryRun のみを使用する(ブール値は指定の有無で判定されます)
配列/オブジェクト引数が失敗する値が有効な JSON ではないJSON 文字列として渡す:--fieldMappings '{"a":"b"}'
フィルターが最上位で拒否される単一条件を operands で囲まずに渡している{"operands":[...]} で囲む(operator はデフォルトで and になります)
並べ替えキーが field ではなく fieldId--sort '[{"field":"Name"}]' はエラーなしで無視される{"fieldId":"Name","direction":"asc"} を使用する(フィールド ID または名前を指定できます)
選択フィルターで一致する結果がない選択肢 ID ではなく表示名でフィルタリングしている先に get-table-schema を実行して、sel... の選択肢 ID を取得する
一括書き込みで INVALID_RECORDS が発生するリクエストごとの一括処理上限は 10 レコード(デフォルト。アカウントによって異なります)10 件以下に分割し、<tool> --help で現在の上限を確認する
list-records-for-table で権限エラーが発生するユーザーがベースへのインターフェース限定アクセス権を持っている代わりに list-records-for-page / get-record-for-page を使用する
エンドポイントが制限されているCLI は *.airtable.com の HTTPS のみを許可する任意のサーバーを指定することはできません(セキュリティ上の制約)

コメント