使用说明
克劳德频道电报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 |
✅ 会话已断开连接+文件已删除 |
许可证
麻省理工学院