← 所有 Telegram MCP 连接器

opencode · SST

把 Telegram 接入 opencode

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

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

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

可直接粘贴的配置

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

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

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

  • 「开一个故障处理频道,把值班的人拉进来。」
  • 「把部署摘要发到客户更新频道。」
  • 「在我打发布标签之前,还有多少工单没关?」
  • 「找出提到这次迁移的聊天,总结一下大家的顾虑。」
  • 「在那个会话上加一条备注,写明回滚方案。」
  • 「beta 群里有谁还没回复升级通知?」

三步接入 opencode

适用于 opencode 的 TUI 和 CLI。

  1. 01

    在 Entergram 中复制你的 MCP 地址

    在 Entergram 的 Settings → Workspace → Connectors → MCP 下复制你的端点。opencode 是从 opencode.json 里读取它的,所以你会把它粘进一个文件而不是一个输入框。

  2. 02

    在 opencode.json 中添加服务器

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

  3. 03

    授权并运行

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

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

全局 —— ~/.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"

在同一个 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

你会得到

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

opencode 能用你的 Telegram 做什么

  • 全程用键盘驱动 Telegram
  • 发布之后把上线通告发到客户频道
  • 创建故障处理频道并邀请响应人员
  • 在打发布标签前统计未关闭的工单
  • 通过 opencode.json 做全局或按项目配置
  • 以非交互方式运行,适合脚本化任务

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

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

账号与工作区

5 个工具

用于确认身份和权限范围。每次消息类调用都必须先通过 list_accounts 取得 account_id——跳过这一步的 AI 客户端会把请求发到错误的 Telegram 账号上。

  • entergram_get_me
  • entergram_list_accounts
  • entergram_get_workspace
  • entergram_get_member
  • entergram_list_members

聊天与查找

8 个工具

用于定位会话。工作区视图携带 CRM 状态(工单、评论、自定义字段);实时视图携带 Telegram 当前的传输状态和未读计数。

  • entergram_list_chats
  • entergram_get_chat
  • entergram_list_live_chats
  • entergram_get_live_chat
  • entergram_list_workspace_chats
  • entergram_get_workspace_chat
  • entergram_update_workspace_chat
  • entergram_get_chat_management

消息

9 个工具

读写消息历史,包括编辑、转发和表情回应。发送操作按账号划定范围,因此任何操作都不会跨越你已连接的多个账号生效。

  • entergram_list_messages
  • entergram_get_message
  • entergram_send_message
  • entergram_send_media_message
  • entergram_edit_message
  • entergram_delete_message
  • entergram_forward_messages
  • entergram_get_message_reactions
  • entergram_set_message_reactions

联系人

3 个工具

你在和谁对话,以及你们还在哪些地方有交集。共同群组查询正是让「我的哪些潜在客户在同一个社群里?」这类问题变得可回答的关键。

  • entergram_list_contacts
  • entergram_get_contact
  • entergram_list_contact_shared_groups

工单

10 个工具

完整的客服工单控制:创建、指派、设置优先级、评论和关闭。工单会关联回它所来自的聊天,因此 AI 客户端可以一步之内从会话转入工单队列。

  • entergram_list_tickets
  • entergram_get_ticket
  • entergram_create_ticket
  • entergram_update_ticket
  • entergram_delete_ticket
  • entergram_list_chat_tickets
  • entergram_list_ticket_comments
  • entergram_create_ticket_comment
  • entergram_update_ticket_comment
  • entergram_delete_ticket_comment

CRM 自定义字段

11 个工具

你的销售流程结构。写入数值前先读取列定义——复选框接受布尔值,多选字段接受由选项值组成的数组,日期字段接受 ISO 8601 字符串。

  • entergram_list_custom_columns
  • entergram_get_custom_column
  • entergram_create_custom_column
  • entergram_update_custom_column
  • entergram_delete_custom_column
  • entergram_list_custom_column_options
  • entergram_create_custom_column_option
  • entergram_update_custom_column_option
  • entergram_delete_custom_column_option
  • entergram_get_chat_custom_fields
  • entergram_patch_chat_custom_fields

工单自定义字段

9 个工具

工单侧的同一套结构控制——分类、严重级别、SLA 等级,以及你的客服团队在状态和优先级之外跟踪的任何字段。

  • entergram_list_ticket_custom_columns
  • entergram_get_ticket_custom_column
  • entergram_create_ticket_custom_column
  • entergram_update_ticket_custom_column
  • entergram_delete_ticket_custom_column
  • entergram_list_ticket_custom_column_options
  • entergram_create_ticket_custom_column_option
  • entergram_update_ticket_custom_column_option
  • entergram_delete_ticket_custom_column_option

内部备注

4 个工具

写在聊天上、客户永远看不到的评论。适合让 AI 客户端把自己的推理过程留下来,交给人类同事接手。

  • entergram_list_chat_comments
  • entergram_create_chat_comment
  • entergram_update_chat_comment
  • entergram_delete_chat_comment

群组与频道

11 个工具

创建和管理 Telegram 群组与频道——成员、权限、隐私和资料——另外还提供一个原始命令通道,用于处理其余情况。

  • entergram_list_groups
  • entergram_get_group
  • entergram_list_group_members
  • entergram_create_group_chat
  • entergram_create_channel
  • entergram_invite_chat_members
  • entergram_remove_chat_member
  • entergram_update_chat_info
  • entergram_update_chat_permissions
  • entergram_update_chat_privacy
  • entergram_run_chat_command

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

你的 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