# Keryx > > The Fullstack TypeScript Framework for MCP and APIs One action class. Five transports. Your API is automatically an MCP server for AI agents, a WebSocket handler, a CLI tool, and a background task runner. Built on Bun, powered by Zod. For the complete documentation in a single file, see [llms-full.txt](/llms-full.txt). ## Table of Contents ### Introduction - [Getting Started](https://keryxjs.com/guide.md): Get up and running with Keryx — prerequisites, installation, and your first dev server. - [About Keryx](https://keryxjs.com/guide/about.md): Etymology of the name, why Keryx treats MCP as a first-class transport, brand assets, and community links. - [Coming from ActionHero](https://keryxjs.com/guide/from-actionhero.md): Migration guide from ActionHero — unified action/task controllers, route-on-action, Drizzle ORM replacing Sequelize, MCP as a transport, and removed features. - [Framework Comparisons](https://keryxjs.com/guide/comparisons.md): How Keryx compares to Hono, Elysia, NestJS, FastAPI, and Django across transports, type safety, and MCP support. ### Core Concepts - [Actions](https://keryxjs.com/guide/actions.md): How to write actions — inputs, validation, web routes, task scheduling, middleware, MCP exposure, tracing opt-out, and type helpers. - [Initializers](https://keryxjs.com/guide/initializers.md): Initializers are lifecycle components that set up services and attach them to the global API singleton. - [Middleware](https://keryxjs.com/guide/middleware.md): Middleware intercepts action execution for authentication, authorization, logging, and response modification. - [Channels](https://keryxjs.com/guide/channels.md): Channels define PubSub topics for real-time WebSocket messaging with middleware-based authorization. - [Background Tasks](https://keryxjs.com/guide/tasks.md): Background tasks with Resque workers and the fan-out pattern for distributing work across child jobs. - [Configuration](https://keryxjs.com/guide/config.md): Modular configuration with per-environment overrides via environment variables. ### Transports & Clients - [Streaming](https://keryxjs.com/guide/streaming.md): Return streaming responses from actions — Server-Sent Events for real-time data and chunked binary for file downloads over HTTP. - [CLI](https://keryxjs.com/guide/cli.md): CLI commands for scaffolding projects, generating components, running your Keryx server, and invoking actions from the terminal. - [MCP Server](https://keryxjs.com/guide/mcp.md): MCP server configuration — how actions become tools, controlling tool exposure, McpActionConfig options, response formats, resources, and prompts. - [MCP Apps](https://keryxjs.com/guide/mcp-apps.md): MCP Apps — render an action's MCP tool result as an interactive HTML UI in the host. Point mcp.ui.client at a browser entrypoint; Keryx bundles it and delivers structured data via UIResponse. - [Building for AI Agents](https://keryxjs.com/guide/agents.md): Getting started with AI agents — why MCP matters, quick-start walkthrough, Claude Desktop configuration, and what Keryx provides out of the box. - [Typed Clients](https://keryxjs.com/guide/typed-clients.md): Type-safe API clients for Keryx — from zero-tooling type imports to generated OpenAPI clients. ### Building Your App - [Authentication](https://keryxjs.com/guide/authentication.md): Session-based authentication with middleware, login/signup actions, and OAuth for MCP clients. - [Caching](https://keryxjs.com/guide/caching.md): Use the built-in Redis connection for caching — cache-aside, helpers, and invalidation patterns. - [Advanced Patterns](https://keryxjs.com/guide/advanced-patterns.md): Production patterns for database transactions, schema introspection, RBAC, audit logging, and middleware composition in Keryx apps. - [Plugins](https://keryxjs.com/guide/plugins.md): Plugins let third-party packages contribute actions, initializers, channels, servers, and config to a Keryx application. ### Going to Production - [Testing](https://keryxjs.com/guide/testing.md): Testing with Bun's built-in test runner — real HTTP requests, no mocking. - [Security](https://keryxjs.com/guide/security.md): Built-in security features — rate limiting, security headers, cookie hardening, CORS, WebSocket protections, and OAuth validation. - [Observability](https://keryxjs.com/guide/observability.md): OpenTelemetry-based metrics for HTTP requests, WebSocket connections, action executions, and background tasks — with a built-in Prometheus scrape endpoint. - [Deployment](https://keryxjs.com/guide/deployment.md): Deploying Keryx — Docker, production builds, reverse proxies, and scaling. ### Contributing - [Docs Style Guide](https://keryxjs.com/guide/style-guide.md): Editorial style guide for Keryx documentation — voice, tone, capitalization, and formatting conventions. ### First-Party Plugins - [Plugins](https://keryxjs.com/plugins.md): First-party plugins maintained by the Keryx team that add opt-in functionality to your application. - [Tracing](https://keryxjs.com/plugins/tracing.md): OpenTelemetry distributed tracing for Keryx — emits OTLP spans for HTTP requests, actions, background tasks, Redis commands, and Drizzle DB queries. - [Sentry](https://keryxjs.com/plugins/sentry.md): Sentry error monitoring and distributed tracing for Keryx — captures action exceptions and emits spans for HTTP, WebSocket, MCP, actions, tasks, Redis, and Postgres. - [Resque Admin](https://keryxjs.com/plugins/resque-admin.md): A web dashboard and API for monitoring Redis, Resque queues, workers, failed jobs, and locks in your Keryx application. - [CSRF](https://keryxjs.com/plugins/csrf.md): CSRF protection middleware that issues per-session tokens and validates them on state-changing requests. - [Admin](https://keryxjs.com/plugins/admin.md): Admin dashboard plugin that browses, filters, and edits any table in your database, with read-only and full roles. ### Reference - [Action](https://keryxjs.com/reference/actions.md): Action class API reference — every property, per-transport behavior (HTTP, WebSocket, CLI, tasks, MCP), type helpers, and raw response passthrough. - [Initializer](https://keryxjs.com/reference/initializers.md): Initializer class definition and the module augmentation pattern. - [Core Classes](https://keryxjs.com/reference/classes.md): API singleton, Connection, Channel, Server, TypedError, and Logger class definitions. - [Servers](https://keryxjs.com/reference/servers.md): Server class and the built-in transports — HTTP, WebSocket, CLI, and MCP via Bun.serve. - [Utilities](https://keryxjs.com/reference/utilities.md): Zod helper utilities — secret() field redaction, zBooleanFromString(), paginationInputs(), paginate() for Drizzle queries, and the zIdOrModel() factory for ID-or-object resolution. - [Configuration](https://keryxjs.com/reference/config.md): Auto-generated configuration reference — every config key, its environment variable, and default value. ### Other - [Changelog](https://keryxjs.com/changelog.md): Release history for Keryx, pulled from GitHub releases.