Google Forms MCP Server with CamelAIOrg Agents Integration について
Flask ベースの MCP サーバーと CamelAIOrg Agents を組み合わせ、自然言語の指示から Google Forms を作成・管理します。フォーム操作をツールとして提供し、リクエストの流れや結果を確認できる UI も備えています。
主な機能
- 01自然言語によるフォーム作成
- 02テキスト、段落、選択式、チェックボックスの質問追加
- 03フォーム回答の取得
- 04リクエストの流れと結果の表示
活用シーン
- 01文章による要件からフィードバックフォームを作成
- 02複数の質問形式を使ったアンケートの作成
- 03既存フォームの回答を取得
MCP 対応
Google Forms の操作を MCP ツールとして提供し、フォーム作成、質問管理、回答取得に対応します。CamelAIOrg Agents が指示を解釈してツールを呼び出します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
CamelAIOrg エージェントと連携する Google Forms MCP サーバー
Google Forms API および CamelAIOrg エージェントと連携し、自然言語の指示を使ってフォームを作成、変更、取得する Model Context Protocol(MCP)サーバーです。
概要
このプロジェクトでは、自然言語によるリクエストを通じて Google Forms を作成、管理できます。主なコンポーネントは次の 2 つです。
- MCP サーバー:Model Context Protocol(MCP)を実装し、Google Forms の操作をツールとして公開する Flask ベースのサーバーです。
- CamelAIOrg エージェント:自然言語のリクエストを処理し、MCP ツールの呼び出しに変換する AI エージェントフレームワークです。
このシステムには、フロントエンド、エージェント、MCP サーバー、Google API 間のリクエストの流れをアニメーションで可視化する、ダークテーマの UI が備わっています。
機能
- 自然言語のリクエストから Google Forms を作成
- さまざまな種類の質問を追加(テキスト、段落、複数選択、チェックボックス)
- フォームの回答を取得
- リクエストとレスポンスの流れを可視化
- アニメーション付きのダークテーマ UI
- MCP(Model Context Protocol)に完全準拠
- Docker でコンテナ化されており、簡単にデプロイ可能
アーキテクチャ
┌─────────────┐ ┌─────────────┐ ┌────────────┐ ┌────────────┐
│ │ │ │ │ │ │ │
│ Frontend │◄──►│ CamelAIOrg │◄──►│ MCP Server │◄──►│ Google │
│ (UI) │ │ Agents │ │ │ │ Forms API │
│ │ │ │ │ │ │ │
└─────────────┘ └─────────────┘ └────────────┘ └────────────┘
プロセスフローチャート
この図は、ユーザーのリクエストがシステム内をどのように流れるかを示しています。
graph TD
subgraph "User Interface"
A[Frontend UI]
end
subgraph "Processing Logic"
B((CamelAIOrg Agent))
C((MCP Server))
end
subgraph "External Service"
D{{Google Forms API}}
end
A -->|"1. User enters: Create feedback form"| B
B -->|"2. Interprets request, sends tool call"| C
C -->|"3. Translates to API request"| D
D -->|"4. Returns formId and URL"| C
C -->|"5. Processes API response"| B
B -->|"6. Formats final result to UI"| A
style B fill:#f9d423,stroke:#333,stroke-width:2px,color:#333
style C fill:#8ecae6,stroke:#333,stroke-width:2px,color:#333
各コンポーネントの役割
- フロントエンド UI: 自然言語のリクエストを入力するためのユーザーインターフェースを提供し、プロセスと結果を可視化します。
- CamelAIOrg エージェント(黄色で強調):
- 役割: 解釈と計画。
- 自然言語によるリクエストをそのまま受け取ります。
- リクエストを解析してユーザーの意図を理解し、重要な詳細(フォームのタイトル、質問、種類など)を抽出します。
- リクエストを実行するために必要な一連のアクション(MCP ツールの呼び出し)を決定します。
- 定義済みのツールスキーマを使用して MCP サーバーと通信します。
- MCP サーバー(青色で強調):
- 役割: 実行と抽象化。
- エージェントから構造化されたツールの呼び出しを受け取ります。
- Google Forms API 専用のインターフェースとして機能します。
- 抽象化されたツールの呼び出し(例:
create_form)を、具体的な Google Forms API リクエストに変換します。 - Google Forms API との認証、通信、エラー処理を行います。
- Google Forms API からの結果を標準化された MCP 形式でエージェントに返します。
MCP サーバーが必要な理由
Model Context Protocol(MCP)サーバーは、いくつかの理由から重要な仲介レイヤーとして機能します。
- 抽象化: 基盤となる Google Forms API の複雑さを CamelAI エージェントから隠します。エージェントは、Google API の具体的なエンドポイント、認証方式、リクエスト/レスポンスの形式を把握する必要はありません。簡略化された MCP ツールスキーマ(例:
create_form、add_question)を把握するだけで十分です。 - モジュール性と再利用性: エージェントは、MCP インターフェースを公開する任意のサービスと連携できるように設計できます。別のフォームサービス(例:Typeform)への対応を追加する場合、専用の MCP サーバーを作成すれば、エージェントは新しい MCP ツールスキーマを学習するだけで、最小限の変更で利用できる可能性があります。
- 標準化: MCP は、AI モデル/エージェントが外部のツールや API と連携するための標準的な方法を提供します。これにより相互運用性が促進されます。
- セキュリティと制御: MCP サーバーは、ポリシーの適用、API キーの安全な管理、レート制限の処理、外部 API へのアクセスを制御するゲートウェイの提供が可能です。機密性の高い認証情報や複雑なロジックをエージェント内に直接埋め込む必要はありません。
- 保守性: API との連携ロジック(MCP サーバー)を、自然言語の理解と計画のロジック(エージェント)から分離することで、システムを保守、更新しやすくなります。Google Forms API の変更時に必要なのは MCP サーバーの更新だけで、エージェント自体を変更する必要はありません。
前提条件
- Docker と Docker Compose
- Google Cloud Platform アカウント
- Google Forms API が有効になっていること
- Google Cloud Console から取得した OAuth2 認証情報
セットアップ手順
1. リポジトリをクローンする
git clone https://github.com/yourusername/google-form-mcp-server.git
cd google-form-mcp-server
2. Google Forms API をセットアップする
- Google Cloud Console にアクセスします
- 新しいプロジェクトを作成します
- Google Forms API と Google Drive API を有効にします
- OAuth2 認証情報を作成します
- ウェブアプリケーションタイプ
- 承認済みのリダイレクト URI を追加します:
http://localhost:5000/oauth2callback
- 認証情報の JSON ファイルをダウンロードします
3. 環境変数を設定する
ルートディレクトリに .env ファイルを作成します。
# Google API Credentials
GOOGLE_CLIENT_ID=your_client_id_here
GOOGLE_CLIENT_SECRET=your_client_secret_here
GOOGLE_REFRESH_TOKEN=your_refresh_token_here
# Server Configuration
FLASK_ENV=development
PORT=5000
DEBUG=True
# CamelAIOrg Agents Configuration
AGENT_ENDPOINT=http://agents:5001/process
AGENT_API_KEY=your_agent_api_key_here
リフレッシュトークンを取得するには:
- OAuth 2.0 Playground を使用します:https://developers.google.com/oauthplayground/
- 認証情報を使ってセットアップします
- 必要なスコープを選択します:
- 認可コードをトークンと交換します
- リフレッシュトークンを
.envファイルにコピーします
4. Docker Compose でビルドして実行する
docker-compose up --build
これにより、MCP サーバー(ポート 5000)と CamelAIOrg エージェントサービス(ポート 5001)の両方が起動します。
使用方法
ウェブインターフェース
http://localhost:5000 でウェブインターフェースにアクセスします。
このインターフェースでは、以下の操作ができます。
- 自然言語でリクエストを入力する(例:「3 つの質問があるフィードバックフォームを作成する」)
- コンポーネント間のリクエストの流れを確認する
- 生成されたフォームの詳細とリンクを確認する
- 交換される MCP パケットを確認する
API エンドポイント
MCP サーバーのエンドポイント(ポート 5000)
GET /api/health- ヘルスチェックGET /api/schema- MCP ツールのスキーマを取得POST /api/process- MCP リクエストを処理
CamelAIOrg エージェントのエンドポイント(ポート 5001)
GET /health- ヘルスチェックGET /schema- エージェントの機能を取得POST /process- 自然言語のリクエストを処理
リクエスト例
以下は、試すことのできる自然言語リクエストの例です。
- 「1~5 の評価質問と、追加のコメント用のテキスト質問がある顧客フィードバックフォームを作成する」
- 「リモートワークの希望に関する、3 つの複数選択式質問があるアンケートを作成する」
- 「氏名、メールアドレス、出欠の選択肢があるイベントの出欠確認フォームを作成する」
MCP プロトコル形式
MCP サーバーは、次の形式のリクエストを受け付けます。
{
"transaction_id": "unique_transaction_id",
"tool_name": "create_form",
"parameters": {
"title": "Form Title",
"description": "Form Description"
}
}
次の形式で応答します。
{
"transaction_id": "unique_transaction_id",
"status": "success",
"result": {
"form_id": "form_id",
"response_url": "https://docs.google.com/forms/d/form_id/viewform",
"edit_url": "https://docs.google.com/forms/d/form_id/edit",
"title": "Form Title"
}
}
開発
プロジェクト構成
google-form-mcp-server/
├── server/ # MCP Server
│ ├── app.py # Main Flask application
│ ├── config.py # Configuration
│ ├── forms_api.py # Google Forms API integration
│ ├── mcp_handler.py # MCP protocol handler
│ ├── requirements.txt # Python dependencies
│ ├── static/ # Static assets
│ ├── templates/ # HTML templates
│ └── utils/ # Utility functions
├── agents/ # CamelAIOrg Agents
│ ├── agent_integration.py # Agent implementation
│ ├── agent_server.py # Agent API server
│ └── requirements.txt # Python dependencies
├── Dockerfile # MCP Server Dockerfile
├── docker-compose.yml # Docker Compose configuration
├── .env.example # Example environment variables
└── README.md # Project documentation
Docker を使わずに実行する
Docker を使わずに MCP サーバーを実行するには:
cd server
pip install -r requirements.txt
python app.py
Docker を使わずにエージェントサービスを実行するには:
cd agents
pip install -r requirements.txt
python agent_server.py
ライセンス
MIT
謝辞
- Google Forms API
- エージェントフレームワークを提供する CamelAIOrg
- Model Context Protocol(MCP)仕様
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。