local-only server
The server can only run on the client’s local machine because it depends on local resources.
Integrations
Enables interaction with Telegram chats, allowing users to retrieve lists of chats, fetch message history, and send messages directly through the Telegram platform.
Telegram MCP サーバー
🤖 MCP の活用
以下は、Claude の Telegram MCP 機能のデモです。
基本的な使用例:
- 例: Claude にチャット履歴を分析して応答を送信するよう依頼する:
- グループにメッセージを正常に送信しました:
ご覧のとおり、AI は Telegram アカウントとシームレスにやり取りし、チャット、メッセージ、その他のデータを自然な方法で取得して表示します。
Claude、Cursor、そしてMCP対応クライアント向けのフル機能のTelegram統合。TelethonとModel Context Protocol(MCP)を搭載しています。このプロジェクトでは、Telegramアカウントをプログラムで操作し、メッセージングからグループ管理まですべてを自動化できます。
🚀 機能とツール
この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) : チャット/グループ/チャンネルのタイトルを変更する
- edit_chat_photo(chat_id, file_path) : チャット/グループ/チャンネルの写真を設定する
- 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) : ピン留めされたメッセージを一覧表示する
連絡先管理
- 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_last_interaction(contact_id) : 連絡先との最新のメッセージ
ユーザーとプロフィール
- get_me() : ユーザー情報を取得する
- update_profile(first_name, last_name, about) : プロフィールを更新する
- set_profile_photo(file_path) : プロフィール写真を設定する
- delete_profile_photo() : プロフィール写真を削除する
- get_user_photos(user_id, limit) : ユーザーのプロフィール写真を取得する
- get_user_status(user_id) : ユーザーのオンラインステータスを取得する
メディア
- send_file(chat_id, file_path, caption) : ファイルを送信する
- send_voice(chat_id, file_path) : 音声メッセージを送信する
- download_media(chat_id, message_id, file_path) : メディアをダウンロードする
- upload_file(file_path) : Telegramサーバーにファイルをアップロードする
- 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() : ステッカーセットを一覧表示する
- send_sticker(chat_id, file_path) : ステッカーを送信する
- get_gif_search(query, limit) : GIFを検索する
- send_gif(chat_id, gif_id) : GIFを送信する
- 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) : 最近の管理者のアクションを取得する
📋 要件
- Python 3.10以上
- テレソン
- MCP Python SDK
- Claude DesktopまたはCursor (または任意の MCP クライアント)
🔧 インストールとセットアップ
1. フォーク&クローン
2. 仮想環境を作成する
3. セッション文字列を生成する
指示に従って認証し、 .env
ファイルを更新します。
4. .env を設定する
.env.example
を.env
にコピーし、値を入力します。
my.telegram.org/appsで API 資格情報を取得します。
⚙️ 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
- フォークをクローンします:Copy
- 新しいブランチを作成します。Copy
- 変更を加え、必要に応じてテスト/ドキュメントを追加します。
- 明確な説明を添えて、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 ライセンスに基づいてライセンスされます。
🙏 謝辞
@chigwellと@l1v0n1によって管理されています。PR を歓迎します!
スターの歴史
This server cannot be installed
Claude for Desktop などの MCP 互換ホストを介して Telegram チャットと直接やり取りできるようにするサーバー。チャットの取得、メッセージの取得、メッセージの送信を行うツールを提供します。