Quirox Telegram Bot Backend について
Quirox Telegram Bot Backendは、Google Sheetsやウェブ検索ツールを使うGeminiベースのエージェント向けFastAPIバックエンドです。MCPクライアントとサーバーを備え、Telegram専用コードは現在プレースホルダーです。
主な機能
- 01Geminiベースのエージェント
- 02Google Sheets操作
- 03DuckDuckGo検索
- 04URLからのテキスト取得
- 05FastAPIの/chatエンドポイント
活用シーン
- 01チャット経由でのスプレッドシート作成・更新
- 02ウェブ情報の検索
- 03URL指定によるウェブページ本文の取得
MCP 対応
MCPサーバーはGoogle Sheets、ウェブ検索、URL取得のツールを公開し、MCPクライアントはクエリをGeminiに渡してツール呼び出しを管理します。Gmail機能は実装されていますが、現在は無効です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Quirox Telegram Bot バックエンド
このプロジェクトは、Quirox Telegram Bot のバックエンドサービスを提供します。Google Sheets、Gmail(現在はコメントアウトされています)、DuckDuckGo によるウェブ検索など、さまざまなツールと連携できる AI エージェントを備えています。Model Context Protocol(MCP)を使用して、AI モデル(Google Gemini)と利用可能なツール間の通信を管理します。バックエンドは FastAPI ウェブサーバーを介して公開されます。
デモ
機能
- AI エージェント: 推論とタスクの実行に Google Gemini(Flash モデル)を使用します。
- ツール連携:
- Google Sheets: スプレッドシートの作成、データの読み書き、シートの管理(一覧表示、コピー、名前変更)、共有を行います。
helpers/ghseet.py(GoogleSheetsService経由)を使用します。 - ウェブ検索: DuckDuckGo を使用してウェブを検索します(
helpers/search_tools.py)。 - ウェブコンテンツの取得: URL からテキストコンテンツを取得して解析します(
helpers/search_tools.py)。 - (実験的/無効)Gmail: メールの送信、閲覧、管理用の関数が
helpers/gmail_tools.pyにありますが、mcp_server.pyではコメントアウトされているようです。
- Google Sheets: スプレッドシートの作成、データの読み書き、シートの管理(一覧表示、コピー、名前変更)、共有を行います。
- MCP フレームワーク:
mcp_server.py:MCP サーバーを実行し、ツール(Sheets、Search、Fetch)を AI モデルに公開します。mcp_client.py:MCP サーバーと通信し、ユーザーのクエリを Gemini モデルに送信し、ツール呼び出しを処理して、会話の流れを管理します。
- FastAPI インターフェース:
main.py:FastAPI ウェブサーバーを起動し、HTTP リクエストを介して AI エージェントとやり取りするための/chatエンドポイントを提供します。
プロジェクト構成
├── README.md # このファイル ├── .env # 環境変数(API キー、パス)— 作成が必須です ├── .gitignore # Git の無視パターン ├── requirements.txt # Python の依存関係 ├── main.py # FastAPI アプリケーションのエントリーポイント ├── mcp_client.py # Gemini および MCP サーバーと連携する MCP クライアントのロジック ├── mcp_server.py # ツールを公開する MCP サーバー ├── helpers/ # ヘルパーモジュールとツールのディレクトリ │ ├── config.py # Gemini API キーを読み込みます │ ├── gsheet_tools.py # (古い可能性がある)Google Sheets 用 MCP ツール定義 │ ├── ghseet.py # 単独で使用できる GoogleSheetsService クラス │ ├── gmail_tools.py # Gmail サービスクラスと MCP ツール定義(現在未使用) │ ├── search_tools.py # DuckDuckGo 検索およびウェブコンテンツ取得のクラス │ └── init.py ├── telegram_bot/ # (空/プレースホルダー?)Telegram Bot 固有のコード用ディレクトリ └── bot/ # (空/プレースホルダー?)別の Bot ディレクトリ候補
## Setup
### 1. Prerequisites
* Python 3.8+
* Access to Google Cloud Platform for Sheets/Drive API and potentially Gmail API.
* Google Gemini API Key.
### 2. Clone the Repository
```bash
git clone <your-repository-url>
cd <repository-directory>
3. 依存関係のインストール
pip install -r requirements.txt
4. 環境変数
ルートディレクトリに .env ファイルを作成します。.env.example がある場合はコピーし、ない場合は新規作成してください。次の変数を追加します。
# Google Gemini API Key
GEMINI_API_KEY=your_gemini_api_key
# Google Cloud Credentials (Choose ONE method: Service Account or OAuth)
# Method 1: Service Account (Recommended for servers)
# Path to your service account JSON key file
SERVICE_ACCOUNT_PATH=path/to/your/service_account.json
# Optional: Google Drive Folder ID to work within
DRIVE_FOLDER_ID=your_google_drive_folder_id
# Method 2: OAuth 2.0 (Requires user interaction for the first run)
# Path to your OAuth client secrets file (credentials.json)
CREDENTIALS_PATH=path/to/your/credentials.json
# Path where the OAuth token will be stored after authorization
TOKEN_PATH=token.json # Keep default unless you have a reason to change
# Method 3: Base64 Encoded Service Account Config (Alternative)
# CREDENTIALS_CONFIG=your_base64_encoded_service_account_json_string
重要:
- Google Cloud プロジェクトで Google Sheets API と Google Drive API が有効になっていることを確認してください。
- OAuth(
CREDENTIALS_PATH)を使用する場合、初回にmcp_server.py(またはGoogleSheetsService/GmailServiceを使用するコード)を実行すると、アプリケーションの認証を行うためのブラウザーウィンドウが開きます。生成されたtoken.jsonが保存されます。 - サービスアカウント(
SERVICE_ACCOUNT_PATH)を使用する場合は、サービスアカウントのメールアドレスに、対象の Google Sheets または Drive フォルダーで適切な権限(例:編集者)が付与されていることを確認してください。
5. Google Cloud 認証の設定
- サービスアカウント:
- Google Cloud Console -> IAM & Admin -> Service Accounts に移動します。
- サービスアカウントを作成するか、既存のものを使用します。
- サービスアカウントのキー(JSON 形式)を作成し、ダウンロードします。
.envのSERVICE_ACCOUNT_PATHに、ダウンロードした JSON ファイルのパスを設定します。- 必要に応じて、特定の Google Drive フォルダーやスプレッドシートをサービスアカウントのメールアドレスと共有します。
- OAuth 2.0:
- Google Cloud Console -> APIs & Services -> Credentials に移動します。
- タイプが「Desktop app」の「OAuth 2.0 Client ID」を作成します。
- クライアントシークレットの JSON ファイルをダウンロードします。
- ファイル名を
credentials.jsonに変更します(または.envのCREDENTIALS_PATHを更新します)。
使い方
このアプリケーションは、並行して実行する必要がある 2 つの主要部分(MCP サーバーと、MCP クライアントを使用する FastAPI フロントエンド)で構成されています。
1. MCP サーバーを実行する
このサーバーは、AI にツール(Sheets、Search)を提供します。
python mcp_server.py
このターミナルウィンドウは開いたままにしてください。
2. FastAPI アプリケーションを実行する
チャットリクエストを待ち受けるウェブサーバーを起動します。
python main.py
# or using uvicorn directly for more options:
# uvicorn main:app --reload --host 0.0.0.0 --port 8000
3. API を介して操作する
これで、/chat エンドポイントに POST リクエストを送信できます。
curl を使用した例:
curl -X POST "http://localhost:8000/chat" \
-H "Content-Type: application/json" \
-d '{"message": "Create an excel sheet named '\''Test Sheet'\'' and add the headers Name, Age, City in the first row."}'
レスポンスには、MCP サーバー経由でツールとやり取りする場合も含めて、AI が生成した最終回答が含まれます。
主要モジュール(helpers/)
config.py:環境変数からGEMINI_API_KEYを読み込みます。search_tools.py:ウェブ検索を行うDuckDuckGoSearcherと、URL からコンテンツを取得するWebContentFetcherが含まれています。レート制限にも対応しています。ghseet.py:Google Sheets および Drive API にクラスベースのインターフェース(作成、読み取り、更新、一括更新、行/列の追加、シート一覧表示、共有など)を提供するGoogleSheetsServiceを実装しています。認証は内部で処理されます。gmail_tools.py:GoogleSheetsServiceと同様の構成で、Gmail の操作を行うGmailServiceを実装しています。メールタスク用の MCP ツール定義が含まれていますが、現在はmcp_server.pyで無効になっているようです。gsheet_tools.py:Google Sheets 用の古い関数ベースの MCP ツール定義が含まれています。おそらくghseet.pyに置き換えられています。
依存関係
主な依存関係は次のとおりです。
fastapi、uvicorn:ウェブサーバー用。mcp:Model Context Protocol ライブラリ。google-api-python-client、google-auth-oauthlib、google-auth:Google API ライブラリ。google-generativeai:Google Gemini クライアントライブラリ。python-dotenv:環境変数の読み込み用。httpx、beautifulsoup4:ウェブ検索とコンテンツ取得用。rich:書式付きコンソール出力用。
すべての一覧は requirements.txt を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。
