跳到主要内容
所有 Telegram MCP 连接器

opencode · SST

把 Telegram 接入 opencode

在 SST 的开源终端 AI 智能体 opencode 中把 Entergram 添加为 MCP 服务器,让它处理你真实的 Telegram 账号,浮现漏看的消息、跟进变冷的潜在客户,并直接从命令行就聊天采取行动。

MCP 服务器地址 https://mcp.entergram.com/mcp

三步接入 opencode

适用于 opencode 的 TUI 和 CLI。

MCP 服务器地址 https://mcp.entergram.com/mcp
  1. 在 Entergram 的 Settings → Workspace → Connectors → MCP 下复制你的端点。opencode 是从 opencode.json 里读取它的,所以你会把它粘进一个文件而不是一个输入框。

  2. 在你的 opencode.json 里,把 Entergram 添加到 "mcp" 之下,作为一个指向 Entergram MCP 地址的远程服务器:https://mcp.entergram.com/mcp。

  3. 启动 opencode,用你的 Entergram 账号登录,然后点击 Allow access 授予限定范围的访问权。之后 opencode 就能在其会话中读取你的 Telegram 账号并采取行动。

向 opencode 提那些你永远没法问 Telegram 的问题

连上你的个人账号后,opencode 就能从终端跨所有聊天采取行动。可以试试这些提示:

  1. 「开一个故障处理频道,把值班的人拉进来。」

  2. 「把部署摘要发到客户更新频道。」

  3. 「在我打发布标签之前,还有多少工单没关?」

  4. 「找出提到这次迁移的聊天,总结一下大家的顾虑。」

  5. 「在那个会话上加一条备注,写明回滚方案。」

  6. 「beta 群里有谁还没回复升级通知?」

opencode 能用你的 Telegram 做什么

opencode 从配置文件加载 MCP 服务器。把 Entergram 注册为远程 MCP 服务器,SST 的开源智能体就能在终端里操作你真实的个人 Telegram 账号,由 OAuth 限定权限,无需机器人账号,也无需 API 密钥。

  1. 全程用键盘驱动 Telegram

  2. 发布之后把上线通告发到客户频道

  3. 创建故障处理频道并邀请响应人员

  4. 在打发布标签前统计未关闭的工单

  5. 通过 opencode.json 做全局或按项目配置

  6. 以非交互方式运行,适合脚本化任务

在同一个 shell 里完成发布

终端智能体真正被用起来的时刻,正是打开聊天应用会打断专注的那些时刻:部署刚结束、故障处理途中,或者一天快结束时你想知道还有什么没关。下面这些运行都假设了这种情境,提示词很短,全靠键盘,而连接器负责那些你原本会一直拖到不再重要为止的部分。每一项都对应几次具名调用,它们会打印在会话日志里,也正因为如此,当你手动看它们跑通之后,可以直接把它们搬进脚本。

了解更多

你的提问

「部署完成了。把版本号和 changelog 链接发到发布频道。」

调用的工具

entergram_list_accountsentergram_list_groupsentergram_send_message

你会得到

公告就从跑部署的那个 shell 里发出去,在成功之后几秒,而不是一小时之后。智能体先确定哪个已连接账号有发布权限,按名称找到频道(于是 ID 永远不用写进你的脚本),然后发送。把它接进部署目标,这一步就不再是可选项。

你的提问

「那条公告里的构建号我写错了,原地改掉。」

调用的工具

entergram_list_messagesentergram_get_messageentergram_edit_message

你会得到

改原文比在下面补一条更正要好。智能体回溯近期历史定位到那条消息,动手之前先确认内容,然后编辑;于是明天滚屏路过的人读到的是正确的数字,而不是一串补丁式的更正。

你的提问

「为这件事开一个故障处理房间,把值班的人拉进来。」

调用的工具

entergram_create_group_chatentergram_list_membersentergram_invite_chat_members

你会得到

三十秒的准备工作,而在系统宕着的时候没人想做它。群被建好,工作区花名册被读取以解析你点名的那些人,邀请随即发出。你回到日志前,协调工作已经安排妥当,而不是只做了一半。

你的提问

「把周五那条维护通知转发给所有还没看到的客户群。」

调用的工具

entergram_list_groupsentergram_list_messagesentergram_forward_messages

你会得到

转发原文能让每个群读到完全一致的措辞,这正是维护窗口通知需要的,也正是重新打一遍会破坏的。智能体在铺开之前会先检查哪些群已经收到过,所以没人会被同一条通知打扰两次。

你的提问

「这位报告者在我们的一些社群里,具体是哪些,我们名单上还有谁也在里面?」

调用的工具

entergram_list_contactsentergram_get_contactentergram_list_contact_shared_groups

你会得到

共同群组查询回答了一个 Telegram 自己不会回答的问题:你和某人的交集到底在哪里。当一份 bug 报告需要判断报告者的影响力时有用;当你在权衡「一个变通方案是在共享社群里发一次就够,还是要手工在十个私聊里重复十遍」时同样有用。

你的提问

「打发布标签之前,标记为这个里程碑的未关闭工单还有多少?」

调用的工具

entergram_list_ticket_custom_columnsentergram_list_ticketsentergram_get_ticket

你会得到

一行命令、零个看板的发布就绪检查。智能体读取你的工单字段结构找到里程碑那一列,按它筛选未关闭工单,并连标题一起报出数量。把它放进发布脚本的第一步,阻塞性工单就会拦住这次打标签,而不是在之后才浮出水面。

全局、按项目,还是无头运行

了解更多

全局:~/.config/opencode/opencode.json

一份配置跟着你进入每一个打开的仓库。个人授权放这里最合适:无论你在公司项目还是周末项目里,服务器都可用,而且你只需授权一次,而不是每个检出授权一次。

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "entergram": {
      "type": "remote",
      "url": "https://mcp.entergram.com/mcp",
      "enabled": true
    }
  }
}

按项目:仓库根目录的 opencode.json

和代码一起提交,于是任何人克隆这个仓库都会拿到已声明好的服务器,不用谁去告诉他。这里没有共享任何机密,文件里只有一个端点,除此之外什么都没有,而且每位队友仍要用自己的权限完成自己的登录。项目配置会覆盖全局文件,所以请只保留一份定义,别让两份互相打架。

无头:opencode run

这才是这个连接器一开始就适合终端智能体的原因。一次非交互调用可以塞进部署脚本、Makefile 目标或 CI 步骤里,发布通知也就不再依赖谁记得去发。

opencode run "post the release summary for v2.14 in the customer channel"

78 个工具,本地什么都不用装

服务器由 Entergram 托管,所以 opencode 拿到这 9 个工具分组,不需要往你的机器或 CI 镜像里加任何一个依赖,没有桥接进程,没有 Python 环境,仓库里也没有凭证。授权一旦存在,下面这一切在你所选访问级别之内立刻可达,而且交互式会话和一次性运行拿到的是同一份清单。

了解更多

一段话说清终端侧的安全模型

你的 dotfiles 里不会留下任何敏感信息。opencode.json 里只有一个地址和一个开关;凭证本身在浏览器登录之后保存在 opencode 自己的认证存储里,而你的 Telegram 会话留在 Entergram 内部,SST 和模型厂商都看不到。如果某台机器丢了,或者某个 CI runner 下线了,就在 Entergram 的 Settings → Workspace → Connectors → MCP 里干掉这份授权,那台机器上的所有会话都会在下一次调用时失去访问权。

了解更多
个人智能体
单个开发者终端的默认选择,任何成员都能创建,不需要审批。读的范围覆盖工作区记录、你的已连接账号、联系人、聊天、消息历史和工单队列;写则限定在你自己账号所属聊天上的自定义字段。这足以支撑分流、日报和发布就绪检查,同时刻意止步于任何会和客户说话的能力。
工作区连接器
由所有者或管理员创建,持有该服务器定义的全部权限:发送、编辑、转发、写工单、在工作区任意位置写自定义字段,以及群组管理。如果部署脚本要在无人介入的情况下往客户频道发消息,就需要这一档。
撤销
立即生效,而且刻意做成单向的。你不需要能访问跑着 opencode 的那台机器就能切断它,在 Entergram 里撤销会让这份授权无论存在哪里都失效,而当运行者是一台 CI 机器而不是你桌上的笔记本时,这正是关键所在。

终端原生连接器的约束

这些大多关乎交互式会话和自动化运行之间的落差,而终端智能体一生都跨在这道落差上。它们都不是拦路虎;但在这里学会,比在流水线上学会便宜得多。

了解更多
  • 首次授权需要浏览器。脚本化调用没法完成授权页,所以请在一次交互式会话里授权一次,之后已保存的授权会带动后续的运行。
  • 提交进仓库的 opencode.json 共享的是地址,不是访问权。拉下仓库的队友各自走自己的登录,他们的令牌带的是他们自己的权限,而不是你的。
  • 我们这边没有调度器。opencode 在运行结束时退出,所以任何周期性的东西(每晚的摘要、部署后的通知)都是你的 cron 条目或流水线步骤,永远不是 Entergram 自己触发的。
  • MCP 属于 Pro 套餐。在更低档位上,服务器照样能应答握手,这会让故障看起来像配置 bug,其实是计费问题。
  • 写入的前提是列已经存在。智能体可以在某个聊天上填写一个发布追踪字段,但创建这个字段是工作区连接器才能做的操作,个人授权做不到。
  • 必须逐账号寻址。终端习惯期待有个合理的默认值,但这里没有,所以请在提示词里点名账号,否则智能体会自己从账号列表里解析一个出来。

opencode 连接器排障

了解更多

opencode 启动了,却列不出 Entergram 的工具

确认这个条目位于 mcp 块之下,type 设为 remote,enabled 设为 true,缺任何一项都会被解析后静默跳过。配置是在启动时读取的,所以改完之后请重启会话。

改完之后 opencode 干脆起不来了

保留 $schema 那一行,并把文件过一遍 JSON 解析器。多余的逗号是最常见的原因,而启动报错往往只点出文件名,不指出出错的行。

脚本化运行卡在授权那一步

非交互运行打不开授权页。先交互式启动 opencode 一次,完成 Entergram 登录,之后已保存的授权就能带动脚本化运行。

生效的是另一份配置

项目级的 opencode.json 会覆盖 ~/.config/opencode/ 下的全局文件。如果某位队友提交过一个条目,那么生效的是他那份,请把两者对齐,而不是换个名字再加一个服务器。

消息发到了错误的地方

请在提示词里同时点名账号和目标聊天。entergram_list_accounts 能解析前者,但终端会话本身并不隐含任何默认值,而一次性运行也不会停下来问你。

用了几天之后调用开始失败

令牌会过期。交互式运行一次 opencode 并重新确认授权即可,配置文件不用改,变的只是它背后的那份授权。

opencode + Telegram 常见问题

opencode 是怎么连接 MCP 服务器的?
opencode 从配置文件读取 MCP 服务器。用 MCP 地址把 Entergram 添加为远程服务器,并通过 OAuth 授权即可。
这是一个 Telegram 机器人吗?
不是。整套配置里没有任何机器人令牌,托管的 MCP 服务器是以你自己的 Telegram 账号身份工作的,这也是它能读到机器人永远读不到的历史记录的原因。
安全吗?
安全。OAuth 2.0 加上限定的权限范围;由你决定 opencode 能访问什么,并可随时撤销。
opencode 能执行多步的 Telegram 操作吗?
能。作为一个自主的终端智能体,opencode 可以在一次运行里把多个步骤串起来(读取未回复的聊天、起草回复、开工单),并在发出任何东西之前停下来等你确认。

把 Telegram 接入 opencode