Telegram AI Assistant Bot について
Telegram でユーザーとやり取りし、複数の MCP サーバーを使って検索、文書処理、計算、Google サービスの操作を行う AI エージェントです。ツールの動的検出、実行戦略の設定、メモリ管理に対応しています。
主な機能
- 01Telegram でのメッセージ対応
- 02複数の MCP サーバーへの接続
- 03ツールの動的検出
- 04複数のエージェント戦略
- 05メモリの保存と取得
- 06ペルソナ設定
活用シーン
- 01DuckDuckGo でウェブ検索
- 02文書処理とセマンティック検索
- 03メール送信や Google Sheets の操作
- 04タスクに関するメモリの保存と取得
MCP 対応
stdio と sse で複数の MCP サーバーに接続し、初期化時にツールを検出します。Gmail、Google Sheets、ウェブ検索、文書処理、計算のツールをタスクに応じて利用します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Telegram AI アシスタントボット
概要
Telegram AI アシスタントボットは、Cortex-R という名前の推論駆動型 AI エージェントで、Telegram を介してユーザーと対話するように設計されています。複数の Model Context Protocol(MCP)サーバーを使用して、ウェブ検索、ドキュメント処理、数学計算、Google サービス(Gmail や Google Sheets など)との連携といったさまざまなタスクを実行します。このボットは、stdio と sse の両方のトランスポートプロトコルを使用して、これらの MCP サーバーと通信します。
機能
- Telegram 連携:Telegram を通じてユーザーと対話し、質問やタスクに応答します。
- 複数の MCP サーバーのサポート:さまざまな機能を提供するために、複数の MCP サーバーを利用します。
- メール管理のための Gmail 連携。
- スプレッドシート操作のための Google Sheets 連携。
- DuckDuckGo を使用したウェブ検索機能。
- ドキュメント処理とセマンティック検索。
- 数学計算。
- ツールの動的検出:初期化時に MCP サーバーからツールを自動的に検出します。
- カスタマイズ可能なエージェント戦略:慎重型、1 回再試行型、すべて探索型など、さまざまな戦略をサポートします。
- メモリ管理:メモリ項目を取得・保存して、タスク解決能力を高めます。
- 設定可能なペルソナ:口調、冗長さ、振る舞いをカスタマイズできます。
アーキテクチャ
このボットは、次のコンポーネントを使用して構築されています。
1. Telegram ボット連携
ボットは python-telegram-bot ライブラリを使用して telegram_agent.py に実装されています。ユーザーメッセージや /start、/help などのコマンドを処理します。ユーザーの質問は Cortex-R エージェントによって処理されます。
2. コアコンポーネント
- エージェントループ(
core/loop.py):知覚、計画、ツール実行を含む、エージェントのメイン実行ループを管理します。 - セッション管理(
core/session.py):stdioとsseのトランスポートプロトコルを使用して、複数の MCP サーバーとの通信を処理します。 - 戦略(
core/strategy.py):意思決定のための計画戦略を実装します。
3. MCP サーバー
ボットは、次の MCP サーバーと連携します。
- Gmail サーバー(
gmail_server.py):メールの送信、読み取り、ゴミ箱への移動などのメール操作を管理します。 - Google Sheets サーバー(
mcp_gdrive_server.py):Google Sheets の作成、更新、共有などのスプレッドシート操作を処理します。 - ウェブ検索サーバー(
mcp_server_3.py):DuckDuckGo を使用してウェブ検索を実行し、ウェブページのコンテンツを取得します。 - ドキュメント処理サーバー(
mcp_server_2.py):セマンティック検索とインデックス作成のためにドキュメントを処理します。 - 数学サーバー(
mcp_server_1.py):数学計算を実行します。
4. 設定
- プロファイル(
config/profiles.yaml):戦略、メモリ設定、MCP サーバーの詳細など、エージェントの設定を定義します。 - モデル(
config/models.json):テキスト生成と埋め込みに使用するモデルを指定します。 - 環境変数(
.env):API キーやファイルパスなどの機密情報を保存します。
ワークフロー
-
初期化:
- ボットは
profiles.yamlから MCP サーバーの設定を読み込みます。 MultiMCPディスパッチャーを初期化し、設定されたすべての MCP サーバーからツールを検出します。
- ボットは
-
ユーザーとの対話:
- ユーザーは Telegram を介してボットと対話します。
- ボットはユーザーメッセージを処理し、タスクを完了するために必要なツールを判断します。
-
タスクの実行:
- エージェントは知覚を使ってユーザーの質問を理解します。
- 定義された戦略を使用して次のアクションを計画します。
- 適切な MCP サーバーから必要なツールを実行します。
- 結果を取得して、ユーザーに応答します。
-
メモリ管理:
- ツールの出力とユーザーの質問をメモリ項目として保存します。
- タスク解決を支援するために、関連するメモリを取得します。
設定
環境変数
.env ファイルに次の変数を設定します。
GEMINI_API_KEY:Gemini モデルの API キー。SERVICE_ACCOUNT_PATH:Google サービスアカウント JSON ファイルへのパス。DRIVE_FOLDER_ID:ファイルの保存先となる Google Drive フォルダーの ID。CREDENTIALS_PATH:OAuth クライアント認証情報ファイルへのパス。TOKEN_PATH:Google API 用のトークンファイルへのパス。
MCP サーバーの設定
config/profiles.yaml で MCP サーバーを定義します。
mcp_servers:
- id: gmail
type: stdio
script: gmail_server.py
cwd: <path-to-server>
- id: gdrive
type: stdio
script: mcp_gdrive_server.py
cwd: <path-to-server>
- id: math
type: sse
script: mcp_server_1.py
url: http://localhost:8000/sse
cwd: <path-to-server>
- id: documents
type: stdio
script: mcp_server_2.py
cwd: <path-to-server>
- id: websearch
type: stdio
script: mcp_server_3.py
cwd: <path-to-server>
インストール
- リポジトリをクローンします。
git clone <repository-url> cd <repository-folder> - uv を使用して依存関係を同期します。
uv sync .envで環境変数を設定します。- Telegram ボットを起動します。
uv run telegram_agent.py
使用方法
/startコマンドを使用して Telegram でボットを起動します。- 次のような質問やタスクをボットに送信します。
- 「現在の F1 の順位を調べて、Google スプレッドシートで共有してください。」
- 「件名を『Meeting Update』にして、[email protected] にメールを送信してください。」
コントリビューション
コントリビューションを歓迎します。次の手順に従ってください。
- リポジトリをフォークします。
- 機能追加またはバグ修正用の新しいブランチを作成します。
- 変更内容の詳細な説明を添えて、プルリクエストを送信します。
ライセンス
このプロジェクトは MIT ライセンスの下でライセンスされています。詳細については LICENSE ファイルをご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。