Telegram MCP サーバー
🤖 MCP の活用
以下は、 Claudeの Telegram MCP 機能のデモです。
基本的な使用例:

例: Claude にチャット履歴を分析して応答を送信するよう依頼する:

グループにメッセージを正常に送信しました:

ご覧のとおり、AI は Telegram アカウントとシームレスにやり取りし、チャット、メッセージ、その他のデータを自然な方法で取得して表示します。
Claude、Cursor、そしてMCP対応クライアント向けのフル機能のTelegram統合。TelethonとModel Context Protocol(MCP)を搭載しています。このプロジェクトでは、Telegramアカウントをプログラムで操作し、メッセージングからグループ管理まですべてを自動化できます。
Related MCP server: Telegram MCP Server
🚀 機能とツール
このMCPサーバーは、Telegramツールの膨大なスイートを公開しています。Telegram /Telethonの主要な機能はすべてツールとして利用可能です。
チャットとグループ管理
get_chats(page, page_size) : チャットのページ区切りリスト
list_chats(chat_type, limit) : メタデータとフィルタリングを含むチャットを一覧表示する
get_chat(chat_id) : チャットの詳細情報
create_group(title, user_ids) : 新しいグループを作成する
create_channel(title, about, megagroup) : チャンネルまたはスーパーグループを作成する
edit_chat_title(chat_id, title) : チャット/グループ/チャンネルのタイトルを変更する
delete_chat_photo(chat_id) : チャット/グループ/チャンネルの写真を削除する
leave_chat(chat_id) : グループまたはチャンネルから退出する
get_participants(chat_id) : すべての参加者を一覧表示する
get_admins(chat_id) : すべての管理者を一覧表示する
get_banned_users(chat_id) : 禁止されたユーザーをすべて一覧表示する
prove_admin(chat_id, user_id) : ユーザーを管理者に昇格させる
demote_admin(chat_id, user_id) : 管理者をユーザーに降格する
ban_user(chat_id, user_id) : ユーザーを禁止する
unban_user(chat_id, user_id) : ユーザーのbanを解除する
get_invite_link(chat_id) : 招待リンクを取得する
export_chat_invite(chat_id) : 招待リンクをエクスポートする
import_chat_invite(ハッシュ) : 招待ハッシュでチャットに参加する
join_chat_by_link(link) : 招待リンクでチャットに参加する
メッセージング
get_messages(chat_id, page, page_size) : ページ分けされたメッセージ
list_messages(chat_id, limit, search_query, from_date, to_date) : フィルタリングされたメッセージ
send_message(chat_id, message) : メッセージを送信する
reply_to_message(chat_id, message_id, text) : メッセージに返信する
edit_message(chat_id, message_id, new_text) : メッセージを編集する
delete_message(chat_id, message_id) : メッセージを削除する
forward_message(from_chat_id, message_id, to_chat_id) : メッセージを転送する
pin_message(chat_id, message_id) : メッセージをピン留めする
unpin_message(chat_id, message_id) : メッセージのピン留めを解除する
mark_as_read(chat_id) : すべてを既読にする
get_message_context(chat_id, message_id, context_size) : メッセージのコンテキスト
get_history(chat_id, limit) : 完全なチャット履歴
get_pinned_messages(chat_id) : ピン留めされたメッセージを一覧表示する
get_last_interaction(contact_id) : 連絡先との最新のメッセージ
連絡先管理
list_contacts() : すべての連絡先を一覧表示する
search_contacts(query) : 連絡先を検索する
add_contact(phone, first_name, last_name) : 連絡先を追加する
delete_contact(user_id) : 連絡先を削除する
block_user(user_id) : ユーザーをブロックする
unblock_user(user_id) : ユーザーのブロックを解除する
import_contacts(contacts) : 連絡先を一括インポートする
export_contacts() : すべての連絡先をJSONとしてエクスポートする
get_blocked_users() : ブロックされたユーザーを一覧表示する
get_contact_ids() : すべての連絡先IDを一覧表示する
get_direct_chat_by_contact(contact_query) : 連絡先との直接チャットを検索する
get_contact_chats(contact_id) : 連絡先とのすべてのチャットを一覧表示する
ユーザーとプロフィール
get_me() : ユーザー情報を取得する
update_profile(first_name, last_name, about) : プロフィールを更新する
delete_profile_photo() : プロフィール写真を削除する
get_user_photos(user_id, limit) : ユーザーのプロフィール写真を取得する
get_user_status(user_id) : ユーザーのオンラインステータスを取得する
メディア
get_media_info(chat_id, message_id) : メッセージ内のメディアに関する情報を取得する
検索と発見
search_public_chats(query) : 公開チャット/チャンネル/ボットを検索
search_messages(chat_id, query, limit) : チャット内のメッセージを検索する
resolve_username(username) : ユーザー名をIDに解決する
ステッカー、GIF、ボット
get_sticker_sets() : ステッカーセットを一覧表示する
get_bot_info(bot_username) : ボットに関する情報を取得する
set_bot_commands(bot_username, commands) : ボットコマンドを設定する(ボットアカウントのみ)
プライバシー、設定、その他
get_privacy_settings() : プライバシー設定を取得する
set_privacy_settings(key, allow_users, disallow_users) : プライバシー設定を設定する
mute_chat(chat_id) : 通知をミュートする
unmute_chat(chat_id) : 通知のミュートを解除する
archive_chat(chat_id) : チャットをアーカイブする
unarchive_chat(chat_id) : チャットをアーカイブ解除する
get_recent_actions(chat_id) : 最近の管理者のアクションを取得する
削除された機能
サーバー上のファイルパスへの直接アクセスを必要とするツール( send_file 、 download_media 、 set_profile_photo 、 edit_chat_photo 、 send_voice 、 send_sticker 、 upload_file )はmain.pyから削除されました。これは、現在の MCP 環境におけるファイル添付とローカルファイルシステムパスの処理に関する制限によるものです。
さらに、Telethon ライブラリまたは Telegram API の相互作用における信頼性に関する継続的な問題のため、GIF 関連のツール ( get_gif_search 、 get_saved_gifs 、 send_gif ) は削除されました。
📋 要件
Python 3.10以上
Claude DesktopまたはCursor (または任意の MCP クライアント)
🔧 インストールとセットアップ
1. フォーク&クローン
2. 仮想環境を作成する
3. セッション文字列を生成する
指示に従って認証し、 .envファイルを更新します。
4. .env を設定する
.env.exampleを.envにコピーし、値を入力します。
my.telegram.org/appsで API 資格情報を取得します。
🐳 Docker で実行する
Docker と Docker Compose がインストールされている場合は、コンテナー内でサーバーを構築して実行できるため、依存関係の管理が簡素化されます。
1. イメージを構築する
プロジェクトのルート ディレクトリから、Docker イメージをビルドします。
2. コンテナの実行
次の 2 つのオプションがあります。
オプション A: Docker Compose を使用する (ローカル使用に推奨)
この方法ではdocker-compose.ymlファイルを使用し、 .envファイルから資格情報を自動的に読み取ります。
**
.envファイルの作成:**プロジェクトのルートに、TELEGRAM_API_ID、TELEGRAM_API_HASH、TELEGRAM_SESSION_STRING(またはTELEGRAM_SESSION_NAME)を含む.envファイルがあることを確認してください.env.exampleをテンプレートとして使用してください。Compose を実行します。
docker compose up --buildデタッチドモード (バックグラウンド) で実行するには、
docker compose up -d使用します。サーバーを停止するには、
Ctrl+Cを押します。
オプションB:
資格情報を環境変数として渡して、コンテナを直接実行できます。
プレースホルダーを実際の資格情報に置き換えます。
ファイルベースのセッションを希望する場合は、
TELEGRAM_SESSION_STRINGではなく-e TELEGRAM_SESSION_NAME=your_session_file_nameを使用します (ボリュームのマウントが必要です。例についてはdocker-compose.ymlを参照してください)。-itフラグはサーバーと対話するために重要です。
⚙️ Claude と Cursor の設定
MCP構成
Claude デスクトップ構成 (例: ~/Library/Application Support/Claude/claude_desktop_config.json ) またはカーソル構成 ( ~/.cursor/mcp.json ) を編集します。
📝 コードと出力を含むツールの例
以下に、最も一般的に使用されるツールとその実装およびサンプル出力の例を示します。
チャットの取得
出力例:
メッセージの送信
出力例:
チャット招待リンクの取得
get_invite_link関数は、複数のフォールバック メソッドを備えているため、特に堅牢です。
出力例:
招待リンク経由でチャットに参加する
出力例:
公開チャットの検索
出力例:
連絡先と直接チャットする
出力例:
🎮 使用例
「最近のチャットを表示」
「チャット 123456789 に「Hello world」を送信」
「電話番号 +1234567890、名前 John Doe の連絡先を追加」
「ユーザー111、222、333で「プロジェクトチーム」グループを作成する」
「チャット123456789のメッセージ42からメディアをダウンロードしてください」
「チャット 123456789 の通知をミュートする」
「ユーザー111をグループ123456789の管理者に昇格する」
「ニュース」に関する公開チャンネルを検索
「招待リンクhttps://t.me/+AbCdEfGhIjKで Telegram グループに参加してください」
「保存したメッセージにステッカーを送信する」
「すべてのステッカーセットを入手」
これらのツールは、Claude、Cursor、または MCP 互換クライアントの自然言語で使用できます。
🧠 エラー処理と堅牢性
この実装には包括的なエラー処理が含まれます。
セッション管理: ファイルベースと文字列ベースの両方のセッションで動作します
エラー報告: 詳細なエラーが
mcp_errors.logに記録されますグレースフルデグラデーション:重要な機能のための複数のフォールバックアプローチ
ユーザーフレンドリーなメッセージ: 技術的なエラーではなく、明確で実用的なエラーメッセージ
アカウント種別検出:ボットアカウントを必要とする機能は、ユーザーアカウントで使用されると検出して通知します。
招待リンク処理:様々なリンク形式と既存メンバーのケースを処理
このコードは、一般的な Telegram API の問題や制限に対して堅牢になるように設計されています。
🛠️ 貢献ガイド
このリポジトリをフォークする: chigwell/telegram-mcp
フォークをクローンします:
git clone https://github.com/<your-github-username>/telegram-mcp.git新しいブランチを作成します。
git checkout -b my-feature変更を加え、必要に応じてテスト/ドキュメントを追加します。
明確な説明を添えて、chigwell/telegram-mcpにプル リクエストをプッシュして開きます。
レビューのために、PR に**@chigwell または @l1v0n1 をタグ付けしてください**。
🔒 セキュリティに関する考慮事項
.envセッション文字列により、Telegram アカウントへのフルアクセスが付与されます。安全に保管してください。
すべての処理はローカルで行われ、Telegram の API 以外の場所にデータは送信されません。
.env.exampleテンプレートとして使用し、実際の.envファイルを非公開にしておきます。テストファイルは
.gitignoreで自動的に除外されます。
🛠️ トラブルシューティング
MCP クライアント (Claude/Cursor) とターミナルのログでエラーを確認します。
詳細なエラー ログは
mcp_errors.logにあります。インタープリターエラーですか?
.venvが作成され、選択されていることを確認してください。**データベースロックですか?**ファイルベースのセッションではなく、セッション文字列認証を使用してください。
**iCloud/Dropbox に問題がありますか?**奇妙なエラーが表示される場合は、プロジェクトをスペースなしのローカル パスに移動してください。
Telegram のパスワードを変更した場合、または認証エラーが表示された場合は**、セッション文字列を再生成します**。
**ボット専用機能は、**通常のユーザー アカウントで使用すると明確なメッセージが表示されます。
**テスト スクリプトが失敗しましたか?**有効なテスト アカウント/グループの
.env内のテスト構成を確認してください。
📄 ライセンス
このプロジェクトは、Apache 2.0 ライセンスに基づいてライセンスされます。