TOPIC COLLECTION
Appwrite MCP服务器支持MCP Events:AI智能体能订阅新用户、函数失败、部署完成了,免费版每项目只能开2个
Appwrite在2026-10-19宣布其MCP服务器支持MCP Events(MCP规范扩展提案SEP-3415)。连接Appwrite MCP的AI智能体可以订阅项目里的事件并在发生时被唤醒,不用轮询。首批6种事件:新用户、函数执行失败、函数部署完成、站点部署完成、表新增行、文件上传。本地智能体用events/stream长连接接收,有公网HTTPS地址的用events/subscribe接收签名webhook。每个订阅占用项目里一个webhook,Free版每项目2个,Pro不限。MCP Events仍是提案,客户端支持刚起步,官方演示用的是Pi。
资料更新:2026-10-20
依据Appwrite官方博客《Announcing MCP Events》与Changelog(均为2026-10-19)。本站未实测,安装命令照录官方示例。MCP Events尚未成为MCP正式规范的一部分。核查2026-10-20(新加坡时间)。
主题标签:Appwrite、MCP Events、SEP-3415、AI智能体、Webhook
用AI智能体管后端的人,大概都有个不满:智能体只会在你问它的时候干活。凌晨两点某个云函数开始报错,它不知道;有新用户注册,它也不知道,除非你让它每隔几分钟去查一次。
Appwrite(开源的后端即服务,常被拿来和Supabase、Firebase比)10月19日给自家MCP服务器加了一个能力,叫MCP Events。说白了就是让智能体能「订阅」项目里的事件,事情发生时服务器主动推过来,智能体被唤醒再处理。
MCP Events是什么,是不是正式标准
MCP是Model Context Protocol,现在主流AI编程工具和智能体基本都支持,用来让模型调用外部工具。原来的MCP基本是「客户端问、服务器答」,服务器没法主动找客户端。
MCP Events是给MCP加的一个扩展,提案编号SEP-3415,还在MCP规范仓库里讨论,没有成为正式规范。Appwrite是最早实现的一批。按官方博客,支持事件的服务器要多提供三样东西:
- 目录:
events/list,告诉客户端有哪些事件、每个事件要什么参数; - 订阅:客户端带参数申请,比如「项目X里的新用户」;
- 投递:事件发生时服务器把它发给客户端,客户端不用再问。
能订阅哪些事件
首批6种,每个都必须带project_id,而且只针对你指定的那个资源:
| 事件 | 什么时候触发 | 另外要指定 |
|---|---|---|
| users.user.created | 新建用户 | — |
| functions.execution.failed | 某个函数执行失败 | function_id |
| functions.deployment.completed | 函数部署变成ready或failed | function_id,可选status |
| sites.deployment.completed | 站点部署变成ready或failed | site_id,可选status |
| tablesdb.row.created | 表里新增一行 | database_id、table_id |
| storage.file.created | 存储桶里上传了文件 | bucket_id |
有一点设计我挺认同:事件内容只有ID和元数据,比如新用户只给user_id和创建时间,不带邮箱、手机号、行内容或执行日志。智能体想知道细节,要用你登录时授予的权限再调一次工具去查。这样即使事件流被截获,泄露的信息也有限。
两种接收方式
智能体跑的地方不一样,所以有两种投递方式:
- 推送(events/stream):给跑在你自己电脑上的智能体用。它们没有公网地址,服务器没法回调,于是由智能体保持一个长连接,服务器在这条连接上把事件流回来,每25秒发一次心跳防止断开。
- Webhook(events/subscribe):给有公网HTTPS地址的托管智能体用。服务器先发一个challenge验证地址,之后每个事件都发一个签名过的POST请求。
在Appwrite这边,每个订阅本质上就是你项目里的一个webhook,用你的OAuth令牌创建,订阅信息加密存在这个webhook上。MCP服务器自己不存订阅数据库。你在Appwrite控制台的webhook列表里能看到它们,取消订阅或关闭连接时会自动删掉。
费用和限制:免费版很容易撞上限
MCP Events本身不另收费,但每个活跃订阅或打开的连接要占项目里一个webhook名额。Free版每个项目只能有2个webhook,Pro版不限。
这意味着在免费版上,如果你已经给项目配了一两个普通webhook(比如通知Slack),智能体可能一个事件都订阅不了。超出上限时服务器会返回明确的错误,智能体能告诉你该升级还是先退订别的。用免费版试的话,先去控制台看看现有webhook占了几个。
官方演示怎么跑
官方博客用的客户端是Pi(一个跑在本地的智能体客户端),通过社区扩展pi-mcp-events支持推送接收。步骤照录如下,我没有实测:
- 安装适配器和事件扩展:
pi install npm:pi-mcp-adapter@^5.1.0,再装npm:@realmikekelly/pi-mcp-events@^0.2.0。 - 在
~/.pi/agent/mcp-adapter.json里加入Appwrite MCP服务器,地址是https://mcp.appwrite.io/,认证方式oauth。 - 启动Pi,浏览器弹出时登录Appwrite授权。
- 让Pi订阅某个项目的users.user.created事件,然后结束这一轮,进入等待。
- 在控制台手动建个用户,或者让另一个智能体建。Pi会在一秒左右被唤醒,查出这个用户的名字和邮箱汇报给你。
- 用完让它退订,服务器会关闭连接并删除对应webhook。
演示里建用户的那一方是Codex,监听的一方是Pi。至于Claude Code、Codex CLI、Cursor这些常用客户端什么时候能接收事件,官方文章没说,要看各家自己跟进提案的进度。目前能直接用的客户端很少,这是现实。
适合拿来做什么
官方举的例子是「部署完了告诉我」「checkout函数一失败就去排查」「每来一个新用户就在Slack里欢迎一下」。我想到的几个比较实在的场景:
- 小团队没有值班体系,让智能体盯着关键函数的失败事件,失败了先拉日志、给出初步判断,再通知人。
- 独立开发者发版后不想守着控制台,订阅站点部署完成事件,部署失败时让智能体直接读构建日志。
- 用户上传文件后自动做一次检查,比如图片尺寸、文件类型。
不过要提醒一句:让智能体在没人看的时候自动处理生产事件,权限边界要先想清楚。只读排查可以放手,涉及删数据、回滚部署的动作,最好还是让它先汇报、等人确认。
和以前的做法比
以前要实现类似效果,常见做法是自己写webhook接收服务,再去调用智能体的API,或者用n8n这类自动化工具中转。现在少了中间那层,订阅和退订都能用自然语言让智能体自己完成,也不会在项目里留下孤儿webhook。代价是依赖一个尚未定稿的提案,规范一改,客户端和服务器都要跟着调整。
站内相关
MCP相关旧文:Notion AI通过MCP连接185个应用、NVIDIA App的MCP服务器怎么关;智能体权限边界可以看CERT-In关于AI智能体权限的提醒。工具入口:Appwrite、Supabase、Firebase、PocketBase、Claude Code、Codex CLI、n8n。分类见后端即服务、AI智能体搭建和命令行AI智能体。
来源与核查日期
- Appwrite官方博客:Announcing MCP Events(2026-10-19)
- Appwrite Changelog:Introducing MCP Events(2026-10-19)
核查日期:2026-10-20(新加坡时间)。MCP Events为提案阶段,行为可能随规范调整。