
Эта страница переведена автоматически. Технические детали смотрите в оригинале. Открыть оригинал
Keryx: Fullstack TypeScript Framework для MCP и API
Обзор
Полный стек TypeScript для MCP и API. Большая идея, стоящая за Keryx: один класс действий обрабатывает HTTP-запросы, сообщения WebSocket, команды CLI, фоновые задачи и вызовы инструментов MCP — одни и те же входные данные, одну и ту же проверку Zod, одно и то же промежуточное ПО, один и тот же ответ. Вы пишете логику один раз; единственное, что меняется, это то, как поступил запрос и как был получен ответ. Этот последний транспорт — MCP — является причиной, по которой я построил это сейчас. Каждое действие автоматически является инструментом MCP, поэтому агенты ИИ аутентифицируются со встроенным OAuth 2.1, получают типизированные ошибки и вызывают те же проверенные конечные точки, что и ваши HTTP-клиенты. Нет второго сервера MCP для обслуживания и нет схем для синхронизации ... вы предоставляете свое приложение агентам, написав приложение. И это настоящий бэкэнд, а не игрушка.
Обзор (машинный перевод)
Полный стек TypeScript для MCP и API.
##Что это за проект?
Основная идея Keryx: «Запиши контроллер один раз, и он будет работать везде». Один класс действий обрабатывает HTTP-запросы, сообщения WebSocket, команды CLI, фоновые задачи и вызовы инструментов MCP — одни и те же входы, одну и ту же проверку Zod, одно и то же промежуточное ПО, один и тот же ответ. Вы пишете логику один раз; единственное, что меняется, это то, как поступил запрос и как был получен ответ.
Этот последний транспорт — MCP — является причиной, по которой я построил это сейчас. Каждое действие автоматически является инструментом MCP, поэтому агенты ИИ аутентифицируются со встроенным OAuth 2.1, получают типизированные ошибки и вызывают те же проверенные конечные точки, что и ваши HTTP-клиенты. Нет второго сервера MCP для обслуживания и нет схем для синхронизации … вы предоставляете свое приложение агентам, написав приложение.
И это настоящий бэкэнд, а не игрушка.
Эта страница переведена автоматически. Технические детали смотрите в оригинале.
README
Показан фрагмент оригинального README. Открыть оригинал.
Keryx
The fullstack TypeScript framework for MCP and APIs.
What is this Project?
The big idea behind Keryx: write your controller once, and it works everywhere. A single action class handles HTTP requests, WebSocket messages, CLI commands, background tasks, and MCP tool calls — same inputs, same Zod validation, same middleware, same response. You write the logic once; the only thing that changes is how the request arrived and how the response gets delivered.
That last transport — MCP — is the reason I built this now. Every action is automatically an MCP tool, so AI agents authenticate with built-in OAuth 2.1, get typed errors, and call the exact same validated endpoints your HTTP clients do. There’s no second MCP server to maintain and no schemas to keep in sync… you expose your app to agents by writing the app.
And it’s a real backend, not a toy. You get Drizzle ORM with auto-migrations, background tasks with fan-out on Resque, streaming responses (SSE, chunked binary, and the same stream over WebSocket and MCP), OpenAPI generation, pagination and caching helpers, database transactions, and a companion Vite + React frontend that reads your actions with end-to-end type safety — no code generation. It’s all on Bun, so TypeScript runs natively and startup is fast.
One Action, Every Transport
Here’s what that looks like in practice. This is one action:
export class UserCreate implements Action {
name = "user:create";
description = "Create a new user";
inputs = z.object({
name: z.string().min(3),
email: z.string().email(),
password: secret(z.string().min(8)),
});
web = { route: "/user", method: HTTP_METHOD.PUT };
task = { queue: "default" };
async run(params: ActionParams) {
const user = await createUser(params);
return { user: serializeUser(user) };
}
}
That one class gives you:
HTTP — PUT /api/user with JSON body, query params, or form data:
curl -X PUT http://localhost:8080/api/user \
-H "Content-Type: application/json" \
-d '{"name":"Evan","email":"[email protected]","password":"secret123"}'
WebSocket — send a JSON message over an open connection:
{ "messageType": "action", "action": "user:create",
"params": { "name": "Evan", "email": "[email protected]", "password": "secret123" } }
CLI — flags are generated from the Zod schema automatically:
./keryx.ts "user:create" --name Evan --email [email protected] --password secret123 -q | jq
Background Task — enqueued to a Resque worker via Redis:
Установка
This server does not publish a one-line install command.
Open the repository installation guide Новичок в MCP? Начните с руководства на mcpskill.org →Конфигурация
{
"mcpServers": {
"my-app": {
"url": "http://localhost:8080/mcp"
}
}
}