Telegram增强功能工具包

为Claude Channels提供丰富的Telegram外发功能支持,包括媒体发送、键盘按钮、支付发票及TON区块链工具,可与Claude Channels安全共存。

  • by Masashi-Ono0611
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 Masashi-Ono0611/claude-channels-telegram-mcp

使用说明

克劳德频道电报mcp

Claude Channels缺少出站层。将照片、文件(PDF、源代码)、键盘、Telegram Stars和TON工具添加到Claude code中——通过与Channels安全共存 CHANNELS_MODE (无投票冲突)。

这是什么

Claude Channels处理入站Telegram消息并提供 reply, react,以及 edit_message 对于出境。就是这样。任何更丰富的回应——照片、文件、按钮、付款发票——都需要这个工具包。

示例:Claude Code编码会话,结果发送到Telegram

克劳德做 工具
生成图表或图形 send_photo → Telegram中的图像
编辑源文件 send_document → 文件已发送到Telegram
生成测试结果报告(PDF) send_document → 电报中的PDF
在web测试期间截取屏幕截图 send_photo → Telegram中的屏幕截图
Claude Channels内置 此工具包添加
reply --纯文本响应 send_keyboard --内联按钮(URL或回调)
react -表情符号反应 send_photo, send_document --媒体
edit_message --编辑已发送的消息 send_invoice --Telegram Stars支付
(入站自动处理) register_commands, set_bot_description --BotFather设置
-- 16 TON区块链工具,包括TON Connect

为什么不直接使用任何Bot API MCP?

其他Bot API MCP服务器(TONresister/telegram-MCP、tsgram-MCP、ton-agent-kit)也提供出站工具,但它们都是轮询 getUpdates 连续不断地。将它们与克劳德频道一起运行 抵消冲突:消息被丢弃或传递两次。

CHANNELS_MODE=true 禁用此工具包中的所有轮询。渠道拥有入站;这个工具包处理出站。没有冲突。

主模式:CHANNELS_mode

CHANNELS_MODE (CHANNELS_MODE=true)--预期用例,以及Claude Channels:

  • 入站:由渠道自动处理
  • 出站:所有30个发送/TON工具可用
  • 轮询已禁用--与通道没有偏移冲突

独立 (无频道)-也支持,不带频道插件:

  • 入境: get_updates / get_pending_messages 可用的
  • 所有33个可用工具

MCP工具--30在CHANNELS_MODE/33独立

电报(17个工具)

工具 说明
send_message 发送纯文本(HTML)消息;支持线程回复的回复
send_keyboard 使用内联键盘按钮(URL链接或回调)发送消息
register_commands 注册 /commands 在BotFather机器人菜单中
set_bot_description 设置机器人配置文件描述
send_photo 发送带有标题的照片(URL或本地文件)
send_document 发送带有标题的文档/文件
delete_message 删除机器人自己的消息
pin_message 在聊天中固定消息
get_chat_info 获取聊天/用户信息
send_invoice 发送Telegram Stars付款发票
send_chat_action 在聊天中显示“正在打字…”/“正在发送照片…”状态
get_file 从以下位置获取文件的下载URL file_id
answer_callback_query 用吐司/警报响应内联按钮按下;关闭加载旋转器
answer_pre_checkout_query 批准或拒绝Telegram Stars付款(10秒截止日期)
get_updates 通过轮询获取传入消息/回调 (仅限独立模式)
get_pending_messages 未读邮件的简化视图 (仅限独立模式)
mark_messages_read 提前内部抵消,将更新标记为已处理 (仅限独立模式)

TON区块链(16个工具)

工具 说明
get_ton_balance 获取任何钱包地址的TON余额
get_jetton_balances 获取所有代币(Jetton)持有量
get_token_price 实时代币价格+24h/7d变化
estimate_swap DEX掉期产量估算
send_ton 从代理钱包执行TON转账(需要钱包配置)
generate_ton_payment_link 生成 ton:// +TonKeeper深度链接——让用户从自己的钱包支付
get_transactions 获取任何地址的最近TON/Jetton交易历史记录
transfer_jetton 从代理钱包发送Jetton代币(如USDT)(需要钱包配置)
get_nft_items 列出钱包拥有的NFT项目(名称、图像、收藏)
get_nft_collection 获取NFT集合元数据(名称、描述、项目计数、所有者)
resolve_ton_dns 解决a .ton 或 .t.me 域到钱包地址
get_staking_info 列出按APY排序的顶部液体质押池(APY、TVL、最小质押)
generate_tonconnect_link 生成TonKeeper连接链接(返回session_id+URL按钮)
check_tonconnect_session 轮询钱包连接状态和地址会话
request_ton_payment 从连接的用户钱包请求TON付款(用户在TonKeeper中批准)
disconnect_wallet 断开钱包连接并删除会话

快速开始

git clone https://github.com/Masashi-Ono0611/claude-channels-telegram-mcp.git
cd claude-channels-telegram-mcp && bun install

配置MCP

添加到您的项目 .mcp.json:

{
  "mcpServers": {
    "telegram-toolkit": {
      "command": "bun",
      "args": ["run", "/path/to/claude-channels-telegram-mcp/src/index.ts"],
      "env": {
        "TELEGRAM_BOT_TOKEN": "<your-bot-token>",
        "TON_API_BASE_URL": "https://testnet.tonapi.io",
        "CHANNELS_MODE": "true"
      }
    }
  }
}

操作模式

模式 何时使用 工具
CHANNELS_MODE (推荐) 使用Claude Channels插件 30个工具(投票除外)
独立 没有Claude Channels 33个工具(包括投票)

集 CHANNELS_MODE=true 在你的 .mcp.json env(如上所示,已包含在示例中)。

环境变量

# Required
TELEGRAM_BOT_TOKEN=<bot-token-from-botfather>
CHANNELS_MODE=true   # set to true when using alongside Claude Channels plugin

# TON network (auto-detects testnet/mainnet from URL)
TON_API_BASE_URL=https://testnet.tonapi.io    # testnet (default)
TON_API_BASE_URL=https://tonapi.io            # mainnet
TON_API_KEY=<optional-api-key>               # increases rate limits

# Agent wallet (required for send_ton / transfer_jetton)
AGENT_MNEMONIC_PATH=/path/to/mnemonic.txt
TONCENTER_ENDPOINT=<override-if-needed>      # auto-derived from TON_API_BASE_URL
TONCENTER_API_KEY=<optional-toncenter-key>

如果未设置TON环境变量,TON工具将返回“未配置”错误。电报工具无论如何都能工作。

建筑

Claude Code
  │
  ├── Claude Channels (built-in plugin)
  │   └── reply, react, edit_message (inbound + outbound messaging)
  │
  └── claude-channels-telegram-mcp (this MCP server)
      ├── Telegram: send, keyboards, media, commands, invoice, callbacks, polling
      └── TON: balance, price, swap, transfer, payment links, tx history, jetton, wallet connect

关键设计: 在CHANNELS_MODE中,只有仅发送API处于活动状态,与CHANNELS没有轮询冲突。在独立模式下, get_updates + send_message + answer_callback_query 提供完整的接收-响应循环。TON读取工具使用tonapi.io;编写工具使用TonCenter RPC。从以下位置自动检测网络(测试网/主网) TON_API_BASE_URL.

完整的响应管道(独立)

User presses inline button → get_updates → callback_query received
→ answer_callback_query("Processing...") → send_invoice(Stars)
→ User pays → pre_checkout_query received
→ answer_pre_checkout_query(ok=true) → send_message("Payment complete!")

支付链接流(CHANNELS_MODE或独立)

generate_ton_payment_link + send_keyboard 启用用户支付流而不暴露代理钱包:

Claude → generate_ton_payment_link → send_keyboard with URL button
User taps button → TonKeeper / any TON wallet opens → user signs & sends
Claude → get_transactions → verify payment received

TON Connect Flow(用户钱包)

generate_tonconnect_link + send_keyboard 连接用户自己的钱包(TonKeeper),而不暴露任何代理私钥:

Claude → generate_tonconnect_link → { session_id, tonkeeper_link }
Claude → send_keyboard with URL button (tonkeeper_link)
User taps → TonKeeper opens → user approves connection
Claude → check_tonconnect_session(session_id) → { status: "connected", address }
Claude → request_ton_payment(session_id, to, "0.5") → user approves in TonKeeper → { boc }
Claude → disconnect_wallet(session_id)

会话状态持久化为 ~/.ctt/sessions/<session_id>.json,因此连接在MCP呼叫中仍然存在。

CHANNELS_MODE:什么有效,什么无效

在CHANNELS_MODE中(CHANNELS_MODE=true),这三个轮询工具在两个位置都被禁用 ListTools 和 CallTool 级别,以防止与Channels插件的偏移冲突。

⚠️ reply 对比 send_message --不可互换

频道 reply 工具箱 send_message
在对话线程中响应 ✅ ❌ (发送一条新的独立消息)
需要chat_id ❌ (隐含) ✅ (必须提供)
在CHANNELS_MODE中可用 ✅ ✅

使用频道 reply 对于所有会话响应。使用 send_message 仅用于主动或定时发送(例如通知)。

⚠️ CHANNELS_MODE中的回拨按钮不起作用

回拨按钮(callback_data)要求 get_updates 从Telegram接收回拨事件。由于CHANNELS_MODE中禁用了轮询,因此回调数据永远不会传递给Claude。

按钮类型 CHANNELS_MODE 独立
URL按钮(url 字段)--打开链接 ✅ 作品 ✅ 作品
回拨按钮(callback_data)--将数据返回给机器人 ❌ 数据永远不会到达 ✅ 作品

在CHANNELS_MODE中,对所有交互元素(支付链接、TonKeeper连接、外部页面)使用URL按钮。

已测试

工具 结果
register_commands ✅ 已注册5个命令
set_bot_description ✅ 描述集
send_keyboard ✅ URL按钮已发送
send_photo ✅ URL图像已发送
send_document ✅ 本地文件已发送
delete_message ✅ 邮件已删除
pin_message ✅ 邮件已固定
get_chat_info ✅ 已检索用户信息
send_invoice ✅ 已发送1星发票
get_ton_balance ✅ 4.76吨
get_token_price ✅ $1.26 (+2.65%)
get_jetton_balances ✅ 杰顿控股上市
estimate_swap ✅ 交换估计值返回
send_ton ✅ TON转账已确认
generate_ton_payment_link ✅ ton://+生成TonKeeper链接
get_transactions ✅ 已获取Tx历史记录
transfer_jetton ✅ 杰顿转会已确认
send_chat_action ✅ 显示“正在键入…”状态
get_file ✅ 返回下载URL
get_updates ✅ 已获取传入消息
get_pending_messages ✅ 列出未读邮件
mark_messages_read ✅ 偏移高级
send_message ✅ 纯文本+回复_测试
answer_callback_query ✅ 吐司(show_alert=false)已测试
answer_pre_checkout_query ✅ 验证警卫+1星付款已批准
get_nft_items ✅ count=0(测试网钱包,API可达)
get_nft_collection ✅ 已提取“Hipo Payout”收藏
resolve_ton_dns ✅ 基础问题已解决
get_staking_info ✅ 5个游泳池已归还
generate_tonconnect_link ✅ 已生成TonKeeper链接
check_tonconnect_session ✅ 连接+地址(测试网,真实设备)
request_ton_payment ✅ 0.01吨签名+BOC退回(测试网)
disconnect_wallet ✅ 会话已断开连接+文件已删除

许可证

麻省理工学院