关于 telegram-slack-mcp
telegram-slack-mcp 提供两个 MCP 服务,让 Claude 通过个人账户读取 Telegram 聊天和多个 Slack 工作区。它支持搜索消息、查看媒体,并默认关闭代用户发送消息的功能。
主要功能
- 01读取 Telegram 私聊、群组和频道
- 02跨 Slack 工作区搜索与读取
- 03查看聊天中的图片和文件
- 04通过二维码登录 Telegram
- 05发送消息默认关闭
适用场景
- 01汇总未读消息
- 02查找特定聊天或工作区中的消息
- 03查看聊天里分享的图片或文件
- 04起草回复并在启用后代账户发送
MCP 相关
项目提供 Telegram 和 Slack 两个 MCP 服务,将个人账户中的聊天、消息搜索及媒体读取能力开放给 MCP 客户端。发送消息功能需通过配置显式启用。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y telegram-slack-mcpTELEGRAM_API_IDapi_id from https://my.telegram.org (Telegram server only)TELEGRAM_API_HASH密钥api_hash from https://my.telegram.org (Telegram server only)TELEGRAM_ALLOW_SENDSet to 1 to allow sending Telegram messages as you. Off by default.SLACK_USER_TOKENS密钥One Slack user token (xoxp-) per workspace, comma separated (Slack server only)SLACK_ALLOW_SENDSet to 1 to allow posting to Slack as you. Off by default.CHAT_MCP_DATA_DIRWhere the Telegram session is stored. Defaults to ~/.chat-mcp本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
telegram-slack-mcp
让 Claude 读取你的真实聊天记录。
两个 MCP 服务,可将 Claude 连接到你个人的 Telegram 和 Slack 账号 — 读取你真实的私信、群组和频道,而不是机器人收件箱。
claude mcp add telegram -- npx -y telegram-slack-mcp telegram
claude mcp add slack -- npx -y telegram-slack-mcp slack
然后直接对话:
“Telegram 上有哪些来自真人的未读消息?” “读取我和 Priya 最近的 30 条消息,并起草一条回复” “在我所有的 Slack 工作区中搜索部署事后分析” “Priya 发给我的截图里是什么?”
为什么要做这个项目
大多数 Telegram 集成使用 Bot API,只能看到发给你创建的机器人的消息。它无法读取你现有的对话。telegram-slack-mcp 使用官方应用所用的同一协议 MTProto,以你的身份进行身份验证 — 因此 Claude 能看到你实际参与的聊天。
对于 Slack,常见的连接器只针对一个工作区。telegram-slack-mcp 为每个工作区使用一个用户令牌,并将它们视为同一个界面,因此“搜索所有地方”就真的意味着搜索所有地方。
安装
选择你已有的运行时。两种运行时提供相同的工具。
Node
claude mcp add telegram -- npx -y telegram-slack-mcp telegram
claude mcp add slack -- npx -y telegram-slack-mcp slack
Python
claude mcp add telegram -- uvx telegram-slack-mcp telegram
claude mcp add slack -- uvx telegram-slack-mcp slack
Claude Code 插件
/plugin marketplace add nileshpatil6/telegram-slack-mcp
/plugin install telegram@telegram-slack-mcp
/plugin install slack@telegram-slack-mcp
其他 MCP 客户端(Claude Desktop、Cursor 等)
{
"mcpServers": {
"telegram": {
"command": "npx",
"args": ["-y", "telegram-slack-mcp", "telegram"],
"env": { "TELEGRAM_API_ID": "1234567", "TELEGRAM_API_HASH": "your_hash" }
},
"slack": {
"command": "npx",
"args": ["-y", "telegram-slack-mcp", "slack"],
"env": { "SLACK_USER_TOKENS": "xoxp-one,xoxp-two" }
}
}
}
设置
Telegram — 2 分钟
-
前往 https://my.telegram.org → API development tools → 创建应用。
-
复制
api_id和api_hash,并设置:claude mcp add telegram -e TELEGRAM_API_ID=1234567 -e TELEGRAM_API_HASH=your_hash -- npx -y telegram-slack-mcp telegram -
关联你的账号。你可以让 Claude 帮忙 — “登录 Telegram” — 也可以在终端中自行操作,无需 MCP 客户端:
TELEGRAM_API_ID=1234567 TELEGRAM_API_HASH=your_hash npx -y telegram-slack-mcp login# PowerShell $env:TELEGRAM_API_ID="1234567"; $env:TELEGRAM_API_HASH="your_hash" npx -y telegram-slack-mcp login无论使用哪种方式,都需要扫描二维码,且会话会保存到
~/.chat-mcp。通过 Claude 操作:
它会调用
login,并返回一个页面链接,页面上会显示二维码(如果客户端支持,也会显示文本形式的验证码)。在手机 Telegram 中扫描 — 设置 → 设备 → 关联桌面设备 — 然后它会调用login_status进行确认。无需手机号、短信验证码,也无需在任何地方输入两步验证密码。在同一台机器上,你也可以点击“在 Telegram Desktop 中打开”,而不用扫描。会话会保存到
~/.chat-mcp并持续有效;只需操作一次。
无法扫描?使用手机号登录流程
login_start(phone) 会向你发送验证码,login_complete(code, password?) 会完成登录。请注意,使用此方式时,你的手机号和登录验证码会作为工具参数经过对话,因此会进入模型上下文。二维码流程不会将它们暴露在上下文中。
Slack — 5 分钟
-
前往 https://api.slack.com/apps → Create New App → From a manifest。
-
粘贴
slack-app-manifest.yaml— 它会预填所有权限范围。 -
Install to Workspace,然后复制 User OAuth Token(
xoxp-…,不是xoxb-)。 -
对你需要的每个工作区重复第 3 步。同一个应用,每个工作区一个令牌。
-
让 Claude 帮忙:“连接我的 Slack” —
login工具会提示你输入令牌,逐个向 Slack 验证,然后将它们保存到~/.chat-mcp。无需在配置中填写任何内容。更喜欢使用环境变量?也可以:
claude mcp add slack -e SLACK_USER_TOKENS=xoxp-aaa,xoxp-bbb -- npx -y telegram-slack-mcp slack
Slack 没有本地 OAuth 流程,因此你需要自行创建应用:Slack 的 OAuth 要求客户端密钥和 HTTPS 重定向 URL,因此通过 npm 分发的包无法完成该流程,除非公开提供密钥或运行回调服务。本项目没有服务端,所以会改为向你索取令牌。
工具
Telegram
| 工具 | 功能 |
|---|---|
login() | 扫描二维码关联你的账号——无需手机号或验证码 |
login_status() | 检查是否已扫描二维码 |
login_start(phone) | 备用方式:向自己发送登录验证码 |
login_complete(code, password?) | 完成登录并保存会话 |
whoami() | 查看已连接的账号 |
list_chats(limit, query, unread_only, kind) | 最近的聊天;kind 可筛选 dm、group、channel、bot 等 |
read_chat(chat, limit, before_id) | 某个聊天的消息——chat 接受 @username、ID 或名称的一部分 |
search_messages(query, chat?, limit) | 全文搜索,可搜索一个或所有聊天 |
unread_summary(limit, per_chat, kind) | 未读消息概览;kind: "dm" 可跳过频道消息 |
read_media(chat, message_id, max_kb) | 查看照片或文件——返回实际图片,而不只是文件类型 |
send_message(chat, text, reply_to?) | 以你的身份回复——默认关闭,除非设置 TELEGRAM_ALLOW_SEND=1 |
Slack
| 工具 | 功能 |
|---|---|
login() | 提示你输入 xoxp- 令牌,验证并保存 |
whoami() | 查看所有已连接的工作区,以及你在各工作区中的身份 |
list_channels(limit, query, workspace, types) | 跨工作区查看频道 |
list_dms(limit, workspace) | 一对一和群组私信 |
read_channel(channel, limit, workspace, before_ts) | 查看一个频道或私信 |
read_thread(channel, thread_ts, limit, workspace) | 查看某个主题中的回复 |
search_messages(query, limit, workspace) | 支持 in:#chan、from:@user |
unread_summary(limit, per_chat, workspace) | 查看所有位置的未读消息 |
read_file(file_id, workspace, max_kb) | 查看 Slack 中分享的文件——返回实际图片 |
send_message(channel, text, workspace, thread_ts?) | 以你的身份发布消息——默认关闭,除非设置 SLACK_ALLOW_SEND=1 |
每个 Slack 工具都接受可选的 workspace(名称中的任意子字符串)。留空则会在所有工作区中操作;只有当多个工作区中存在同名频道时才必须填写,错误提示会告知你该填什么。
配置
| 变量 | 默认值 | 含义 |
|---|---|---|
TELEGRAM_API_ID | — | 来自 my.telegram.org |
TELEGRAM_API_HASH | — | 来自 my.telegram.org |
TELEGRAM_ALLOW_SEND | 0 | 设置为 1 后,Claude 可以以你的身份发送 Telegram 消息 |
SLACK_USER_TOKENS | — | 每个工作区一个 xoxp- 令牌,以逗号分隔 |
SLACK_ALLOW_SEND | 0 | 设置为 1 后,Claude 可以以你的身份在 Slack 中发布消息 |
CHAT_MCP_DATA_DIR | ~/.chat-mcp | Telegram 会话的存储位置 |
两个服务默认都关闭发送功能。读取是安全的默认设置;如需写入,必须主动选择启用。
隐私
任何内容都不会发送到属于本项目的服务器。本项目没有这样的服务器。
telegram-slack-mcp 完全在你的计算机上运行。它产生的唯一网络流量,是使用你自己的凭据直接访问 Telegram 和 Slack 各自的 API。没有遥测、分析、崩溃报告、许可证检查或“回传数据”——搜索源代码即可确认,根本找不到任何端点。
数据流向如下:
your machine <--> Telegram / Slack APIs (your credentials, your account)
your machine <--> Claude (only what you ask Claude to read)
你的凭据绝不会传给 Claude。你的会话文件和 xoxp- 令牌会保存在 ~/.chat-mcp 和你的环境中;服务在本地使用它们进行 API 调用,并且只返回消息本身。
会传给 Claude 的是你询问的聊天内容——这正是该工具的用途。如果你让 Claude 阅读一段对话,该对话就会进入你的 Claude 对话,并按照 Anthropic 的隐私政策进行处理,和你自己粘贴文本完全一样。不会读取其他内容,也不会在后台读取任何内容:只有 Claude 调用工具时,服务才会执行操作。
本项目的作者无法看到其中任何内容。
安全
请阅读本部分。
- 这些操作会以你的身份执行,而不是以机器人的身份。 发送的任何内容都会显示为由你的账号发送,聊天中的其他人无法分辨。
- 保存的会话就是完整的凭证。
~/.chat-mcp/telegram.session和你的xoxp-令牌等同于登录了你的账号。任何复制了它们的人都能使用你的账号。它们永远不会离开你的设备,这里的任何内容都不会主动连接外部服务器。 - Claude 读取的所有内容都会进入模型的上下文。 不要将此工具用于存有你不会发送给模型的数据的账号。
- Telegram 将此类工具称为 userbot。 自动化个人账号受 Telegram 服务条款限制。少量个人读取和回复很常见,风险也较低;批量自动化会导致账号被封禁。由你决定,后果由你的账号承担。
- 可随时撤销:Telegram → 设置 → 设备;也可以在 Slack 的应用设置中删除令牌。删除
~/.chat-mcp会清除本地会话。
故障排除
“Telegram 尚未登录”——运行登录流程:让 Claude 使用你的电话号码登录。登录状态会持续保存;如果此提示反复出现,请检查 CHAT_MCP_DATA_DIR 是否可写。
“缺少 Telegram 凭证”——服务器未收到 TELEGRAM_API_ID / TELEGRAM_API_HASH。使用 claude mcp add 时,通过 -e 传入它们。
Slack 完全没有返回任何内容——你很可能已通过一个空工作区或错误的工作区完成授权。运行 whoami,查看实际连接了哪些工作区。
"#general" 在多个工作区中都存在——传入 workspace 以消除歧义;错误信息会列出可选项。
Slack 搜索返回 not_allowed_token_type——该令牌是机器人令牌(xoxb-)。你需要 User OAuth 令牌(xoxp-)。
开发
git clone https://github.com/nileshpatil6/telegram-slack-mcp
cd telegram-slack-mcp
npm install && npm run build
node dist/cli.js telegram # run the server on stdio
cd python && python -m build # build the Python distribution
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。