Telegram通知器MCP服务器

一个MCP服务器,允许LLM通过Telegram机器人向用户发送消息和文件,并读取传入消息。无需外部HTTP或Telegram库,只需原生fetch API和官方MCP SDK。

  • by AdeshAtole
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 AdeshAtole/telegram-notifier-mcp

使用说明

电报通知器MCP服务器

一 主控程序 该服务器允许LLM通过Telegram机器人向用户发送消息和文件,并读取传入消息。没有外部HTTP或Telegram库,只有本地库 fetch API和官方MCP SDK。

快速开始

无需克隆或构建,只需将配置添加到MCP客户端即可。

1.创建Telegram Bot

  1. 打开电报和消息 @植物学家
  2. 发送 /newbot 并按照提示命名您的机器人
  3. 复制 bot令牌 您收到(例如。, 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11)

2.查找您的聊天ID

  1. 在Telegram上向您的新机器人发送任何消息
  2. 在浏览器中打开以下URL,替换 YOUR_BOT_TOKEN 使用您的实际令牌:
    https://api.telegram.org/botYOUR_BOT_TOKEN/getUpdates
    
  3. 在JSON响应中,找到 "chat":{"id": 123456789} --该号码是您的聊天ID

提示: 对于群聊,将机器人添加到群中,发送消息,并检查相同的URL。群聊ID为负数(例如。, -1001234567890).

3.添加到您的MCP客户端

克劳德桌面

将此添加到您的Claude Desktop配置文件中:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • 窗户: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "telegram-notifier": {
      "command": "npx",
      "args": ["telegram-notifier-mcp"],
      "env": {
        "TELEGRAM_BOT_TOKEN": "your-bot-token-here",
        "TELEGRAM_CHAT_ID": "your-chat-id-here"
      }
    }
  }
}

克劳德代码

添加到您的项目 .mcp.json 或 ~/.claude.json:

{
  "mcpServers": {
    "telegram-notifier": {
      "command": "npx",
      "args": ["telegram-notifier-mcp"],
      "env": {
        "TELEGRAM_BOT_TOKEN": "your-bot-token-here",
        "TELEGRAM_CHAT_ID": "your-chat-id-here"
      }
    }
  }
}

Codex CLI

您可以通过以下任一方式配置Codex CLI:

选项A:手动添加 ~/.codex/config.toml

[mcp_servers.telegram-notifier]
command = "npx"
args = ["telegram-notifier-mcp"]

[mcp_servers.telegram-notifier.env]
TELEGRAM_BOT_TOKEN = "your-bot-token-here"
TELEGRAM_CHAT_ID = "your-chat-id-here"

选项B:使用CLI命令添加它

codex mcp add telegram-notifier \
  --env TELEGRAM_BOT_TOKEN=your-bot-token-here \
  --env TELEGRAM_CHAT_ID=your-chat-id-here \
  -- npx telegram-notifier-mcp

就是这样——你的LLM现在可以向你发送Telegram通知了。

配置

服务器使用两个环境变量:

变量 必填 描述
TELEGRAM_BOT_TOKEN 是 来自@BotFather的机器人令牌
TELEGRAM_CHAT_ID 否 默认聊天ID。可以通过以下方式覆盖每次工具调用 chatId 参数。

如果发生以下情况,服务器将退出并出错 TELEGRAM_BOT_TOKEN 未设置。如果 TELEGRAM_CHAT_ID 未设置,您必须通过 chatId 每次工具调用。

工具

send_message

向Telegram聊天发送短信。

参数 类型 必填 说明
text string 是 要发送的消息文本
chatId string 否 目标聊天ID(覆盖 TELEGRAM_CHAT_ID)
parseMode string 否 Markdown, MarkdownV2,或 HTML
disableNotification boolean 否 无通知声音的静默发送

send_document

将文件/文档发送到Telegram聊天。

参数 类型 必填 说明
filePath string 是 文件的绝对路径
chatId string 否 目标聊天ID(覆盖 TELEGRAM_CHAT_ID)
caption string 否 文档的标题
parseMode string 否 Markdown, MarkdownV2,或 HTML
disableNotification boolean 否 无通知声音的静默发送

send_photo

将照片/图像发送到Telegram聊天。

参数 类型 必填 说明
filePath string 是 图像文件的绝对路径
chatId string 否 目标聊天ID(覆盖 TELEGRAM_CHAT_ID)
caption string 否 照片的标题
parseMode string 否 Markdown, MarkdownV2,或 HTML
disableNotification boolean 否 无通知声音的静默发送

send_video

将视频发送到Telegram聊天。

参数 类型 必填 说明
filePath string 是 视频文件的绝对路径
chatId string 否 目标聊天ID(覆盖 TELEGRAM_CHAT_ID)
caption string 否 视频的标题
parseMode string 否 Markdown, MarkdownV2,或 HTML
disableNotification boolean 否 无通知声音的静默发送

send_audio

将音频文件发送到Telegram聊天。

参数 类型 必填 说明
filePath string 是 音频文件的绝对路径
chatId string 否 目标聊天ID(覆盖 TELEGRAM_CHAT_ID)
caption string 否 音频的标题
parseMode string 否 Markdown, MarkdownV2,或 HTML
disableNotification boolean 否 无通知声音的静默发送

get_updates

检查发送到机器人的新消息。只返回自上次检查以来收到的消息。

参数 类型 必填 说明
limit number No 要检索的最大邮件数(1-100,默认值10)
timeout number 否 轮询超时时间过长(秒)(0-30,默认值0)。设置>0以等待新消息。

文件下载

当消息包含媒体(照片、文档、视频、音频、语音消息或贴纸)时,服务器会自动将文件下载到 ~/.telegram-notifier-mcp/downloads/ 并且在输出中包括本地路径。这允许LLM直接读取或处理文件。

  • 文件另存为 <timestamp>-<original_filename> 避免碰撞
  • 照片以最高可用分辨率下载
  • Telegram Bot API将下载限制为 20 MB
  • 如果下载失败,输出将退回到仅标记媒体类型

与MCP检查员一起进行测试

您可以使用交互方式测试服务器 MCP检查员:

TELEGRAM_BOT_TOKEN="your-token" TELEGRAM_CHAT_ID="your-chat-id" \
  npx @modelcontextprotocol/inspector npx telegram-notifier-mcp

这将打开一个浏览器UI,您可以在其中调用每个工具并查看结果。

错误处理

服务器优雅地处理错误并返回描述性消息:

场景 行为
失踪 TELEGRAM_BOT_TOKEN 服务器在启动时按指示退出
缺少聊天ID(无环境变量,无参数) 返回 isError: true 带信息
找不到文件 返回 isError: true 使用文件路径
文件超过50 MB 返回 isError: true 文件大小
电报API错误 返回 isError: true 带有Telegram的错误描述

所有服务器日志都转到 标准错误 因此,它们永远不会干扰stdout上的stdio MCP传输。

文件大小限制

Telegram强制执行 50 MB 通过Bot API上传文件的限制。服务器在上传之前验证文件大小,如果超过限制,则返回错误。

发展

git clone https://github.com/AdeshAtole/telegram-notifier-mcp
cd telegram-notifier-mcp
npm install
npm run build

# Watch mode — rebuilds on file changes
npm run dev

出版

当您创建GitHub版本时,版本会通过GitHub Actions自动发布到npm。

设置:

  1. 将你的npm令牌添加为名为 NPM_TOKEN 在GitHub设置>机密和变量>操作中
  2. 将版本插入 package.json
  3. 创建一个新的GitHub版本——工作流将构建并发布到npm

许可证

麻省理工学院