mcpField
M
MCP Telegram

MCP Telegram

本地服务
npmjs.com通信协作3323 周前更新

关于 MCP Telegram

这是一个基于 MTProto 的 Telegram MCP 服务,以真实用户账号而非机器人的身份登录,供 Claude、Cursor、VS Code 等 MCP 客户端使用。它提供 100 多个工具,可读取、搜索、发送消息,并管理频道、故事、联系人和文件夹。登录通过本地浏览器完成,会话保存在本地目录中。

主要功能

  1. 01基于 MTProto 的真实用户账号登录,无需机器人
  2. 02读取、搜索与发送消息,支持跨会话全局搜索
  3. 03频道与群组管理,包括封禁、权限、邀请链接和管理日志
  4. 04故事、联系人、草稿、通知与文件夹管理
  5. 05通过 invoke_mtproto 调用任意原始 MTProto 方法

适用场景

  1. 01让智能体按关键词搜索 Telegram 历史消息并汇总内容
  2. 02批量管理频道设置、管理员权限与邀请链接
  3. 03转写语音消息或下载消息中的媒体文件

MCP 相关

该项目是 MCP 服务,向 MCP 客户端暴露 Telegram 用户账号的消息、媒体、频道管理等工具。会话保存在 ~/.telegram-agent/ 目录中,需妥善保管。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"telegram-tacticlaunch": {
"command": "npx",
"args": [
"-y",
"mcp-telegram"
]
}
}
}
启动命令npx -y mcp-telegram

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmmcp-telegram

工具

111

收录的工具列表 · 更新于 3 周前

此工具无需参数。

详细介绍

mcp-telegram

mcp-telegram

适用于 Claude、Codex、Cursor、Claude Code、VS Code、Cline、Windsurf 及其他 MCP 客户端的 Telegram MCP 服务。通过 MTProto 使用真实的 Telegram 用户账号,基于浏览器在本地登录,提供 100 多种工具。需要延迟加载并降低上下文开销?请查看基于技能的配套项目 telegram-agent。

npm version License Node

一个 Model Context Protocol(MCP)服务,通过 MTProto 将 Claude Desktop、Codex CLI、Cursor、Claude Code、VS Code、Cline、Windsurf、Goose 及任何其他兼容 MCP 的客户端连接到真实的 Telegram 用户账号,让你的 Agent 可以通过聊天或自动化工具调用来读取、搜索、发送、管理和维护 Telegram 聊天,而不必在 Telegram 界面中逐一点击。

**可用于:**读取对话并全局搜索消息 · 发送/编辑/转发/回应/发起投票 · 下载媒体并转录语音留言 · 管理频道(封禁/限制/提升权限、邀请链接、慢速模式、管理员日志、论坛话题)· 管理动态、联系人、草稿、通知、文件夹、隐私 · 或使用原始 MTProto 桥接处理其他任何事项。所有操作均通过一个已登录的用户账号进行,无需机器人。

警告

此服务以真实的 Telegram 用户身份(而非机器人)登录。会话存储在 ~/.telegram-agent/ 中。请像保护密码一样保护此目录。

先决条件

  1. Node.js >=20
  2. 从 my.telegram.org/apps 获取 Telegram API 凭据:api_id 和 api_hash

想要更轻量的传输方式?

此软件包是 MCP 服务——每轮对话中,所有工具的 schema(约 12,700 个 token)都会占用 Agent 的上下文。它适用于任何 MCP 客户端,也适用于无法执行 shell 命令的托管运行时。

如果你的 Agent 是 Claude Code / Codex CLI / Cursor / Gemini CLI / Cline / Windsurf,可以使用配套软件包 telegram-agent,它将相同的 Telegram 功能作为通用 Agent 技能提供。只有当提示词提及 Telegram 时,Agent 才会加载技能说明——空闲时上下文开销降低约 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 等客户端写入正确的配置。请在交互式提示中选择客户端。

重要

两个环境变量均为必填项。请从 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)— 安装
[mcp_servers.telegram]
command = "npx"
args = ["-y", "mcp-telegram"]
env = { TELEGRAM_API_ID = "123456", TELEGRAM_API_HASH = "abc..." }
## 首次登录

向你的 Agent 询问:

登录我的 Telegram。

Agent 会调用 login 工具。浏览器标签页会打开。输入你的电话号码、短信验证码,以及(如果设置了)2FA 密码。标签页会显示绿色勾号,此时可以关闭它。会话现已存储在本地,Agent 可以读取你的 Telegram。

若要添加另一个账号,请让 Agent 再次调用 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转录语音/视频留言(Premium)。
invoke_mtproto按名称调用任意原始 MTProto 方法。自动解析 peer/channel/user 字符串。
会话(本地)(4)

这些工具仅在本地运行:它们管理存储在 ~/.telegram-agent/ 中的 Telegram 会话和设置界面。除登录流程本身外,不会调用 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在一个对话中搜索(文本、类型筛选、发送者、日期范围)。
search_global搜索所有聊天。
get_message按 ID 获取一条或多条消息。
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完全封禁(可选 untilDate)。
unban_user解除限制。
restrict_user应用自定义权限掩码。
promote_admin授予管理员权限(并设置头衔)。
demote_admin撤销管理员权限。
invite_user将用户添加到频道 / 超级群组。
kick_participant将成员移出群组 / 频道。
get_participant获取单个成员的信息。
list_participants按筛选条件(管理员 / 已封禁用户 / 机器人 /……)和子串搜索列出成员。
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将贴纸固定到最近使用列表。
Premium 加成(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。
控制开放的工具

三个环境变量,按顺序应用:

变量作用
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/downloadsdownload_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 输出详细信息。
选择 Agent 可见的工具

这三个门控变量依次生效: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 会话在服务器端失效(在另一台设备上退出登录、密码轮换等),下一次工具调用会返回错误,提示 Agent 调用 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

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。