克劳德频道电报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": "",
"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=
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= # increases rate limits
# Agent wallet (required for send_ton / transfer_jetton)
AGENT_MNEMONIC_PATH=/path/to/mnemonic.txt
TONCENTER_ENDPOINT= # auto-derived from TON_API_BASE_URL
TONCENTER_API_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 receivedTON 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/.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 | ✅ 会话已断开连接+文件已删除 |
许可证
麻省理工学院
