Telegram Slack Mcp

io.github.nileshpatil6由 GitHub 帳號 nileshpatil6 發布v0.5.1更新於 Oct 24, 2026

Read and reply to your personal Telegram chats and all your Slack workspaces.

已驗證STDIO僅桌面效率與工作流溝通與協作

概覽

AI 產生的概覽

讓助理以你的身分讀取、搜尋,並可選擇回覆你的個人 Telegram 聊天與 Slack 工作區。

可以做什麼
內含兩個本機 MCP 伺服器,分別連接 Telegram 與 Slack,以你本人帳號而非機器人身分運作。Telegram 工具可列出聊天、讀取單一聊天、搜尋訊息、彙整未讀內容並檢視圖片或檔案;Slack 工具涵蓋頻道、私訊、討論串、跨工作區搜尋、未讀彙整與檔案檢視。兩者都提供登入與 whoami 工具,並在明確開啟傳送後能以你的身分送出訊息。
適用情境
當你希望助理處理真實的個人對話時使用,例如查看未讀私訊、一次搜尋多個 Slack 工作區,或草擬回覆,而不是只處理傳給機器人的訊息。若只需要機器人式整合或單一工作區連接器,則不必安裝。
執行需求
透過 npx 或 uvx 以 stdio 在本機執行,僅支援桌面端。Telegram 需要 my.telegram.org 提供的 TELEGRAM_API_ID 與 TELEGRAM_API_HASH,並完成一次 QR 碼登入;Slack 需要每個工作區一個使用者權杖(xoxp-),放在 SLACK_USER_TOKENS 中。Telegram 工作階段儲存在 CHAT_MCP_DATA_DIR,預設為 ~/.chat-mcp。需要連線至 Telegram 與 Slack API 的網路。
安裝前請注意
它以你的身分操作,送出的內容都顯示為你本人傳送。儲存的 Telegram 工作階段與 xoxp- 權杖等同完整憑證,複製到的人就能使用你的帳號。讀取到的內容都會進入模型上下文。除非設定 TELEGRAM_ALLOW_SEND=1 或 SLACK_ALLOW_SEND=1,否則傳送功能關閉。Telegram 將個人帳號自動化視為 userbot,受其條款限制,大量自動化有帳號被停用的風險。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Telegram Slack Mcp,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

telegram-slack-mcp

Give Claude your actual chats.

Two MCP servers that connect Claude to your personal Telegram and Slack accounts — your real DMs, groups, and channels, not a bot inbox.

[npm] [PyPI] [License]

bash
claude mcp add telegram -- npx -y telegram-slack-mcp telegramclaude mcp add slack    -- npx -y telegram-slack-mcp slack

Then just talk:

"what's unread on telegram from actual people?" "read my last 30 messages with Priya and draft a reply" "search all my slack workspaces for the deploy postmortem" "what's in the screenshot Priya sent me?"


Why this exists

Most Telegram integrations use the Bot API, which only sees messages sent to a bot you created. It cannot read your existing conversations. telegram-slack-mcp uses MTProto, the same protocol the official app uses, authenticating as you — so Claude sees the chats you actually have.

For Slack, the usual connector is scoped to one workspace. telegram-slack-mcp takes one user token per workspace and treats them as a single surface, so "search everywhere" means everywhere.

Install

Pick whichever runtime you already have. Both ship the same tools.

Node

bash
claude mcp add telegram -- npx -y telegram-slack-mcp telegramclaude mcp add slack    -- npx -y telegram-slack-mcp slack

Python

bash
claude mcp add telegram -- uvx telegram-slack-mcp telegramclaude mcp add slack    -- uvx telegram-slack-mcp slack

Claude Code plugin

/plugin marketplace add nileshpatil6/telegram-slack-mcp/plugin install telegram@telegram-slack-mcp/plugin install slack@telegram-slack-mcp
Other MCP clients (Claude Desktop, Cursor, …)
json
{  "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" }    }  }}

Setup

Telegram — 2 minutes

  1. Go to https://my.telegram.org → API development tools → create an app.

  2. Copy the api_id and api_hash, and set them:

    bash
    claude mcp add telegram      -e TELEGRAM_API_ID=1234567      -e TELEGRAM_API_HASH=your_hash      -- npx -y telegram-slack-mcp telegram
  3. Link your account. Either ask Claude — "log into telegram" — or do it yourself in a terminal, which needs no MCP client at all:

    bash
    TELEGRAM_API_ID=1234567 TELEGRAM_API_HASH=your_hash npx -y telegram-slack-mcp login
    powershell
    # PowerShell$env:TELEGRAM_API_ID="1234567"; $env:TELEGRAM_API_HASH="your_hash"npx -y telegram-slack-mcp login

    Either way you scan a QR and the session is saved to ~/.chat-mcp.

    Through Claude:

    It calls login, which returns a link to a page showing a QR code (and the code as text, if your client renders it). Scan it from Telegram on your phone — Settings → Devices → Link Desktop Device — then it calls login_status to confirm. No phone number, no SMS code, no 2FA password typed anywhere. On the same machine you can click "open in Telegram Desktop" instead of scanning.

    The session is saved to ~/.chat-mcp and persists; you do this once.

Can't scan? Use the phone-number flow

login_start(phone) sends you a code, login_complete(code, password?) finishes. Note that with this path your phone number and login code pass through the conversation as tool arguments, so they land in the model's context. The QR flow keeps them out of it.

Slack — 5 minutes

  1. Go to https://api.slack.com/apps → Create New App → From a manifest.

  2. Paste slack-app-manifest.yaml — it prefills every scope.

  3. Install to Workspace, then copy the User OAuth Token (xoxp-…, not xoxb-).

  4. Repeat step 3 for each workspace you want. Same app, one token each.

  5. Ask Claude: "connect my slack" — the login tool prompts for the tokens, verifies each one against Slack, and saves them to ~/.chat-mcp. Nothing to put in your config.

    Prefer environment variables? That still works:

    bash
    claude mcp add slack -e SLACK_USER_TOKENS=xoxp-aaa,xoxp-bbb -- npx -y telegram-slack-mcp slack

Slack has no local OAuth flow, which is why you create the app yourself: Slack's OAuth requires a client secret and an HTTPS redirect URL, so a package distributed over npm cannot complete it without either shipping a secret publicly or running a callback server. This project has no server, so it asks for the token instead.

Tools

Telegram

toolwhat it does
login()scan a QR to link your account — no phone number or code
login_status()check whether the QR has been scanned yet
login_start(phone)fallback: send yourself a login code
login_complete(code, password?)finish login, save the session
whoami()which account is connected
list_chats(limit, query, unread_only, kind)recent chats; kind filters to dm, group, channel, bot…
read_chat(chat, limit, before_id)messages of one chat — chat takes @username, id, or part of a name
search_messages(query, chat?, limit)full-text search, one chat or all
unread_summary(limit, per_chat, kind)catch-up view; kind: "dm" skips the channel noise
read_media(chat, message_id, max_kb)view a photo or file — returns the actual image, not just its type
send_message(chat, text, reply_to?)reply as you — off unless TELEGRAM_ALLOW_SEND=1

Slack

toolwhat it does
login()prompts for your xoxp- tokens, verifies them, saves them
whoami()every connected workspace and who you are in each
list_channels(limit, query, workspace, types)channels across workspaces
list_dms(limit, workspace)1:1 and group DMs
read_channel(channel, limit, workspace, before_ts)one channel or DM
read_thread(channel, thread_ts, limit, workspace)replies inside a thread
search_messages(query, limit, workspace)supports in:#chan, from:@user
unread_summary(limit, per_chat, workspace)what's unread everywhere
read_file(file_id, workspace, max_kb)view a file shared in Slack — returns the actual image
send_message(channel, text, workspace, thread_ts?)post as you — off unless SLACK_ALLOW_SEND=1

Every Slack tool takes an optional workspace (any substring of the name). Leave it blank to act across all of them; it's only required when a channel name exists in more than one, and the error tells you which.

Configuration

variabledefaultmeaning
TELEGRAM_API_ID—from my.telegram.org
TELEGRAM_API_HASH—from my.telegram.org
TELEGRAM_ALLOW_SEND01 lets Claude send Telegram messages as you
SLACK_USER_TOKENS—one xoxp- token per workspace, comma separated
SLACK_ALLOW_SEND01 lets Claude post to Slack as you
CHAT_MCP_DATA_DIR~/.chat-mcpwhere the Telegram session is stored

Sending is off by default in both servers. Reading is the safe default; you opt into writing deliberately.

Privacy

Nothing is sent to any server belonging to this project. There is no such server.

telegram-slack-mcp runs entirely on your machine. The only network traffic it makes is directly to Telegram's and Slack's own APIs, using your own credentials. There is no telemetry, no analytics, no crash reporting, no license check, no "phone home" — grep the source, there is no endpoint to find.

The data path is exactly this:

your machine  <-->  Telegram / Slack APIs      (your credentials, your account)your machine  <-->  Claude                     (only what you ask Claude to read)

Your credentials never reach Claude. Your session file and xoxp- tokens stay in ~/.chat-mcp and in your environment; the servers use them locally to make API calls and pass back only the messages themselves.

What does reach Claude is the chat content you ask about — because that is the point of the tool. If you ask Claude to read a conversation, that conversation goes into your Claude conversation and is handled under Anthropic's privacy policy, exactly like text you paste in yourself. Nothing else is read, and nothing is read in the background: the servers only act when Claude calls a tool.

The author of this project cannot see any of it.

Security

Read this part.

  • These act as you, not as a bot. Anything sent shows as sent by your account, and people in those chats cannot tell the difference.
  • The stored session is a full credential. ~/.chat-mcp/telegram.session and your xoxp- tokens are equivalent to being logged in as you. Anyone who copies them has your account. They never leave your machine, and nothing here phones home.
  • Everything Claude reads enters the model's context. Don't point this at accounts holding data you would not send to a model.
  • Telegram calls this a userbot. Automating a personal account is restricted by Telegram's ToS. Light personal read-and-reply use is common and low risk; bulk automation gets accounts banned. Your call, your account.
  • Revoke any time: Telegram → Settings → Devices, or delete the token in Slack's app settings. Deleting ~/.chat-mcp drops the local session.

Troubleshooting

"Telegram not logged in yet" — run the login flow: ask Claude to log in with your phone number. It persists after that; if it keeps reappearing, check that CHAT_MCP_DATA_DIR is writable.

"Missing Telegram credentials" — TELEGRAM_API_ID / TELEGRAM_API_HASH aren't reaching the server. With claude mcp add, pass them with -e.

Slack returns nothing at all — you're almost certainly authorized against an empty or wrong workspace. Run whoami to see which workspaces are actually connected.

"#general" exists in several workspaces — pass workspace to disambiguate; the error lists your options.

Slack search returns not_allowed_token_type — the token is a bot token (xoxb-). You need the User OAuth token (xoxp-).

Development

bash
git clone https://github.com/nileshpatil6/telegram-slack-mcpcd telegram-slack-mcpnpm install && npm run buildnode dist/cli.js telegram        # run the server on stdio
cd python && python -m build     # build the Python distribution

License

MIT

來源:README.md,提交 e032a88

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.5.1最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分