MCP Telegram について
ボットではなく実際の Telegram ユーザーアカウントとしてサインインする、MTProto ベースの MCP サーバーです。Claude、Cursor、VS Code などの MCP クライアントから利用します。100 を超えるツールでメッセージの読み取り・検索・送信に加え、チャンネル、ストーリー、連絡先、フォルダを管理できます。サインインはローカルのブラウザで行い、セッションはローカルに保存されます。
主な機能
- 01ボット不要で MTProto による実ユーザーアカウントに接続
- 02メッセージの読み取り、検索、送信とグローバル検索
- 03チャンネルやグループのモデレーション、招待リンク、管理ログ
- 04ストーリー、連絡先、下書き、通知、フォルダの管理
- 05invoke_mtproto による任意の MTProto メソッドの呼び出し
活用シーン
- 01キーワードで Telegram の履歴メッセージを検索し内容を要約する
- 02チャンネルの設定、管理者権限、招待リンクを一括で管理する
- 03ボイスメッセージの文字起こしやチャットのメディアのダウンロード
MCP 対応
MCP サーバーとして、Telegram ユーザーアカウントのメッセージ、メディア、チャンネル管理のツールを MCP クライアントに公開します。セッションは ~/.telegram-agent/ に保存され、パスワードと同様に管理する必要があります。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
111掲載時のツール一覧 · 3 週間前に更新
このツールにパラメーターはありません。
詳細
mcp-telegram
Claude、Codex、Cursor、Claude Code、VS Code、Cline、Windsurf などの MCP クライアント向けの Telegram MCP サーバーです。MTProto 経由の実際の Telegram ユーザーアカウント、ブラウザベースのローカルサインイン、100 以上のツールを備えています。遅延読み込みとコンテキストコストの削減が必要ですか? スキルベースのコンパニオンである telegram-agent をご覧ください。
Model Context Protocol(MCP)サーバーです。Claude Desktop、Codex CLI、Cursor、Claude Code、VS Code、Cline、Windsurf、Goose、その他の MCP 互換クライアントを、MTProto 経由で実際の Telegram ユーザーアカウントに接続します。これにより、Telegram の UI をクリックして操作する代わりに、エージェントがチャットや自動化されたツール呼び出しから Telegram のチャットを読み取り、検索し、送信し、モデレートし、管理できるようになります。
用途: ダイアログの読み取りとメッセージのグローバル検索 · 送信/編集/転送/リアクション/投票 · メディアのダウンロードとボイスメモの文字起こし · チャンネルのモデレーション(BAN/制限/昇格、招待リンク、スローモード、管理ログ、フォーラムトピック) · ストーリー、連絡先、下書き、通知、フォルダ、プライバシーの管理 · その他なんでも生の MTProto ブリッジにフォールスルー。すべて単一のサインイン済みユーザーアカウントに対して実行され、ボットは不要です。
警告
このサーバーは(ボットではなく)実際の Telegram ユーザーとしてサインインします。セッションは
~/.telegram-agent/に保存されます。このディレクトリはパスワードと同様に扱ってください。
前提条件
- Node.js
>=20 - my.telegram.org/apps で取得した Telegram API 認証情報 —
api_idとapi_hash
より軽量なトランスポートをお探しですか?
このパッケージは MCP サーバーです — すべてのツールスキーマ(約 12,700 トークン)が、毎ターン、エージェントのコンテキストに常駐します。どの MCP クライアントにも、またシェル呼び出しができないホスト型ランタイムにも適しています。
お使いのエージェントが Claude Code / Codex CLI / Cursor / Gemini CLI / Cline / Windsurf であれば、同じ Telegram の機能面をユニバーサルエージェントスキルとして提供するコンパニオンパッケージ — telegram-agentがあります。エージェントは、プロンプトに Telegram が含まれる場合にのみスキルの手順を読み込むため、アイドル時のコンテキストコストが約 50 分の 1 になります。スタンドアロン(MCP サーバーを介在させません)ですが、このパッケージと同じ ~/.telegram-agent/ セッションストアを使用します — 一度サインインすれば、どちらか一方または両方を使えます。
npm i -g telegram-agent
telegram-agent login
npx skills add beautyfree/telegram-agent -a claude-code -g
MCP のインストール手順については以下に続きます。
インストール
オプション A — 自動、すべてのクライアント:
npx add-mcp mcp-telegram \
--env TELEGRAM_API_ID=123456 \
--env TELEGRAM_API_HASH=abc...
add-mcp(Neon 製)は、Claude Desktop、Claude Code、Cursor、VS Code、Codex、Gemini CLI、Cline、Zed、Goose、OpenCode などに適切な設定を書き込みます。対話式プロンプトでクライアントを選択してください。
重要
両方の環境変数が必須です。my.telegram.org/apps で取得してください。
オプション B — 手動設定:
Claude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"telegram": {
"command": "npx",
"args": ["-y", "mcp-telegram"],
"env": {
"TELEGRAM_API_ID": "123456",
"TELEGRAM_API_HASH": "abc..."
}
}
}
}
Cursor (~/.cursor/mcp.json)
{
"mcpServers": {
"telegram": {
"command": "npx",
"args": ["-y", "mcp-telegram"],
"env": {
"TELEGRAM_API_ID": "123456",
"TELEGRAM_API_HASH": "abc..."
}
}
}
}
VS Code (.vscode/mcp.json)
{
"servers": {
"telegram": {
"type": "stdio",
"command": "npx",
"args": ["-y", "mcp-telegram"],
"env": {
"TELEGRAM_API_ID": "123456",
"TELEGRAM_API_HASH": "abc..."
}
}
}
}
Claude Code
claude mcp add telegram \
-e TELEGRAM_API_ID=123456 \
-e TELEGRAM_API_HASH=abc... \
-- npx -y mcp-telegram
Codex CLI (~/.codex/config.toml) — install
[mcp_servers.telegram]
command = "npx"
args = ["-y", "mcp-telegram"]
env = { TELEGRAM_API_ID = "123456", TELEGRAM_API_HASH = "abc..." }
エージェントに次のように依頼します。
私の Telegram にサインインして。
エージェントが login ツールを呼び出します。ブラウザのタブが開きます。電話番号、SMS コード、そして 2 段階認証を設定している場合はそのパスワードを入力してください。タブに緑色のチェックマークが表示されたら、閉じてかまいません。これでセッションがローカルに保存され、エージェントがあなたの Telegram を読めるようになります。
別のアカウントを追加するには、エージェントに再度 login を呼び出すよう依頼してください。
ツール
Telegram のユーザーアカウント機能の全体をカバーする 102 個のツールです。よく使うものは以下に示し、残りは折りたたみ内にグループ分けしています。すべてのツールは省略可能な accountId を受け付けます(サインインしているアカウントが 1 つだけの場合は省略してください)。peer は数値のチャット id、@username、またはリテラルの "me"(Saved Messages)を受け付けます。
メニューのトップ:
| ツール | 機能 |
|---|---|
login | ブラウザベースのサインインフローを開きます。アカウントを追加します。 |
list_accounts | サインイン済みのアカウントを一覧表示します。 |
list_dialogs | ダイアログ/チャット/チャンネルを一覧表示します。フィルター: unread、archived、ignorePinned、folder、limit。 |
list_messages | ダイアログ内のメッセージを一覧表示します。新しい順です。 |
search_messages | 1 つのダイアログ内を検索します: query、filter(photos/videos/url/voice/...)、fromUser、日付範囲。 |
search_global | すべてのチャットを横断して検索します。 |
search_dialogs | 名前/タイトル/ユーザー名の部分文字列でダイアログを検索します。 |
send_message | テキストを送信します。replyTo、topMsgId、parseMode、schedule、silent をサポートします。 |
send_file | ファイル(ローカルパスまたは https:// URL)を送信します。アルバムにする場合は配列を渡します。 |
download_media | メッセージ上のメディアをディスクに保存します。 |
transcribe_message | ボイス/ビデオノートを文字起こしします(Premium)。 |
invoke_mtproto | 任意の生の MTProto メソッドを名前で呼び出します。peer/channel/user の文字列を自動解決します。 |
セッション(ローカル)(4)
これらはローカル専用です: ~/.telegram-agent/ にどの Telegram セッションが存在するか、および設定 UI を管理します。サインインフロー自体を除いて Telegram API の呼び出しは行いません。
| ツール | 機能 |
|---|---|
list_accounts | サインイン済みのアカウントを一覧表示します。 |
login | ブラウザベースのサインイン。アカウントを追加します。 |
logout | ローカルセッションを破棄し、Telegram 側でも失効させます。 |
open_settings | ローカル設定ページを開きます(ツールサーフェス + 読み取り専用)。 |
プロフィール(5)
| ツール | 機能 |
|---|---|
get_me | 認証済みユーザーのプロフィールを返します。 |
update_profile | 自分の名/姓と自己紹介を変更します。 |
update_my_username | 自分の @username を設定または削除します。 |
set_birthday | アカウントの誕生日を設定します。 |
set_profile_photo | 新しいアバター(ローカルパスまたは URL)をアップロードします。 |
ダイアログの検出(5)
| ツール | 機能 |
|---|---|
list_dialogs | ダイアログを一覧表示します。フィルター: unread、archived、ignorePinned、folder、limit。 |
search_dialogs | 名前/タイトル/ユーザー名の部分文字列でダイアログを検索します。 |
resolve_username | @username をユーザー/チャンネル/チャットのエンティティに解決します。 |
list_folders | カスタムダイアログフォルダー(チャットフィルター)を一覧表示します。 |
list_contacts | 連絡先を一覧表示します。 |
メッセージ — 読み取りと検索(6)
| ツール | 機能 |
|---|---|
list_messages | ダイアログ内のメッセージを一覧表示します。 |
search_messages | 1 つのダイアログ内を検索します(テキスト、種類フィルター、送信者、日付範囲)。 |
search_global | すべてのチャットを横断して検索します。 |
get_message | id で 1 つ以上のメッセージを取得します。 |
get_message_reactions | メッセージへのリアクションを取得します。 |
mark_as_read | id までのメッセージを既読にします。 |
メッセージ — 書き込み(8)
| ツール | 機能 | | --- | --- | | `send_message` | テキストを送信します。 | | `edit_message` | 以前に送信したメッセージを編集します。 | | `delete_messages` | ID で削除します (任意で全員に対して取り消し可能)。 | | `forward_messages` | ダイアログ間でメッセージを転送します。 | | `pin_message` / `unpin_message` | ダイアログ内でピン留め / ピン留め解除します。 | | `send_reaction` | メッセージにリアクションを設定します。 | | `send_message_to_phone` | 電話番号に送信し、一時的な連絡先を自動的に作成します。 |メディア (4)
| ツール | 機能 |
|---|---|
send_file | ファイル (パスまたは URL) を送信します。配列でアルバムに対応します。 |
download_media | メッセージのメディアをディスクに保存します。 |
download_profile_photo | 相手のアバターをディスクに保存します。 |
transcribe_message | 音声/動画を文字起こしします (Premium)。 |
投票 (4)
| ツール | 機能 |
|---|---|
send_poll | 投票を送信します。クイズ、多肢選択、匿名、締切期間に対応します。 |
vote_poll | 投票します。 |
close_poll | 投票を確定します。 |
get_poll_results | 集計結果を取得します。 |
リアクション (3)
| ツール | 機能 |
|---|---|
send_reaction | メッセージに絵文字リアクションを設定します。 |
get_message_reactions | リアクションを読み取ります。 |
set_default_reaction | アカウント全体のデフォルトを設定します。 |
ストーリー (6)
| ツール | 機能 |
|---|---|
list_stories | 連絡先のストーリーのフィードです。 |
get_peer_stories | ある相手のストーリーです。 |
send_story | ストーリーを投稿します (写真または動画)。 |
delete_story | 自分のストーリーを削除します。 |
view_story | ストーリーを閲覧済みにします。 |
get_story_viewers | 自分のストーリーを閲覧した人を一覧表示します。 |
チャンネル / グループのモデレーション (11)
| ツール | 機能 |
|---|---|
ban_user | 完全な BAN を行います (任意で untilDate)。 |
unban_user | 制限を解除します。 |
restrict_user | カスタム権限マスクを適用します。 |
promote_admin | 管理者権限を付与します (役職付き)。 |
demote_admin | 管理者権限を剥奪します。 |
invite_user | ユーザーをチャンネル/スーパーグループに追加します。 |
kick_participant | チャット/チャンネルからキックします。 |
get_participant | 単一の参加者の情報を取得します。 |
list_participants | フィルター (管理者/BAN 済み/ボット/...) と部分文字列検索でメンバーを一覧表示します。 |
delete_user_history | あるユーザーによるすべてのメッセージを削除します。 |
get_admin_log | イベントタイプフィルター付きで最近の管理者イベントを取得します。 |
チャンネル / グループの設定 (12)
| ツール | 機能 |
|---|---|
edit_title | タイトルを変更します (チャンネル、スーパーグループ、基本グループで機能します)。 |
edit_about | 説明を変更します。 |
edit_photo | アバターを変更します (パスまたは URL)。 |
update_username | 公開 @username を設定/解除します。 |
check_username | 利用可能かどうかを確認します。 |
set_slow_mode | スローモードの秒数を設定します。 |
toggle_signatures | チャンネル投稿の著者署名を切り替えます。 |
toggle_pre_history_hidden | 新規メンバーから履歴を非表示にします。 |
toggle_join_request | 参加に管理者の承認を必須にします。 |
leave_channel | チャンネル/スーパーグループから退出します。 |
get_channel_info | 拡張情報 (説明、件数、リンクされたチャット、スローモード)。 |
get_user_info | 拡張ユーザー情報 (プロフィール、共通のチャット)。 |
チャンネル / グループのライフサイクル (4)
| ツール | 機能 |
|---|---|
create_channel | 新しいブロードキャストチャンネルまたはスーパーグループを作成します (任意でフォーラムモード)。 |
delete_channel | 完全に削除します。 |
migrate_chat | 基本グループ → スーパーグループへ移行します。 |
transfer_ownership | 作成者の権限を譲渡します (2FA パスワードが必要です)。 |
招待リンク (4)
| ツール | 機能 |
|---|---|
create_invite_link | 任意の有効期限、使用回数上限、参加リクエスト制限を付けた新しいリンクを作成します。 |
list_invite_links | 有効または無効化されたリンクを一覧表示します。 |
revoke_invite_link | 特定のリンクを無効化します。 |
list_invite_joiners | リンク経由で参加したユーザーを一覧表示します。 |
フォーラムトピック (3)
| ツール | 機能 |
|---|---|
list_topics | フォーラムトピックを一覧表示します。 |
create_topic | 新しいトピックを作成します。 |
edit_topic | 名前変更、アイコン変更、クローズ、非表示。 |
下書き (3)
| ツール | 機能 |
|---|---|
save_draft | ダイアログの下書きを保存します。 |
clear_draft | ダイアログの下書きを破棄します。 |
list_drafts | すべてのダイアログの下書きを一覧表示します。 |
通知 (4)
| ツール | 機能 |
|---|---|
mute_peer | チャットをミュートします(任意の untilDate)。 |
unmute_peer | ミュートを解除します。 |
get_notify_settings | 設定を読み取ります。 |
set_notify_settings | ミュート、プレビュー、サウンド、ストーリーミュートを更新します。 |
フォルダ(チャットフィルター) (4)
| ツール | 機能 |
|---|---|
create_folder | 包含/除外ルールを指定して新しいフォルダを作成します。 |
edit_folder | フォルダのルールを置き換えます。 |
delete_folder | フォルダを削除します。 |
reorder_folders | 表示順を設定します。 |
連絡先 (4)
| ツール | 機能 |
|---|---|
list_contacts | すべての連絡先。 |
add_contact | ユーザーを連絡先に追加します。 |
delete_contact | ユーザーを連絡先から削除します。 |
search_contacts | 連絡先とグローバルディレクトリを検索します。 |
プライバシーとブロック (5)
| ツール | 機能 |
|---|---|
block_user / unblock_user | ブロック / ブロック解除。 |
list_blocked | ブロックリスト。 |
get_privacy | プライバシーキーを読み取ります。 |
set_privacy | プライバシーキーを更新します(モード + 許可/拒否リスト)。 |
ステッカー (3)
| ツール | 機能 |
|---|---|
get_my_stickers | インストール済みのステッカーセット。 |
install_sticker_set | ショート名でインストールします。 |
add_recent_sticker | ステッカーを最近使用にピン留めします。 |
プレミアムブースト (2)
| ツール | 機能 |
|---|---|
get_my_boosts | 自分のブーストスロットを一覧表示します。 |
apply_boost | スロットをチャンネルに適用します。 |
ボットと生の MTProto (2)
| ツール | 機能 |
|---|---|
get_inline_bot_results | インラインボットのクエリを実行します。 |
invoke_mtproto | 修飾名で任意の MTProto メソッドを呼び出します(例: messages.SendMessage、stories.GetAllStories)。peer/channel/user/fromPeer/toPeer/bot/chat の文字列値は自動的に InputPeer / InputUser に解決されます。 |
公開するツールの制御
3 つの環境変数を、順番に適用します。
| 変数 | 効果 |
|---|---|
MCP_TELEGRAM_READONLY=1 | 破壊的 / 変更を伴うすべてのツールを非表示にします。 |
MCP_TELEGRAM_TOOLS=name1,name2,prefix* | 厳格な許可リスト — これらのツールのみが登録されます。 |
MCP_TELEGRAM_DISABLE=name1,prefix* | 許可リストの後に適用されるブロックリスト。 |
例:
MCP_TELEGRAM_READONLY=1 # read-only agent
MCP_TELEGRAM_TOOLS='login,list*,search*,get*' # discovery-only
MCP_TELEGRAM_DISABLE='delete*,ban*,kick*,create_channel,delete_channel,transfer_ownership,invokeMtproto' # safer write set
環境
| 変数 | 必須 | デフォルト | 備考 |
|---|---|---|---|
TELEGRAM_API_ID | はい | — | my.telegram.org/apps から取得します。未設定の場合、認証ページで入力を求められ、state.json に保存されます。 |
TELEGRAM_API_HASH | はい | — | 上記と同じです。 |
TELEGRAM_AGENT_HOME | いいえ | ~/.telegram-agent | 状態 + アカウントごとのセッションの保存先。従来の MCP_TELEGRAM_HOME も引き続き受け付けられます。以前のインストールによる ~/.mcp-telegram のみが存在する場合は、自動的にそれが使用されます。 |
TELEGRAM_AGENT_DOWNLOADS | いいえ | $TELEGRAM_AGENT_HOME/downloads | download_media / download_profile_photo がファイルを保存する場所。従来の MCP_TELEGRAM_DOWNLOADS も引き続き受け付けられます。 |
MCP_TELEGRAM_READONLY | いいえ | — | 1/true/yes に設定すると、破壊的なすべてのツールを非表示にします。 |
MCP_TELEGRAM_TOOLS | いいえ | — | 厳格な許可リスト。カンマ区切りのツール名で、prefix* ワイルドカードをサポートします。設定した場合、一致しないものはすべて非表示になります。 |
MCP_TELEGRAM_DISABLE | いいえ | — | 許可リストの後に適用されるブロックリスト。構文は同じです。 |
LOG_LEVEL | いいえ | info | 詳細な stderr を出力するには debug。 |
エージェントが参照するツールの選択
3 つのゲート変数は積み重なります — MCP_TELEGRAM_READONLY → MCP_TELEGRAM_TOOLS → MCP_TELEGRAM_DISABLE。
# Read-only agent — every mutating tool is hidden
MCP_TELEGRAM_READONLY=1
# Discovery-only — only login + the list/search/get tools
MCP_TELEGRAM_TOOLS='login,list*,search*,get*,resolveUsername'
# Allow writes but keep destructive ones away from the agent
MCP_TELEGRAM_DISABLE='delete*,ban*,kick*,create_channel,delete_channel,transfer_ownership,invokeMtproto'
# Specific surface: read + send/edit only
MCP_TELEGRAM_TOOLS='login,list_accounts,list_dialogs,list_messages,search_messages,search_global,send_message,editMessage'
MCP クライアントの設定では、これらを TELEGRAM_API_ID/TELEGRAM_API_HASH と同じ env ブロックに記述します。確認するには、クライアントを開き直してください — サーバーが公開するツールは、ゲートの実行後に登録されたものとまったく同じです。
データレイアウト
~/.telegram-agent/
├── state.json known accounts (no secrets in here)
└── sessions/
└── <account_id>/ per-account MTProto session
Telegram セッションがサーバー側で無効化された場合(別のデバイスからのログアウト、パスワードの変更など)、次回のツール呼び出しでエラーが返され、エージェントに再認証のため login を呼び出すよう通知します。
開発
git clone https://github.com/beautyfree/mcp-telegram
cd mcp-telegram
npm install
echo "TELEGRAM_API_ID=...\nTELEGRAM_API_HASH=..." > .env
npm run dev
レイアウト:
src/
├── index.ts bin entry — stdio MCP server, tool registrations
├── telegram.ts MTProto client + login state machine
├── auth-browser.ts ephemeral HTTP server that drives the browser flow
├── auth-page.ts inline HTML for the auth page
├── state.ts persistent state in ~/.telegram-agent/
└── logger.ts
ライセンス
MIT — LICENSE を参照してください。
別名
Telegram MCP · MCP Telegram · Telegram MCP server · Telegram for Claude · Telegram for Cursor · Telegram for Claude Code · Telegram for VS Code · Telegram for Codex · Telegram for Cline · Telegram for Windsurf · Telegram for AI agents · Telegram MTProto MCP · Telegram user-account MCP · Telegram automation MCP · Model Context Protocol Telegram · MCP server Telegram · gramjs MCP
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。