# 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. ### Core Concepts - [Actions](https://keryxjs.com/guide/actions.md): How to write actions — inputs, validation, web routes, task scheduling, middleware, MCP exposure, and type helpers. - [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. - [Initializers](https://keryxjs.com/guide/initializers.md): Initializers are lifecycle components that set up services and attach them to the global API singleton. - [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. - [Middleware](https://keryxjs.com/guide/middleware.md): Middleware intercepts action execution for authentication, authorization, logging, and response modification. - [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. - [Configuration](https://keryxjs.com/guide/config.md): Modular configuration with per-environment overrides via environment variables. - [Plugins](https://keryxjs.com/guide/plugins.md): Plugins let third-party packages contribute actions, initializers, channels, servers, and config to a Keryx application. ### Usage - [CLI](https://keryxjs.com/guide/cli.md): CLI commands for scaffolding projects, generating components, running your Keryx server, and invoking actions from the terminal. - [Authentication](https://keryxjs.com/guide/authentication.md): Session-based authentication with middleware, login/signup actions, and OAuth for MCP clients. - [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 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. - [Caching](https://keryxjs.com/guide/caching.md): Use the built-in Redis connection for caching — cache-aside, helpers, and invalidation patterns. - [Security](https://keryxjs.com/guide/security.md): Built-in security features — rate limiting, security headers, cookie hardening, CORS, WebSocket protections, and OAuth validation. - [Advanced Patterns](https://keryxjs.com/guide/advanced-patterns.md): Production patterns for database transactions, RBAC, audit logging, and middleware composition in Keryx apps. - [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. - [Testing](https://keryxjs.com/guide/testing.md): Testing with Bun's built-in test runner — real HTTP requests, no mocking. - [Deployment](https://keryxjs.com/guide/deployment.md): Deploying Keryx — Docker, production builds, reverse proxies, and scaling. ### Migration - [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. ### Comparisons - [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. ### 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. - [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. ### Classes - [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. - [Other Classes](https://keryxjs.com/reference/classes.md): API singleton, Connection, Channel, Server, TypedError, and Logger class definitions. ### Transports - [Servers](https://keryxjs.com/reference/servers.md): Server class and the built-in transports — HTTP, WebSocket, CLI, and MCP via Bun.serve. ### Utilities - [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 - [Configuration Reference](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.