2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AirtableでAIを強化する | 第1章:AirtableとMCPの基礎

Posted at

はじめに

Airtableは、表計算のシンプルさとデータベースの柔軟性を組み合わせたクラウドベースのプラットフォームです。プロジェクト管理、CRM、イベント企画など、さまざまな用途で使われています。一方、**Model Context Protocol(MCP)**は、AI(例:Claude)を外部データやツールと標準化された方法で接続するプロトコルです。このシリーズでは、AirtableとMCPを統合し、データ管理を強化するエージェントAIを構築する方法を学びます。たとえば、プロジェクトデータをAIが取得して要約したり、タスクを自動化したりできます。

第1章では、AirtableとMCPの基本を理解し、Airtableからデータを取得するシンプルなMCPサーバーを構築します。Claude Desktopと接続して、データ管理の第一歩を踏み出しましょう。AirtableとAIの可能性にワクワクしている方は、ぜひ一緒に始めましょう!

AirtableとMCPの概要

Airtableとは?

Airtableは、以下のような特徴を持つデータ管理ツールです:

  • 直感的なUI:スプレッドシートのようなインターフェースで簡単にデータ管理。
  • 強力なAPI:REST APIでデータ取得や操作が可能。
  • カスタマイズ性:テンプレートやビューで多様なニーズに対応。
  • コラボレーション:チームでのリアルタイム共同作業をサポート。

MCPの役割

MCPは、AIにAirtableのデータを提供する橋渡し役です。MCPサーバーを通じて、AIは以下を行えます:

  • データ取得:Airtableのテーブルからプロジェクトやタスク情報を取得。
  • アクション実行:新しいレコードを追加、データを更新。
  • 自動化:データに基づいてタスクや通知を生成。

なぜAirtableとMCPを組み合わせる?

この組み合わせは、以下のようなシナリオで強力です:

  • プロジェクト管理:AIがAirtableのタスクデータを分析し、進捗を報告。
  • イベント企画:AIがスケジュールや参加者リストを整理。
  • CRM:AIが顧客データを基にフォローアップを提案。

開発環境の準備

MCPサーバーとAirtableを統合するには、以下の環境を準備します:

  • Python 3.8以降:サーバー開発用。
  • mcpライブラリ:JSON-RPC通信を処理(仮定のライブラリ、公式ドキュメントを参照)。
  • pyairtableライブラリ:Airtable APIとの通信用。
  • Claude Desktop:MCP対応のAIクライアント。
  • テキストエディタ:VS Code推奨。

インストールコマンド:

pip install mcp jsonrpcserver pyairtable python-dotenv

Airtableのセットアップ

  1. プロジェクト作成
    • Airtableにアクセスし、新しいベースを作成(例:MCP-Projects)。
    • テーブルを作成(例:Projects)し、以下のフィールドを追加:
      • Name(テキスト):プロジェクト名
      • Description(長編テキスト):説明
      • Created At(日付):作成日
    • テストデータを入力:
      Name Description Created At
      プロジェクトA MCP統合テスト 2025-04-15
      プロジェクトB AI自動化プロジェクト 2025-04-16
  2. APIキーの取得
    • Airtableアカウント設定でPersonal Access Tokenを作成。
    • スコープ:data.records:readを選択。
    • トークンとベースID、テーブル名を記録。
  3. 環境変数の設定
    .envファイルに以下を追加:
    AIRTABLE_TOKEN=your_airtable_token
    AIRTABLE_BASE_ID=your_base_id
    AIRTABLE_TABLE_NAME=Projects
    

コード例:Airtable用MCPサーバー

AirtableのProjectsテーブルからデータを取得するMCPサーバーを構築します。

from mcp import MCPServer
from pyairtable import Table
import os
from dotenv import load_dotenv

class AirtableServer(MCPServer):
    def __init__(self, host, port, airtable_token, base_id, table_name):
        super().__init__(host, port)
        self.table = Table(airtable_token, base_id, table_name)
        self.register_resource("get_projects", self.get_projects)

    def get_projects(self, params):
        try:
            records = self.table.all()
            projects = [
                {
                    "id": record["id"],
                    "name": record["fields"].get("Name", ""),
                    "description": record["fields"].get("Description", ""),
                    "created_at": record["fields"].get("Created At", "")
                }
                for record in records
            ]
            return {"status": "success", "projects": projects}
        except Exception as e:
            return {"status": "error", "message": str(e)}

if __name__ == "__main__":
    load_dotenv()
    server = AirtableServer(
        host="localhost",
        port=8099,
        airtable_token=os.getenv("AIRTABLE_TOKEN"),
        base_id=os.getenv("AIRTABLE_BASE_ID"),
        table_name=os.getenv("AIRTABLE_TABLE_NAME")
    )
    print("Airtable MCPサーバーを起動中: http://localhost:8099")
    server.start()

コードの説明

  • Tablepyairtableを使ってAirtableテーブルに接続。
  • get_projectsProjectsテーブルから全レコードを取得し、ID、名前、説明、作成日をフォーマット。
  • register_resource:リソースを登録し、AIがアクセス可能に。
  • start():サーバーを起動。

前提条件

  • AirtableベースにProjectsテーブルが存在。
  • .envファイルに正しいAIRTABLE_TOKENAIRTABLE_BASE_IDAIRTABLE_TABLE_NAMEが設定済み。

サーバーのテスト

サーバーが正しく動作するか確認します:

  1. サーバー起動

    python airtable_server.py
    

    コンソールに「Airtable MCPサーバーを起動中: http://localhost:8099」と表示。

  2. データ取得のテスト
    Pythonでリクエストを送信:

    import requests
    import json
    
    url = "http://localhost:8099"
    payload = {
        "jsonrpc": "2.0",
        "method": "get_projects",
        "params": {},
        "id": 1
    }
    response = requests.post(url, json=payload)
    print(json.dumps(response.json(), indent=2, ensure_ascii=False))
    

    期待されるレスポンス:

    {
      "jsonrpc": "2.0",
      "result": {
        "status": "success",
        "projects": [
          {
            "id": "rec123",
            "name": "プロジェクトA",
            "description": "MCP統合テスト",
            "created_at": "2025-04-15"
          },
          {
            "id": "rec456",
            "name": "プロジェクトB",
            "description": "AI自動化プロジェクト",
            "created_at": "2025-04-16"
          }
        ]
      },
      "id": 1
    }
    

Claude Desktopとの接続

サーバーをClaude Desktopに接続します:

  1. 設定ファイルの編集
    Claude Desktopの設定ファイル(例:claude_desktop_config.json)に以下を追加:

    {
      "mcp_servers": [
        {
          "name": "AirtableServer",
          "url": "http://localhost:8099",
          "auth": "none"
        }
      ]
    }
    
  2. Claudeでテスト
    Claude Desktopを起動し、プロンプトを入力:

    プロジェクト一覧を教えてください。
    

    レスポンス例:

    Airtableから取得したプロジェクト:
    - プロジェクトA:MCP統合テスト(2025-04-15)
    - プロジェクトB:AI自動化プロジェクト(2025-04-16)
    

次のステップ

このMCPサーバーは、AirtableとAIの連携の基礎です。次の第2章では、Airtableにレコードを追加・更新する機能を実装し、タスク管理を自動化するエージェントを構築します。たとえば、AIが新しいタスクをAirtableに追加したり、ステータスを更新したりできます。Airtableの自動化に興味がある方は、ぜひお楽しみに!

まとめ

この第1章では、AirtableとMCPの基本を学び、シンプルなMCPサーバーを構築してプロジェクトデータを取得しました。Airtableの柔軟なデータ管理とMCPの標準化された接続を組み合わせることで、AIを強力なデータアシスタントに変えられます。次章以降では、タスク自動化、データ分析、イベント管理へと進化させます。


役に立ったと思ったら、「いいね」や「ストック」をしていただけると嬉しいです!次の章でまたお会いしましょう!

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?