Telegram MCP服务器

一个连接多种MCP兼容客户端到真实Telegram用户账户的服务器,支持消息管理、媒体下载、频道管理等功能。

  • by beautyfree
  • TypeScript
  • 本地部署
  • 33 星标
  • 更新于
在 GitHub 查看 tacticlaunch/mcp-telegram

使用说明

mcp-telegram

Telegram MCP server for Claude, Codex, Cursor, Claude Code, VS Code, Cline, Windsurf, and other MCP clients. Real Telegram user account via MTProto, browser-based local sign-in, 100+ tools. Need lazy-loading + lower context cost? See telegram-agent, the skill-based companion.

A. 模型上下文协议 连接的(MCP)服务器 克劳德桌面版, Codex CLI, 光标, 克劳德代码、VS Code、Cline、Windsurf、Goose和任何其他MCP兼容客户端通过以下方式连接到真实的Telegram用户帐户 MTProto--因此,您的客服可以通过聊天或自动工具调用读取、搜索、发送、审核和管理Telegram聊天,而无需通过Telegram UI点击。

使用它来: 在全球范围内阅读对话框和搜索消息·发送/编辑/转发/反应/投票·下载媒体和转录语音笔记·适度频道(禁止/限制/推广、邀请链接、慢速模式、管理员日志、论坛主题)·管理故事、联系人、草稿、通知、文件夹、隐私·或通过原始MTProto桥进行其他任何操作。所有这些都只针对一个登录的用户帐户——不需要机器人。

[!警告] 此服务器以真实的Telegram用户(而非机器人)身份登录。会议直播 ~/.telegram-agent/。将该目录视为密码。

先决条件

  1. Node.js >=20
  2. 电报API凭证来自 my.telegram.org/apps — api_id 和 api_hash

想要更轻便的交通工具吗?

这个包裹是 MCP服务器 --每个工具模式(约12700个令牌)在每个回合都位于代理的上下文中。适用于任何MCP客户端和无法卸载的托管运行时。

如果你的代理人是 克劳德代码/Codex命令行界面/光标/双子座命令行界面/Cline/Windsurf,有一个 配套套餐-- telegram-agent --它运送的Telegram表面与 通用代理技能。只有当您的提示提到Telegram时,代理才会加载技能说明-- 约50倍的上下文成本降低 闲置。独立(环路中没有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等编写正确的配置。在交互式提示中选择客户端。

[!重要] 这两个env变量都是必需的。从以下位置获取它们 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 工具。浏览器选项卡打开。输入您的电话号码、短信代码和2FA密码(如果有的话)。该选项卡显示一个绿色的复选标记——您可以关闭它。会话现在存储在本地,代理可以读取您的电报。

要添加另一个帐户,请代理人致电 login 再一次。

工具

102个工具覆盖了整个Telegram用户账户界面。下面是常见的;其余的则归为可坍塌类。每个工具都接受一个可选 accountId (当只有一个帐户登录时省略)。 peer 接受数字聊天id @username,或字面意思 "me" (已保存的消息)。

菜单顶部:

工具 它做什么
login 打开基于浏览器的登录流程。添加帐户。
list_accounts 列出已登录的帐户。
list_dialogs 列出对话/聊天/频道。过滤器: unread, archived, ignorePinned, folder, limit.
list_messages 在对话框中列出消息。最新的先到。
search_messages 在一个对话框中搜索: query, filter (照片/视频/url/语音/…), fromUser,日期范围。
search_global 搜索您所有的聊天记录。
search_dialogs 按名称/标题/用户名子字符串查找对话框
send_message 发送文本。支持 replyTo, topMsgId, parseMode, schedule, silent.
send_file 发送文件(本地路径或 https:// URL)。传递相册的数组。
download_media 将邮件中的媒体保存到磁盘。
transcribe_message 转录语音/视频备忘(高级)。
invoke_mtproto 按名称调用任何原始MTProto方法。自动解析 peer/channel/user 串。
Sessions (local) (4)

这些仅是本地的:它们管理哪些Telegram会话处于活动状态 ~/.telegram-agent/ 以及设置UI。除了登录流本身之外,没有Telegram API调用。

工具 它做什么
list_accounts 列出已登录的帐户。
login 基于浏览器的登录。添加帐户。
logout 删除本地会话并在Telegram上撤销。
open_settings 打开本地设置页面(工具界面+只读)。
Profile (5)
工具 它做什么
get_me 返回经过身份验证的用户的配置文件。
update_profile 更改自己的名字/姓氏和个人简介
update_my_username 设置或清除自己的 @username.
set_birthday 设置帐户生日。
set_profile_photo 上传一个新的头像(本地路径或URL)。
Dialog discovery (5)
工具 它做什么
list_dialogs 列出对话框。过滤器: unread, archived, ignorePinned, folder, limit.
search_dialogs 按名称/标题/用户名子字符串查找对话框
resolve_username 解决 @username 发送到用户/频道/聊天实体。
list_folders 列出自定义对话框文件夹(聊天过滤器)。
list_contacts 列出联系人。
Messages — read & search (6)
工具 它做什么
list_messages 在对话框中列出消息。
search_messages 在一个对话框中搜索(文本、类型过滤器、发件人、日期范围)。
search_global 在每个聊天中搜索。
get_message 按id获取一条或多条消息
get_message_reactions 获取消息的反应。
mark_as_read 将邮件标记为已读到id
Messages — write (8)
工具 它做什么
send_message 发送文本。
edit_message 编辑以前发送的消息。
delete_messages 按id删除(可选择全部撤销)。
forward_messages 在对话框之间转发消息。
pin_message / unpin_message 在对话框中固定/取消固定。
send_reaction 对消息设置反应。
send_message_to_phone 发送到电话号码,自动创建临时联系人。
Media (4)
工具 它做什么
send_file 发送文件(路径或URL)。通过阵列播放专辑。
download_media 将邮件的媒体保存到磁盘。
download_profile_photo 将对等体的头像保存到磁盘。
transcribe_message 转录语音/视频(高级)。
Polls (4)
工具 它做什么
send_poll 发送投票。支持测验、多项选择、匿名、封闭时段。
vote_poll 投票。
close_poll 完成投票。
get_poll_results 获取计数。
Reactions (3)
工具 它做什么
send_reaction 在消息上设置表情符号反应。
get_message_reactions 阅读反应。
set_default_reaction 设置全帐户默认值。
Stories (6)
工具 它做什么
list_stories 联系人故事提要。
get_peer_stories 一位同行的故事。
send_story 发布一个故事(照片或视频)。
delete_story 删除自己的故事。
view_story 标记已查看的故事。
get_story_viewers 列出谁看过你的故事。
Channel / group moderation (11)
工具 它做什么
ban_user 完全禁止(可选 untilDate).
unban_user 解除限制
restrict_user 应用自定义权限掩码。
promote_admin 授予管理员权限(带级别)。
demote_admin 剥夺管理员权限。
invite_user 将用户添加到频道/超级组。
kick_participant 从聊天/频道踢。
get_participant 单一参与者信息。
list_participants 具有过滤器(admins/banned/bots/…)和子字符串搜索的成员。
delete_user_history 删除用户的每条消息。
get_admin_log 最近使用事件类型筛选器的管理事件。
Channel / group settings (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 扩展用户信息(个人简介、常见聊天)。
Channel / group lifecycle (4)
工具 它做什么
create_channel 新的广播频道或超级群组(可选论坛模式)。
delete_channel 永久删除。
migrate_chat 基本组→ 超群。
transfer_ownership 移交创建者权限(需要2FA密码)。
Invite links (4)
工具 它做什么
create_invite_link 新链接具有可选的到期、使用上限、加入请求门。
list_invite_links 列出活动或已撤销的链接。
revoke_invite_link 撤销特定链接。
list_invite_joiners 列出通过链接加入的用户。
Forum topics (3)
工具 它做什么
list_topics 列出论坛主题。
create_topic 创建一个新主题。
edit_topic 重命名、重新图标、关闭、隐藏。
Drafts (3)
工具 它做什么
save_draft 保存对话框的草稿。
clear_draft 放下对话草稿。
list_drafts 列出所有对话草稿。
Notifications (4)
工具 它做什么
mute_peer 将聊天静音(可选 untilDate).
unmute_peer 取消静音。
get_notify_settings 读取设置。
set_notify_settings 更新静音、预览、声音、故事静音。
Folders (chat filters) (4)
工具 它做什么
create_folder 包含/排除规则的新文件夹。
edit_folder 替换文件夹规则。
delete_folder 删除文件夹。
reorder_folders 设置显示顺序。
Contacts (4)
工具 它做什么
list_contacts 所有联系人。
add_contact 将用户添加到联系人中。
delete_contact 从联系人中删除用户。
search_contacts 搜索联系人+全球目录。
Privacy & blocking (5)
工具 它做什么
block_user / unblock_user 阻止/取消阻止。
list_blocked 阻止列表。
get_privacy 读取私钥。
set_privacy 更新私钥(模式+允许/不允许列表)。
Stickers (3)
工具 它做什么
get_my_stickers 已安装贴纸套装。
install_sticker_set 按短名称安装。
add_recent_sticker 把贴纸贴到最近的。
Premium boosts (2)
工具 它做什么
get_my_boosts 列出您的增强时段。
apply_boost 将插槽应用于通道。
Bots & raw MTProto (2)
工具 它做什么
get_inline_bot_results 运行内联机器人查询。
invoke_mtproto 通过限定名调用任何MTProto方法(例如。 messages.SendMessage, stories.GetAllStories).的字符串值 peer/channel/user/fromPeer/toPeer/bot/chat 自动解析为InputPeer/InputUser。

对暴露的工具进行门控

三个env变量,按顺序应用:

变量 效果
MCP_TELEGRAM_READONLY=1 隐藏所有破坏性/变异性工具。
MCP_TELEGRAM_TOOLS=name1,name2,prefix* 严格的allowlist——只有这些工具注册。
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。如果未设置,auth页面会提示输入并保存到 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 debug 对于详细的stderr。

选择代理看到的工具

三个门控变量堆叠-- 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客户端配置中,将这些放入相同的 env 块作为 TELEGRAM_API_ID/TELEGRAM_API_HASH。要验证,请重新打开客户端——服务器播发的工具正是gates运行后注册的工具。

数据布局

~/.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

许可证

麻省理工学院——见 许可证.


Also known as

电报MCP·MCP电报·电报MCP服务器·克劳德电报·光标电报·克劳德代码电报·VS代码电报·Codex电报·克莱恩电报·风帆电报·人工智能代理电报·电报MTProto MCP·电报用户帐户MCP·电报自动化MCP·模型上下文协议电报·MCP服务器电报·gramjs MCP