The TypeScript way to build MCP servers with decorators, DI, and Streamable HTTP.
Docs • Quickstart • API Reference • Discord
FrontMCP is a TypeScript-first framework for the Model Context Protocol (MCP). You write clean, typed code; FrontMCP handles the protocol, transport, DI, session/auth, and execution flow.
import 'reflect-metadata';
import { FrontMcp, LogLevel } from '@frontmcp/sdk';
import HelloApp from './hello.app';
@FrontMcp({
info: { name: 'Demo', version: '0.1.0' },
apps: [HelloApp],
http: { port: 3000 },
logging: { level: LogLevel.Info },
})
export default class Server {}Node.js 22+ required (24 recommended).
# New project (recommended)
npx frontmcp create my-app
# Existing project
npm i -D frontmcp @types/node@^22
npx frontmcp initFull setup guide: Installation
| Capability | Description | Docs |
|---|---|---|
| @FrontMcp Server | Decorator-configured server with info, apps, HTTP, logging, session, auth | Server |
| @App | Organizational units grouping tools, resources, prompts with optional isolation | Apps |
| @Tool | Typed actions with Zod schemas — class or function style | Tools |
| @Resource | Read-only data exposure with static and template URIs | Resources |
| @Prompt | Reusable message templates returning GetPromptResult |
Prompts |
| @Agent | Orchestrated multi-step tool chains | Agents |
| Elicitation | Request structured user input mid-flow | Elicitation |
| Skills | HTTP-discoverable tool manifests for agent marketplaces | Skills |
| Discovery | Automatic capability advertisement for MCP clients | Discovery |
| Authentication | Remote OAuth, Local OAuth, JWKS, DCR, per-app auth | Authentication |
| Sessions | Stateful/stateless session modes with JWT or UUID transport IDs | Server |
| Direct Client | In-process create(), connect(), connectOpenAI(), connectClaude() |
Direct Client |
| Transport | Streamable HTTP + SSE with session headers | Transport |
| Ext-Apps | Mount external MCP servers as sub-apps | Ext-Apps |
| Hooks | 5 hook families: tool, list-tools, HTTP, resource, prompt | Hooks |
| Providers / DI | Scoped dependency injection with GLOBAL and CONTEXT scopes | Providers |
| Plugins | Cache, Remember, CodeCall, Dashboard — or build your own | Plugins |
| Adapters | Generate tools from OpenAPI specs | Adapters |
| Testing | E2E fixtures, matchers, HTTP mocking for MCP servers | Testing |
| UI Library | HTML/React widgets, SSR, MCP Bridge, web components | UI |
| CLI | create, init, dev, build, inspector, doctor |
CLI |
| Deployment | Local dev, production builds, version alignment | Deployment |
| Package | Description |
|---|---|
@frontmcp/sdk |
Core framework — decorators, DI, flows, transport |
@frontmcp/cli |
CLI tooling (frontmcp create, dev, build) |
@frontmcp/auth |
Authentication, OAuth, JWKS, credential vault |
@frontmcp/adapters |
OpenAPI adapter for auto-generating tools |
@frontmcp/plugins |
Official plugins: Cache, Remember, CodeCall, Dashboard |
@frontmcp/testing |
E2E test framework with fixtures and matchers |
@frontmcp/ui |
React components, hooks, SSR renderers |
@frontmcp/uipack |
React-free themes, build tools, platform adapters |
@frontmcp/di |
Dependency injection container (internal) |
@frontmcp/utils |
Shared utilities — naming, URI, crypto, FS (internal) |
Keep all @frontmcp/* packages on the same version. A clear "version mismatch" error is thrown at boot if versions drift. (Production Build)
PRs welcome! See CONTRIBUTING.md for workflow, coding standards, and the PR checklist.