Telegram MCP
Allows reading and writing Telegram messages, managing chats, sending files, voting, and interacting with bots using a personal Telegram account via MTProto.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Telegram MCP send a message to John saying I'll be late"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Telegram MCP
一个基于 MTProto 用户账号(Telethon)的 MCP server,让 Claude 等 MCP 客户端可以读写你的 Telegram: 浏览对话、读历史消息、全局搜索、收发消息与文件、投票、贴纸、群管理、和 bot 交互。共 85 个工具。
⚠️ 它以你本人的账号登录,权限等同于你自己的 Telegram 客户端。会话文件(
~/.telegram-mcp/session.txt) 等同于账号凭据,切勿分享或提交到版本库。自动化行为过于频繁可能触发 Telegram 的风控/封号策略。
1. 安装
python -m venv .venv
.\.venv\Scripts\python.exe -m pip install -e .Related MCP server: telegram-mcp
2. 申请 API 凭据
到 https://my.telegram.org/apps 登录并创建一个 app,拿到 api_id 和 api_hash。
复制 .env.example 为 .env 并填入:
TELEGRAM_API_ID=1234567
TELEGRAM_API_HASH=xxxxxxxxxxxxxxxx3. 登录(只需一次)
.\.venv\Scripts\python.exe -m telegram_mcp.login按提示输入手机号(带国家码,如 +8613800138000)、Telegram 发来的验证码,
以及二步验证密码(如果开了的话)。成功后会话会写入 ~/.telegram-mcp/session.txt。
4. 接入 MCP 客户端
Claude Code:
claude mcp add telegram -- C:\Users\Anonymouse\Projects\TelegamMCP\.venv\Scripts\python.exe -m telegram_mcp.server或手写配置(claude_desktop_config.json / .mcp.json):
{
"mcpServers": {
"telegram": {
"command": "C:\\Users\\Anonymouse\\Projects\\TelegamMCP\\.venv\\Scripts\\python.exe",
"args": ["-m", "telegram_mcp.server"],
"env": {
"TELEGRAM_API_ID": "1234567",
"TELEGRAM_API_HASH": "xxxxxxxxxxxxxxxx"
}
}
}
}工具一览
账号与联系人
工具 | 说明 |
| 当前账号信息 |
| 改名字 / 姓氏 / 简介 |
| 设置或清空 @username |
| 用本地图片换头像 |
| 联系人与公开实体搜索 |
| 加/删通讯录(支持只有手机号的情况) |
| 拉黑、取消拉黑、看黑名单 |
对话
工具 | 说明 |
| 聊天列表,可按类型(含 bot)/未读/归档/名字过滤 |
| 对话详情(简介、成员数、置顶、是否话题群等) |
| 成员列表,可只看管理员 / bot / 被封禁的人 |
| 和某人的共同群组 |
| 聊天文件夹及其包含的对话 |
| 归档、置顶对话 |
| 免打扰、标记未读 |
| 加入 / 退出群频道(支持 t.me/+ 邀请链接) |
读消息
工具 | 说明 |
| 读历史,支持分页、发送者过滤、话题、时间点 |
| 取某条消息前后各 N 条,看上下文 |
| 关键词搜索,不指定 chat 即全局;可按媒体类型筛 |
| 按媒体类型筛选(图片/视频/文件/语音/链接/GIF) |
| 置顶消息 |
| 未读概览 |
| 一条消息的表情回应明细(谁点了什么) |
| 频道帖子的评论区 / 某条消息的回复串 |
| 话题群的话题列表 |
| 自己设置的定时消息 |
| 生成 t.me 链接 / 从链接反查消息 |
| 轮询等待新消息(给 bot 发指令后等回复) |
发消息
工具 | 说明 |
| 发文本,支持回复/静默/Markdown/定时/频道评论 |
| 发单个文件,或一次发一整组(最多 10 个) |
| 从贴纸包里发贴纸(按 index 或 emoji 选) |
| 发起投票或测验、投票、关闭投票 |
| 位置或地点卡片、联系人卡片、骰子动画 |
| 显示"正在输入…"状态 |
| 编辑自己的消息(也可改媒体说明文字) |
| 删除消息( |
| 转发, |
| 一键存到收藏夹 |
| 已读、置顶、表情回应 |
| 立刻发出 / 取消定时消息 |
| 清空聊天记录(需 |
媒体
工具 | 说明 |
| 下载某条消息的媒体 |
| 批量下载一个对话里最近的媒体,可限体积 |
| 只看文件名/大小/时长/分辨率,不下载 |
| 头像列表与下载 |
| 自己的贴纸包、某个包里的贴纸 |
群 / 频道管理
工具 | 说明 |
| 建超级群、旧式小群或广播频道 |
| 拉人 / 踢人 |
| 封禁、禁言(可设到期时间,如 |
| 全群默认权限 |
| 任命 / 撤销管理员,可设自定义头衔 |
| 改群名、简介、头像 |
| 生成邀请链接(可设有效期、次数、需审批) |
| 慢速模式 |
| 管理操作日志 |
| 新建 / 修改话题 |
| 删除群或频道(需 |
与 Bot 交互
工具 | 说明 |
| 获取一个 bot 的 |
| 发 |
| 点击 inline 按钮,可按 |
| 按下"回复键盘"上的按钮(本质是发送对应文字) |
| 向 bot 发 inline 查询( |
| 把消息转发给 @QuotLyBot 生成引用贴纸(内容会经过第三方服务器) |
消息返回结果里若带按钮,会在 reply_markup 字段下列出 rows 和每个按钮的 kind、
text、data(callback) / url(链接) / query(switch_inline) 等,方便定位。
安全开关
TELEGRAM_READ_ONLY=1— 一键禁用所有写工具。不可恢复的操作(
delete_chat_history、delete_chat)必须显式传confirm=True, 第一次不传会返回提示而不执行。delete_messages(revoke=True)会为对方一起删除,调用前请先跟用户确认。
参数写法
chat:123456789、-1001234567890、@username、username、https://t.me/username、
me(收藏夹)都能识别。纯数字 ID 需要客户端"见过"该实体(先跑一次 list_dialogs 即可)。
时间(schedule_at / until / expires_at / before):
相对时间 +30m、+2h、+7d,ISO 8601 2026-01-01T09:00:00,或 Unix 时间戳。
代码结构
telegram_mcp/
app.py 共享的 FastMCP 实例、配置、时间解析等 helper
client.py Telethon 客户端单例与 chat 参数归一化
serializers.py Telethon 对象 -> LLM 友好的 dict
server.py 入口(python -m telegram_mcp.server)
tools/
account.py 账号、联系人、黑名单
dialogs.py 对话列表与对话级设置
messages.py 消息读写、投票、定时、等待
media.py 文件、贴纸、头像
admin.py 建群、成员与权限、话题
bots.py bot 指令、按钮、inline 查询新增工具只要在 tools/ 下的模块里写一个 @mcp.tool() 异步函数即可,导入时自动注册。
自检(只读,不会发送/修改任何东西):
.\.venv\Scripts\python.exe scripts\smoke_read.py常见问题
尚未登录— 跑第 3 步的 login 脚本。无法解析对话— 先list_dialogs或search_contacts拿到 @username / 正确 ID。Could not find the input entity— 同上,Telethon 需要先缓存实体。FloodWaitError — 请求过快被限流,等待提示的秒数后再试。
PremiumAccountRequiredError— 该动作(如给自己的收藏夹消息加表情)需要 Telegram Premium。话题相关报错 — 目标群没开 Topics;开启需要在客户端里手动打开,且群成员数达标。
Copyright (c) 2026 Anonymouse8882
Source Repository: https://github.com/Anonymouse8882/TelegamMCP
Licensed under GPL v3.
Available Tools
85 toolsadd_contactA
把某人加进通讯录。
已经能看到的人:传 user(@username 或 ID)。
只有电话号码:传 phone + first_name,会用号码导入。
Args: user: 目标用户的 @username 或 ID。 first_name: 备注名(必填,会显示在通讯录里)。 last_name: 备注姓。 phone: 只知道号码时用,带国家码。 share_my_phone: 是否把自己的号码也分享给对方。
Inputs: user, phone, last_name, first_name, +1 more. Returns: object
add_participantsC
把若干人拉进群 / 频道。
Inputs: chat (required), users (required). Returns: object
archive_chatC
把对话移入归档文件夹,或移出来。
Inputs: chat (required), unarchive. Returns: object
ban_participantA
封禁 / 解封群成员(封禁 = 踢出且不能再加入)。
Args:
chat: 群 / 频道。
user: 目标用户。
until: 封到什么时候,如 +7d;留空为永久。
unban: True 则解除封禁。
Inputs: chat (required), user (required), unban, until. Returns: object
block_userC
拉黑 / 取消拉黑一个用户或 bot。
Inputs: user (required), unblock. Returns: object
click_inline_buttonA
点击某条消息附带的 inline 按钮(callback 类型)。
定位按钮的三种方式,至少提供一个:
data: 按钮的 callback data(UTF-8 字符串,最常见,如 "confirm:42");data_hex: callback data 的十六进制字节串,用于二进制数据;text: 按钮显示的文字(同一消息里必须唯一)。
Args: chat: 消息所在对话。 message_id: 带 inline 按钮的消息 ID。 data: 按钮 callback data 的 UTF-8 文本。 data_hex: 按钮 callback data 的十六进制表示。 text: 按钮显示的文字。
Returns:
bot 返回的响应:message(弹窗文字)、alert(True 为强制 alert)、
url(有则为跳转链接)、cache_time(客户端缓存秒数)。
Inputs: chat (required), message_id (required), data, text, +1 more. Returns: object
close_pollA
关闭自己发起的投票(关闭后不能再投,且不可撤销)。
Inputs: chat (required), message_id (required). Returns: object
create_channelC
新建一个广播频道。
Inputs: title (required), about. Returns: object
create_forum_topicC
在话题群里新建一个话题。
Inputs: chat (required), title (required), icon_emoji_id. Returns: object
create_groupA
新建一个群。
Args: title: 群名。 users: 初始成员(@username 或 ID);超级群可以给空列表。 megagroup: True 建超级群(推荐,支持话题/管理日志等);False 建旧式小群。 about: 群简介,仅超级群支持。
Inputs: title (required), users (required), about, megagroup. Returns: object
delete_chatA
删除自己创建的群 / 频道(对所有成员生效,不可恢复,必须 confirm=True)。
Inputs: chat (required), confirm. Returns: object
delete_chat_historyA
清空一个对话的历史记录(不可恢复,必须传 confirm=True)。
Args: chat: 对话。 confirm: 必须显式传 True 才会执行。 revoke_for_everyone: 私聊时同时为对方删除。 max_id: 只清空 ID 小于等于它的消息,0 表示全部。
Inputs: chat (required), max_id, confirm, revoke_for_everyone. Returns: object
delete_contactB
把某人从通讯录里删掉(不影响聊天记录)。
Inputs: user (required). Returns: object
delete_messagesA
删除消息。revoke=True 表示同时为对方删除(不可恢复,请先向用户确认)。
Inputs: chat (required), message_ids (required), revoke. Returns: object
delete_scheduled_messagesB
取消(删除)尚未发出的定时消息。
Inputs: chat (required), message_ids (required). Returns: object
download_chat_mediaA
批量下载一个对话里最近的媒体文件。
Args: chat: 对话。 media_type: photo / video / document / voice / gif / music / any。 limit: 最多下载几个(1~50)。 save_dir: 保存目录,留空用默认下载目录。 max_size_mb: 跳过大于这个体积的文件。
Inputs: chat (required), limit, save_dir, media_type, +1 more. Returns: object
download_mediaC
下载某条消息里的媒体到本地。
Args: chat: 消息所在对话。 message_id: 消息 ID。 save_dir: 保存目录,留空则使用 TELEGRAM_DOWNLOAD_DIR 或 ./downloads。
Inputs: chat (required), message_id (required), save_dir. Returns: object
download_profile_photoB
下载某个用户/群/频道当前的头像。
Inputs: chat (required), big, save_dir. Returns: object
edit_forum_topicB
改话题的标题,或开关 / 隐藏一个话题。
Inputs: chat (required), topic_id (required), title, closed, +1 more. Returns: object
edit_messageC
编辑自己发送过的某条消息(也可用来改媒体消息的说明文字)。
Inputs: chat (required), text (required), message_id (required), parse_mode, +1 more. Returns: object
export_invite_linkA
为群 / 频道生成一条邀请链接。
Args:
chat: 群 / 频道。
title: 链接备注名。
expires_at: 过期时间,如 +7d / ISO8601;留空为不过期。
usage_limit: 最多可用多少次,0 为不限。
request_needed: True 则通过链接进来的人需要管理员批准。
Inputs: chat (required), title, expires_at, usage_limit, +1 more. Returns: object
forward_media_to_savedB
把消息转发到自己的收藏夹(Saved Messages),方便先存后用。
Inputs: chat (required), message_ids (required). Returns: result
forward_messagesA
把一个对话里的若干消息转发到另一个对话。
Args: from_chat: 源对话。 to_chat: 目标对话。 message_ids: 要转发的消息 ID。 silent: 静默发送。 as_copy: True 则不显示"转发自"抬头(相当于复制一份)。 drop_captions: 复制时丢掉媒体的说明文字。
Inputs: to_chat (required), from_chat (required), message_ids (required), silent, +2 more. Returns: result
get_admin_logC
读取群 / 频道的管理操作日志(需要管理员权限)。
Inputs: chat (required), limit, search. Returns: result
get_bot_commandsC
获取一个 bot 公开的 / 指令菜单和简介(对应聊天框里 / 触发的下拉)。
Args: bot: bot 的 @username 或用户 ID。
Inputs: bot (required). Returns: object
get_chat_infoB
获取某个对话的详细信息(简介、成员数、置顶消息 ID、权限等)。
Inputs: chat (required). Returns: object
get_common_chatsC
列出自己和某个用户共同所在的群 / 频道。
Inputs: user (required), limit. Returns: result
get_file_infoB
看一条消息里媒体的详细信息(文件名、大小、时长、分辨率等),不下载。
Inputs: chat (required), message_id (required). Returns: object
get_forum_topicsA
列出话题群(forum)里的话题。拿到 id 后可用 get_messages(topic_id=...) 读该话题。
Args: chat: 开了话题功能的超级群。 limit: 上限,最多 100。 query: 按标题过滤。
Inputs: chat (required), limit, query. Returns: result
get_meA
获取当前登录账号的信息(用户名、ID、手机号等)。
Inputs: no named parameters. Returns: object
get_media_messagesB
按媒体类型筛选某个对话中的消息(图片 / 视频 / 文件 / 语音 / 链接 / GIF)。
Inputs: chat (required), limit, media_type. Returns: result
get_message_contextA
取某条消息前后各若干条,用来看上下文。返回按时间正序排列。
Args: chat: 对话。 message_id: 中心消息 ID。 before: 往前取几条(最多 50)。 after: 往后取几条(最多 50)。
Inputs: chat (required), message_id (required), after, before. Returns: result
get_message_linkC
生成一条消息的 t.me 链接(私聊没有公开链接,link 会是 null)。
Inputs: chat (required), message_id (required), topic_id. Returns: object
get_message_reactionsA
看一条消息的表情回应明细:谁点了什么。
Args: chat: 对话。 message_id: 消息 ID。 limit: 返回多少条,最多 100。 emoji: 只看某一种表情,留空为全部。
Inputs: chat (required), message_id (required), emoji, limit. Returns: object
get_messagesA
读取某个对话的历史消息,默认从最新往回取。
Args:
chat: 对话(ID / @username / 'me')。
limit: 条数上限,最多 200。
offset_id: 从该消息 ID 之前开始取(分页用)。
min_id: 只取 ID 大于它的消息。
max_id: 只取 ID 小于它的消息。
from_user: 只看某个发送者的消息。
reverse: True 则按时间正序(从旧到新)。
topic_id: 话题群里只看某个话题(用 get_forum_topics 拿 ID)。
before: 只取该时间点之前的消息,ISO8601 / Unix 时间戳 / 相对时间(如 +0s 表示现在)。
Inputs: chat (required), limit, before, max_id, +5 more. Returns: result
get_participantsA
列出群 / 频道成员(需要有查看成员的权限)。
Args: chat: 群组或频道。 limit: 上限,最多 500。 search: 按姓名/用户名过滤。 filter_by: 只看管理员 / bot / 被限制 / 被踢的人。
Inputs: chat (required), limit, search, filter_by. Returns: result
get_pinned_messagesC
获取某个对话中的置顶消息。
Inputs: chat (required), limit. Returns: result
get_profile_photosB
列出某个用户/群/频道的历史头像(返回 photo_id 和日期)。
Inputs: chat (required), limit. Returns: result
get_repliesA
读取一条消息的回复串 —— 频道帖子下的评论区,或话题群里某条消息的回复。
Args: chat: 帖子所在的频道 / 群。 message_id: 帖子(或话题起始消息)的 ID。 limit: 取多少条评论,最多 200。
Inputs: chat (required), message_id (required), limit. Returns: object
get_scheduled_messagesA
列出某个对话里自己设置的定时消息(还没发出去的)。
Inputs: chat (required). Returns: result
get_sticker_setB
看一个贴纸包里都有哪些贴纸(贴纸包链接 t.me/addstickers/xxx 里的 xxx 就是 short_name)。
Inputs: short_name (required). Returns: object
get_unread_summaryB
概览所有有未读消息的对话,以及每个对话的未读条数。
Inputs: limit. Returns: result
inline_queryA
向一个 bot 发 inline 查询(相当于在输入框打 @bot 关键词),可直接发送某个结果。
Args: bot: bot 的 @username 或 ID。 query: 查询词。 limit: 最多列出几条结果。 send_to: 给了就把选中的结果发到这个对话;留空只列出结果不发送。 result_index: 要发送第几条结果(从 0 开始)。 reply_to: 发送时回复某条消息。
Inputs: bot (required), limit, query, send_to, +2 more. Returns: object
join_chatA
加入一个公开群/频道,或通过邀请链接(t.me/+xxxx)加入。
Inputs: chat (required). Returns: object
kick_participantA
把某人移出群(之后他还能再次加入)。
Inputs: chat (required), user (required). Returns: object
leave_chatA
退出群 / 频道,或删除与某人的私聊对话。
Args: chat: 对话。 delete_history: 退出的同时清空本地这份历史(不为对方删除)。
Inputs: chat (required), delete_history. Returns: object
list_blockedC
列出黑名单里的用户。
Inputs: limit. Returns: result
list_contactsA
列出通讯录里的所有 Telegram 联系人。
Inputs: no named parameters. Returns: result
list_dialogsB
列出最近的对话(聊天列表)。
Args: limit: 返回条数上限,最多 500。 archived: True 则读取归档文件夹。 kind: 只保留某一类对话。 unread_only: 只返回有未读消息的对话。 query: 按对话名字过滤(不区分大小写)。
Inputs: kind, limit, query, archived, +1 more. Returns: result
list_foldersA
列出聊天文件夹(Telegram 的 Chat Folders / dialog filters)及其包含的对话。
Inputs: no named parameters. Returns: result
list_sticker_setsA
列出自己已添加的贴纸包。
Inputs: no named parameters. Returns: result
mark_as_readC
把某个对话标记为已读(max_id 为 0 表示全部已读)。
Inputs: chat (required), max_id, clear_mentions. Returns: object
mark_chat_unreadB
把对话标记成"未读"小圆点(或清掉这个标记)。
Inputs: chat (required), unread. Returns: object
mute_chatA
开启 / 关闭一个对话的免打扰。
Args: chat: 对话。 minutes: 静音多少分钟;0 表示永久静音(直到手动取消)。 unmute: True 则取消静音。
Inputs: chat (required), unmute, minutes. Returns: object
pin_chatC
把对话在聊天列表里置顶 / 取消置顶。
Inputs: chat (required), unpin. Returns: object
pin_messageC
置顶或取消置顶一条消息。
Inputs: chat (required), message_id (required), unpin, notify. Returns: object
press_reply_keyboardA
按下"回复键盘"上的一个按钮 —— 本质是发送对应文字给对话。
Args: chat: 对话。 text: 按钮上的文字(也就是要发送的文本)。 reference_message_id: 可选。若提供,会先校验该消息附带的回复键盘里 确实存在这个按钮,避免误发。
Inputs: chat (required), text (required), reference_message_id. Returns: object
promote_adminA
把某人提升为管理员,或撤销其管理员身份(demote=True)。
Args: chat: 群 / 频道。 user: 目标用户。 title: 自定义头衔。 demote: True 则撤销全部管理员权限。 change_info: 改群信息。 delete_messages: 删他人消息。 ban_users: 封禁成员。 invite_users: 邀请成员。 pin_messages: 置顶消息。 add_admins: 能再任命管理员。 post_messages: 频道发帖权限。 edit_messages: 频道编辑他人帖子权限。 manage_call: 管理语音聊天。 anonymous: 匿名管理员。
Inputs: chat (required), user (required), title, demote, +10 more. Returns: object
quote_stickerA
把若干条消息转发给 @QuotLyBot,生成引用贴纸并返回结果。
注意:被转发的消息内容会发送到第三方 bot (QuotLyBot) 的服务器上渲染。
Args: chat: 源消息所在对话。 message_ids: 要做成贴纸的消息 ID(同一对话,可多条组成对话截图)。 download: True 则把生成的 .webp 下载到本地。 timeout_seconds: 等待 bot 回复的秒数。
Inputs: chat (required), message_ids (required), download, timeout_seconds. Returns: object
resolve_message_linkA
把一条 t.me 消息链接解析出来并读取该消息。
支持 t.me/name/123、t.me/c/1234567890/123,以及带话题的
t.me/name/12/345(第一个数字是话题 ID)。
Inputs: link (required). Returns: object
restrict_participantA
限制某个成员的权限(禁言等)。各布尔值为 True 表示"允许"。
Args:
chat: 群。
user: 目标用户。
until: 限制到什么时候,如 +1d;留空为永久。
send_messages: 允许发消息(False 即禁言)。
send_media: 允许发媒体。
send_stickers: 允许发贴纸。
send_polls: 允许发起投票。
embed_links: 允许链接预览。
invite_users: 允许拉人。
pin_messages: 允许置顶。
change_info: 允许改群信息。
Inputs: chat (required), user (required), until, send_media, +7 more. Returns: object
search_contactsC
按关键词搜索联系人、已加入的对话,以及公开的用户/群/频道。
Inputs: query (required), limit. Returns: object
search_messagesA
搜索消息。不传 chat 时进行全局搜索(搜索所有对话)。
Args: query: 关键词;配合 media_type 时可以留空字符串只按类型筛。 chat: 限定某个对话;留空为全局搜索。 limit: 条数上限,最多 200。 from_user: 限定发送者(仅在指定 chat 时有效)。 media_type: 只搜某种媒体类型的消息。
Inputs: query (required), chat, limit, from_user, +1 more. Returns: result
send_albumB
把多张图片 / 多个视频作为一个相册(media group)一次发出去。
Args: chat: 目标对话。 paths: 本地文件路径列表,最多 10 个。 caption: 相册说明(挂在第一个文件上)。 reply_to: 要回复的消息 ID。 as_document: 强制作为文件发送。 silent: 静默发送。
Inputs: chat (required), paths (required), silent, caption, +2 more. Returns: result
send_contactC
以联系人卡片的形式发送一个电话号码。
Inputs: chat (required), phone (required), first_name (required), reply_to, +1 more. Returns: object
send_diceB
发送一个随机数动画(骰子/飞镖/篮球等),结果由服务端决定,见返回的 media.value。
Inputs: chat (required), emoji, reply_to. Returns: object
send_fileA
发送本地文件(图片/视频/文档均可)。
Args:
chat: 目标对话。
path: 本地文件绝对路径。
caption: 附带说明文字。
as_document: True 则强制作为文件发送,不压缩为图片/视频。
reply_to: 要回复的消息 ID。
as_voice: 作为语音消息发送(需要 ogg/opus 音频)。
as_video_note: 作为圆形视频消息发送(需要方形短视频)。
silent: 静默发送。
schedule_at: 定时发送,如 +30m / ISO8601 / Unix 时间戳。
parse_mode: caption 的解析方式(none / markdown / html)。
Inputs: chat (required), path (required), silent, caption, +6 more. Returns: object
send_locationC
发送一个地理位置;给了 title 就作为"地点"卡片发送。
Inputs: chat (required), latitude (required), longitude (required), title, +2 more. Returns: object
send_messageA
向某个对话发送文本消息。
Args:
chat: 目标对话(ID / @username / 'me' 表示收藏夹)。
text: 消息内容。
reply_to: 要回复的消息 ID;话题群里传话题 ID 即发到该话题。
parse_mode: 文本解析方式。
silent: 静默发送(不推送通知)。
link_preview: 是否展示链接预览。
schedule_at: 定时发送时间,如 +30m / 2026-01-01T09:00 / Unix 时间戳。
comment_to: 作为某条频道帖子的评论发送(传帖子 ID)。
Inputs: chat (required), text (required), silent, reply_to, +4 more. Returns: object
send_pollA
发起一个投票或测验。
Args: chat: 目标对话。 question: 问题。 options: 选项文字,2~10 个。 multiple_choice: 允许多选。 quiz: 测验模式(只有一个正确答案,必须给 correct_option)。 correct_option: 正确选项的下标(从 0 开始),仅测验模式使用。 solution: 测验模式下答错时显示的解析。 public_voters: 公开谁投了什么。 close_in_seconds: 多少秒后自动关闭,0 为不自动关闭。 reply_to: 回复某条消息。
Inputs: chat (required), options (required), question (required), quiz, +6 more. Returns: object
send_reactionC
给一条消息加/取消表情回应。
Inputs: chat (required), message_id (required), emoji, remove. Returns: object
send_scheduled_nowC
把还在排队的定时消息立刻发出去。
Inputs: chat (required), message_ids (required). Returns: object
send_stickerA
从某个贴纸包里发一张贴纸。
Args: chat: 目标对话。 short_name: 贴纸包的 short_name(见 get_sticker_set)。 index: 贴纸在包里的下标(get_sticker_set 返回的 index)。 emoji: 也可以按 emoji 选,命中该 emoji 的第一张;给了 emoji 就忽略 index。 reply_to: 回复某条消息。
Inputs: chat (required), short_name (required), emoji, index, +1 more. Returns: object
send_typingC
在对话里显示"正在输入…"之类的状态,持续若干秒。
Inputs: chat (required), action, seconds. Returns: object
set_chat_aboutC
修改群 / 频道的简介。
Inputs: chat (required), about (required). Returns: object
set_chat_photoC
把本地图片设为群 / 频道头像。
Inputs: chat (required), path (required). Returns: object
set_chat_titleC
修改群 / 频道的名字。
Inputs: chat (required), title (required). Returns: object
set_default_permissionsB
设置全群的默认权限(不传 user,作用于所有普通成员)。
Inputs: chat (required), send_media, send_polls, change_info, +5 more. Returns: object
set_profile_photoC
把本地图片设为自己的头像。
Inputs: path (required). Returns: object
set_slow_modeA
设置超级群的慢速模式间隔(0 关闭;可选 10/30/60/300/900/3600 秒)。
Inputs: chat (required), seconds. Returns: object
set_usernameB
设置或清空自己的 @username(传空字符串表示清空)。
Inputs: username (required). Returns: object
start_botA
给一个 bot 发 /start(可带启动参数),并等它的第一条回复。
Args: bot: bot 的 @username 或 ID。 start_param: deep link 里的启动参数(t.me/xxx?start=PARAM 的 PARAM)。 wait_seconds: 等回复多少秒,0 表示不等。
Inputs: bot (required), start_param, wait_seconds. Returns: object
update_profileA
修改自己的名字 / 姓氏 / 个人简介。留空的字段保持不变。
Inputs: bio, last_name, first_name. Returns: object
vote_pollC
给一个投票投票。options 是选项下标(从 0 开始),单选传一个。
Inputs: chat (required), options (required), message_id (required). Returns: object
wait_for_messageA
等待某个对话出现新消息(轮询),常用于发指令给 bot 后等它回复。
Args: chat: 要盯的对话。 after_message_id: 只认 ID 大于它的消息;0 表示以调用时的最新消息为界。 timeout_seconds: 最多等多少秒(1~300)。 from_user: 只等某个发送者的消息。 incoming_only: 只算别人发来的消息,忽略自己发的。 contains: 消息文本必须包含这个子串才算命中。
Inputs: chat (required), contains, from_user, incoming_only, +2 more. Returns: object
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 85 tools
Despite the large number of tools, each has a clearly distinct purpose, covering different Telegram operations (messaging, group management, contacts, bots, etc.). There is no overlap or ambiguity in their descriptions.
All tools follow a consistent verb_noun snake_case pattern (e.g., send_message, create_group, get_participants). This makes the tool set predictable and easy for an agent to understand.
With 85 tools, the server far exceeds the typical MCP scope of 3-15 tools. This extreme count (over 50) makes it overwhelming and difficult to navigate, harming overall coherence.
The tool set is remarkably comprehensive, covering messaging, media, groups, channels, contacts, stickers, polls, bots, and more. There are no obvious missing operations for the Telegram domain.
Maintenance
Related MCP Connectors
Telegram bridge for your MCP-compatible agent. Bidirectional, no LLM in our stack.
Unofficial Telegram MCP server — read, search, reply and react in your own Telegram account.
Hosted Telegram MCP server for Claude, ChatGPT and Cursor, with each action switched per account.
MemberPass MCP — manage projects, plans, members, payments, and analytics for Telegram creators.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to interact with Telegram accounts through MCP, supporting messaging, contacts, groups, media, and admin functions.4Apache 2.0
- AlicenseBqualityCmaintenanceEnables MCP clients to operate a Telegram account as a userbot, providing tools for reading and sending messages, searching chats and contacts, managing media, and performing other account actions via MTProto with a locally encrypted session.28MIT
- FlicenseNot gradedqualityCmaintenanceEnables users to interact with their own Telegram account through MTProto, supporting chat listing, message reading and searching, sending messages, and fetching contacts via MCP tools.-
- AlicenseNot gradedqualityBmaintenanceEnables MCP clients to drive a real Telegram account, exposing chats, messages, media, secret chats, admin rights, invite links, Mini Apps, and multi-account routing as callable tools.32GPL 3.0