- ✓
暂未采集到具体套餐,价格以官网为准
Keryx
用于 MCP 和 API 的全栈 TypeScript 框架
Keryx 是什么?
Keryx 是一个基于 Bun 构建的全栈 TypeScript 框架,一个 Action 类即可同时作为 HTTP 接口、WebSocket 处理器、CLI 命令、后台任务和 MCP 工具,复用同一套逻辑、验证、中间件和响应类型。内置 MCP 和 OAuth 2.1 支持,让 TypeScript 开发体验更加统一高效。
产品详细介绍
用于 MCP 和 API 的全栈 TypeScript 框架
Keryx 是一个基于 Bun 构建的全栈 TypeScript 框架,一个 Action 类即可同时作为 HTTP 接口、WebSocket 处理器、CLI 命令、后台任务和 MCP 工具,复用同一套逻辑、验证、中间件和响应类型。内置 MCP 和 OAuth 2.1 支持,让 TypeScript 开发体验更加统一高效。
定价方案
需要付费创始人评论
大家好!我是 Evan,Keryx 的作者。
如果你在过去一年里开发过 MCP 服务器,你可能已经注意到你需要写两遍 API。你的 REST 端点有 Zod schema、认证中间件、错误处理、日志。然后你又要写一个平行的 MCP 服务器,重新声明所有这些内容,只是形状略有不同,认证模型不同,返回错误的方式也不同。两者会逐渐偏离。Bug 只会在其中一个出现。这和十年前 REST 与 WebSocket 遇到的重复问题一模一样。
Keryx 就是我想要的框架。你写一个 action 类,它就会自动成为你的 HTTP 端点、WebSocket 处理器、CLI 命令、后台任务和 MCP 工具。使用相同的 Zod 输入、相同的中间件链、相同的响应格式。唯一改变的是请求的到达方式。
export class UserCreate implements Action {
name = "user:create";
inputs = z.object({ name: z.string().min(3), email: z.string().email() });
web = { route: "/user", method: HTTP_METHOD.PUT };
task = { queue: "default" };
async run(params) { return { user: await createUser(params) }; }
}
这个类现在既是 `PUT /api/user` 端点,也是 WebSocket action、带有从 schema 自动生成的 `--name` 和 `--email` 参数的 CLI 命令、Resque 支持的后台任务,以及支持 OAuth 2.1 的 MCP 工具。
底层技术栈:Bun 运行时(原生 TS,无需构建步骤,快速测试运行器)、Zod 验证、Drizzle 数据库(自动迁移)、Resque 任务队列,以及带有端到端类型化响应的 Vite + React 示例前端(通过 `ActionResponse`)。官方插件包括 OpenTelemetry 链路追踪和 Resque 管理界面,都在同一仓库中。
快速开始:
bunx keryx new my-app
cd my-app && bun install && bun dev
目前版本还在 1.0 之前,但已经足够成熟可以分享了。我正在生产环境中使用它,keryxjs.com 上的文档已经完善,示例应用是一个可正常运行的聊天应用,包含频道、文件、会话,以及接好的 React 前端。(给 Node.js 老兵:这是 ActionHero 的精神继承者,在 Bun 上从零重写,将 MCP 作为一等公民的传输层。)
欢迎在评论区提问,尤其是想听听有“写两遍 MCP”困扰的朋友们的想法。
- Evan(
@evantahler
)
upvotes
创始团队
官网信息
用于 MCP 和 API 的全栈 TypeScript 框架 — 控制器只需编写一次,即可在任何地方运行(HTTP、WebSocket、CLI、后台任务和 MCP 工具)。