Claude 接入 Telegram:两种 MCP 认证方案与安全权衡
对比 Bot API(安全隔离)与 MTProto(完全账户访问)两种 Telegram MCP 集成方案,指导程序员做出知情的隐私决策。
完整中文译文
你可以在五分钟内给 Claude 访问你的 Telegram 的权限。这是否是个好主意完全取决于你选择的是两种截然不同的设置中的哪一种 —— 而大多数教程都没有告诉你有两种。
在写设置指南时,我浏览了可用的 Telegram MCP 服务器,它们之间的差异远大于功能列表所暗示的。
两种类型,以及为什么这很重要
MCP —— Model Context Protocol —— 是让 AI 客户端调用外部工具的标准。写一个服务器,Claude Desktop、Cursor、Windsurf 和 Codex CLI 都能使用它。对于 Telegram,这意味着一个 agent 可以读取、搜索和发送消息。
关键问题是服务器用什么身份登录。
Bot API 服务器使用来自 @BotFather 的 bot token 进行身份验证。一个 bot 只能看到它被明确添加到的聊天。你的私人对话对它是不可见的,该令牌可以通过 BotFather 的一条命令撤销。
MTProto 服务器使用你的电话号码进行身份验证并存储一个会话文件。它们以你的身份登录。这意味着你的每条私人消息、你潜伏的每个群组、你保存的消息、你的联系人 —— 所有这一切都可以被 agent 访问。
两者都被描述为"一个 Telegram MCP 服务器"。但只有其中一个会把你的账户交出来。
每种类型的设置
Bot API —— 无需安装步骤,uvx 会获取它:
{
"mcpServers": {
"telegram-bot": {
"command": "uvx",
"args": ["telegram-bot-mcp"],
"env": {
"TELEGRAM_BOT_TOKEN": "<token from @BotFather>"
}
}
}
}
仅发送 —— 最严格的选项。agent 可以向一个聊天推送构建告警和工作结果,但无法读取任何内容:
{
"mcpServers": {
"telegram-notifier": {
"command": "npx",
"args": ["-y", "@harnyk/telegram-notifier-mcp"],
"env": {
"TELEGRAM_BOT_TOKEN": "<token from @BotFather>",
"TELEGRAM_CHAT_ID": "<your chat id>"
}
}
}
}
MTProto —— 需要真正的安装和一次性交互式登录:
uv tool install mcp-telegram
mcp-telegram login
{
"mcpServers": {
"mcp-telegram": {
"command": "mcp-telegram",
"args": ["start"],
"env": {
"API_ID": "<from my.telegram.org>",
"API_HASH": "<from my.telegram.org>"
}
}
}
}
注意环境变量的名称:API_ID 和 API_HASH,不是 TELEGRAM_API_ID。我第一次假设错了,服务器直接拒绝启动。应该读 README 而不是从另一个服务器的配置中进行模式匹配。
配置文件位置
这比服务器本身更容易绊倒人们,因为每个客户端都把它放在不同的地方:
Codex CLI 使用 TOML,而不是 JSON。将上面的块粘贴到其中不会解析,错误信息也不会显明原因。等效的配置是:
[mcp_servers.telegram-bot]
command = "uvx"
args = ["telegram-bot-mcp"]
[mcp_servers.telegram-bot.env]
TELEGRAM_BOT_TOKEN = "<token from @BotFather>"
另外:对于 Claude Desktop,仅仅关闭窗口是不够的。要正确退出,否则服务器不会出现。
值得深入思考的部分
会话文件不是作用域令牌。它是一个实时登录。任何能够读取它的东西都能读取你的 Telegram,它不像轮换密码那样会过期 —— 撤销意味着从 Telegram 的设备列表中终止会话。
仅这一点就足以让你将其保存在同步文件夹之外,不推送到任何 git 中。但还有第二个问题,它根本不需要任何盗窃。
你的 agent 读取消息。它也发送消息。对于 LLM 来说,"数据"和"指令"之间没有结构性差异 —— 它们都是上下文窗口中的文本。所以一条精心设计的看起来像命令的消息是一个攻击面,想要尝试的人只需给你发消息。
bot token 的影响范围是你的 bot 所在的聊天。在会话文件上,它是你的整个账户。
这一切都不会使 MTProto 服务器无法使用。它使它们成为一个深思熟虑的选择而不是默认选择。如果你需要在每个聊天中搜索你自己的历史记录,那就需要这样做。在这种情况下:使用辅助账户,将会话文件保存在任何仓库或同步目录之外,在给 agent 发送工具之前给它读取工具,这样坏的 prompt 就不能在你还在测试时给真实的人发消息。
这些服务器中的每一个都是社区项目。开源、有用,但没有安全审计。在将其指向重要账户之前,先阅读你正在运行的内容。
我写了一个配置生成器的完整版本 —— 选择你的客户端和访问级别,它会输出确切的块以及该客户端的正确文件路径,包括 TOML 变体:Telegram MCP Server: Connect Telegram to Claude, Cursor & AI Agents
如果你已经用 Telegram MCP 设置发布了什么,我真的很想听听你选择了哪种类型以及为什么 —— 特别是如果你选择了 MTProto 并有工作流来保持它的隔离。
如有进一步行动,你可以考虑阻止此人和/或举报滥用。