libs/skills/catalog/frontmcp-config/SKILL.md
Use when you want to configure auth, set up CORS, add rate limiting, throttle requests, manage sessions, choose transport, set HTTP options, add authentication, configure JWT, or set up OAuth. The skill for server CONFIGURATION.
npx skillsauth add agentfront/frontmcp frontmcp-configInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Entry point for configuring FrontMCP servers. This skill helps you find the right configuration reference (under references/) based on what aspect of your server you need to set up.
configure-transport, configure-auth, etc.)frontmcp-development)frontmcp-deployment)Decision: Use this skill when you need to figure out WHAT to configure. Open the matching reference under
references/directly when you already know.
frontmcp create (see frontmcp-setup)references/configure-transport.md, references/configure-auth.md) for detailed instructions@FrontMcp or @App decorator| Scenario | Reference | Description |
| -------------------------------------------------------------- | -------------------------------------- | ------------------------------------------------------------------- |
| Choose between SSE, Streamable HTTP, or stdio | configure-transport | Transport protocol selection with distributed session options |
| Set up CORS, port, base path, or request limits | configure-http | HTTP server options for Streamable HTTP and SSE transports |
| Add rate limiting, concurrency, or IP filtering | configure-throttle | Server-level and per-tool throttle configuration |
| Enable tools to ask users for input | configure-elicitation | Elicitation schemas, stores, and multi-step flows |
| Set up authentication (public, transparent, local, remote) | configure-auth | OAuth flows, credential vault, multi-app auth |
| Configure session storage backends | configure-session | Memory, Redis, Vercel KV, and custom session stores |
| Add Redis for production storage | setup-redis | Docker Redis, Vercel KV, pub/sub for distributed subscriptions |
| Add SQLite for local development | setup-sqlite | SQLite with WAL mode, migration helpers |
| Understand auth mode details (public/transparent/local/remote) | configure-auth-modes | Authentication mode details (public, transparent, local, remote) |
| Fine-tune guard configuration for throttling | configure-throttle-guard-config | Advanced guard configuration for throttling |
| Use transport protocol presets | configure-transport-protocol-presets | Transport protocol preset configurations |
| Configure multi-target deployments and frontmcp.config.ts | configure-deployment-targets | Typed config with defineConfig(), 9 deployment targets, JSON schema |
| Add CSP, HSTS, X-Frame-Options, and other security headers | configure-security-headers | CSP directives, report-only mode, HSTS preload, custom headers |
| Configure skills HTTP, instructions injection, or audit log | configure-skills-http | Full skillsConfig reference: auth, cache, instructions, audit log |
| Split apps into separate scopes (splitByApp) | decorators-guide | Per-app scope and basePath isolation on @FrontMcp |
| Enable widget-to-host communication (ext-apps) | decorators-guide | extApps host capabilities, session validation, widget comms |
| Enable background jobs and workflows | decorators-guide | jobs: { enabled: true, store? } on @FrontMcp |
| Configure pagination for list operations | decorators-guide | pagination defaults for tools/list endpoint |
| Configure npm/ESM package loader for remote apps | decorators-guide | loader config for App.esm() / App.remote() resolution |
FrontMCP configuration cascades through three layers:
Server (@FrontMcp) ← Global defaults
└── App (@App) ← App-level overrides
└── Tool (@Tool) ← Per-tool overrides
| Setting | Server (@FrontMcp) | App (@App) | Tool (@Tool) |
| --------------------- | -------------------------------- | --------------------- | ------------------------------------------- |
| Transport | Yes | No | No |
| HTTP (CORS, port) | Yes | No | No |
| Throttle (rate limit) | Yes (throttle global defaults) | No | Yes (rateLimit, concurrency, timeout) |
| Auth mode | Yes | Yes (override) | No |
| Auth providers | No | Yes (authProviders) | Yes (authProviders) |
| Session store | Yes | No | No |
| Elicitation | Yes (enable: elicitation) | No | Yes (usage: this.elicit()) |
| ExtApps | Yes | No | No |
| Jobs / Workflows | Yes (jobs: { enabled }) | No | No |
| Pagination | Yes | No | No |
| SplitByApp | Yes | No | No |
| Pattern | Rule |
| ------------------- | ------------------------------------------------------------------------------------------------- |
| Auth + session | Auth mode determines session requirements: remote needs Redis/KV; public can use memory |
| Transport + storage | Stateless transports (serverless) require distributed storage; stateful (Node) can use in-process |
| Throttle scope | Server-level throttle applies to all tools; per-tool throttle overrides for specific tools |
| Environment config | Use environment variables for all secrets (API keys, Redis URLs, OAuth credentials) |
| Config validation | FrontMCP validates config at startup; invalid config throws before the server starts |
| Pattern | Correct | Incorrect | Why |
| -------------------- | -------------------------------------------------------------------------------------- | ------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------- |
| Auth mode for dev | auth: { mode: 'public' } or auth: { mode: 'transparent', provider: '...' } locally | auth: { mode: 'remote', ... } with real OAuth in dev | Remote auth requires a running OAuth provider; public/transparent are simpler for local dev |
| Session store | Redis for production, memory for development | Memory for production | Memory sessions are lost on restart and don't work across serverless invocations |
| Rate limit placement | Server-level for global limits, per-tool for expensive operations | Only server-level | Some tools are cheap (list) and some are expensive (generate); per-tool limits prevent abuse of expensive tools |
| CORS config | Explicit allowed origins in production | cors: { origin: '*' } in production | Wildcard CORS allows any origin to call your server |
| Config secrets | process.env.REDIS_URL via environment variable | Hardcoded redis://localhost:6379 in source | Hardcoded secrets leak to git and break in different environments |
| Problem | Cause | Solution |
| --------------------------------------- | ------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------- |
| Server fails to start with config error | Invalid or missing required config field | Check the error message; FrontMCP validates config at startup and reports the specific invalid field |
| CORS blocked in browser | Missing or incorrect CORS origin config | Add the client's origin to http.cors.origin; see configure-http |
| Rate limit too aggressive | Global limit applied to all tools | Add per-tool overrides for cheap tools with higher limits; see configure-throttle |
| Sessions lost on serverless | Using memory session store on stateless platform | Switch to Redis or Vercel KV; see configure-session |
| Auth callback fails | OAuth redirect URI mismatch | Ensure the redirect URI registered with your OAuth provider matches the server's /oauth/callback endpoint; see configure-auth |
Each reference has matching examples under examples/<reference>/:
configure-auth-modes| Example | Level | Description |
| --------------------------------------------------------------------------------------------- | ------------ | ------------------------------------------------------------------------------------------- |
| local-self-signed-tokens | Intermediate | Configure a server that signs its own JWT tokens with consent and incremental auth enabled. |
| remote-enterprise-oauth | Advanced | Proxy auth to one mandatory upstream IdP, mint a FrontMCP session, read the upstream token. |
| transparent-jwt-validation | Basic | Validate externally-issued JWTs without managing token lifecycle on the server. |
configure-auth| Example | Level | Description |
| --------------------------------------------------------------------------------- | ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| multi-app-auth | Advanced | Configure a single FrontMCP server with multiple apps, each using a different auth mode -- public for open endpoints and remote for admin endpoints. |
| public-mode-setup | Basic | Set up a FrontMCP server with public (unauthenticated) access and anonymous scopes. |
| remote-oauth-with-vault | Intermediate | Configure a FrontMCP server with remote OAuth 2.1 authentication and use the credential vault to call downstream APIs on behalf of the authenticated user. |
configure-elicitation| Example | Level | Description |
| ---------------------------------------------------------------------------------------------------- | ------------ | ----------------------------------------------------------------------------------- |
| basic-confirmation-gate | Basic | Request user confirmation before executing a destructive action. |
| distributed-elicitation-redis | Intermediate | Configure elicitation with Redis storage for multi-instance production deployments. |
configure-http| Example | Level | Description |
| ----------------------------------------------------------------------------------- | ------------ | ------------------------------------------------------------------------------------ |
| cors-restricted-origins | Basic | Configure CORS to allow only specific frontend origins with credentials. |
| entry-path-reverse-proxy | Intermediate | Mount the MCP server under a URL prefix for reverse proxy or multi-service setups. |
| unix-socket-local | Intermediate | Bind the server to a unix socket instead of a TCP port for local-only communication. |
configure-session| Example | Level | Description |
| ------------------------------------------------------------------------------------ | ------------ | -------------------------------------------------------------------------------- |
| multi-server-key-prefix | Intermediate | Use unique key prefixes when multiple FrontMCP servers share one Redis instance. |
| redis-session-store | Basic | Configure Redis-backed session storage for production deployments. |
| vercel-kv-session | Intermediate | Configure Vercel KV for session storage in serverless Vercel deployments. |
configure-throttle-guard-config| Example | Level | Description |
| -------------------------------------------------------------------------------------------- | -------- | ------------------------------------------------------------------------ |
| full-guard-config | Advanced | Complete GuardConfig using every available field for maximum protection. |
| minimal-guard-config | Basic | Enable throttle with just a global rate limit and default timeout. |
configure-throttle| Example | Level | Description |
| ------------------------------------------------------------------------------------------- | ------------ | ------------------------------------------------------------------------------------------- |
| distributed-redis-throttle | Advanced | Configure Redis-backed rate limiting for multi-instance deployments behind a load balancer. |
| per-tool-rate-limit | Intermediate | Override server defaults with per-tool rate limits and concurrency caps. |
| server-level-rate-limit | Basic | Configure global rate limits and IP filtering at the server level. |
configure-transport-protocol-presets| Example | Level | Description |
| --------------------------------------------------------------------------------------------------------- | ------------ | ----------------------------------------------------------------------------- |
| legacy-preset-nodejs | Basic | Use the default legacy preset for maximum compatibility with all MCP clients. |
| stateless-api-serverless | Intermediate | Use the stateless-api preset for Vercel, Lambda, or Cloudflare Workers. |
configure-transport| Example | Level | Description |
| -------------------------------------------------------------------------------------------- | ------------ | ---------------------------------------------------------------------------------------- |
| custom-protocol-flags | Advanced | Override individual protocol flags instead of using a preset for fine-grained control. |
| distributed-sessions-redis | Intermediate | Configure transport with Redis persistence for multi-instance load-balanced deployments. |
| stateless-serverless | Basic | Configure stateless transport for Vercel, Lambda, or Cloudflare deployments. |
configure-deployment-targets| Example | Level | Description |
| ----------------------------------------------------------------------------------------------------- | ------------ | -------------------------------------------------------------------------------------------------------------------------------- |
| multi-target-with-security | Intermediate | Configure a FrontMCP project with node + distributed targets, CSP headers, and HSTS |
| distributed-ha-config | Advanced | Configure a distributed deployment target with HA settings for heartbeat, session takeover, and Redis-backed session persistence |
| json-schema-ide-support | Basic | Use frontmcp.config.json with JSON Schema for VS Code and WebStorm autocomplete |
configure-security-headers| Example | Level | Description |
| --------------------------------------------------------------------------------------------- | ------------ | ---------------------------------------------------------------------------------------------------------------------- |
| csp-report-only | Basic | Test CSP policies in report-only mode to identify violations before enforcement |
| full-production-headers | Intermediate | Complete security headers configuration for production with CSP enforcement, HSTS preload, and clickjacking protection |
Skills are distributed as plain SKILL.md files plus a sibling references/
and examples/ tree, so consumers can pick whichever access mode fits:
| Mode | How it works |
| ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Filesystem | Read libs/skills/catalog/frontmcp-config/ directly from a clone of the catalog repo, or from a published @frontmcp/skills install. SKILL.md is the entry point. |
| frontmcp CLI | frontmcp skills list, frontmcp skills read frontmcp-config, frontmcp skills read frontmcp-config:references/<file>.md, frontmcp skills install frontmcp-config — no server required. |
| MCP skill:// | When a developer mounts this skill into their own FrontMCP server (@FrontMcp({ skills: [...] })), the SDK exposes it via SEP-2640 resources: skill://frontmcp-config/SKILL.md, skill://frontmcp-config/references/{file}.md, etc. The server’s skill://index.json returns the SEP-2640 discovery document for everything mounted on it. |
The catalog itself is not an MCP server. The skill:// URIs only resolve
when a server has been configured to host this skill.
configure-transport, configure-http, configure-throttle, configure-elicitation, configure-auth, configure-session, setup-redis, setup-sqlitetools
ALWAYS use this skill when the user asks to build, modify, or audit a FrontMCP tool. Covers everything inside `@Tool({...})`: class and function-style tools, Zod input/output schemas with derived `execute()` types, dependency injection (`this.get` / `this.tryGet`), error handling (`this.fail`, MCP error classes), throttling (rate-limit / concurrency / timeout), auth providers (single / multi / vault), availability constraints (`availableWhen`), elicitation (`this.elicit`), interactive UI widgets via `@Tool({ ui })` (MCP Apps / SEP-1865 — including `.tsx` FileSource, CSP, `window.FrontMcpBridge`, host-detect `resourceMode`), annotations (`readOnlyHint` / `destructiveHint` / …), `examples` metadata, registration in `@App({ tools })`, and per-tool unit testing. Does NOT cover: - Read-only data exposed via a URI — use `create-resource` - Conversation templates / system prompts — use `create-prompt` - Multi-tool orchestration loops — use `create-agent` - Background work / pipelines — use `create-job` / `create-workflow` - Server-level config (transport, sessions, auth modes) — use `config` / `auth` Triggers: `@Tool`, ToolContext, tool decorator, MCP tool, snake_case tool name, inputSchema, outputSchema, ToolInputOf, ToolOutputOf, `@Tool({ ui })`, tool UI widget, MCP Apps widget, FileSource widget, `.tsx` widget, ui.csp, ui.resourceMode, window.FrontMcpBridge, tool annotations, readOnlyHint, destructiveHint, rate-limit tool, throttle tool, concurrency tool, tool timeout, this.fail, this.respond, this.fetch, this.notify, this.progress, this.elicit, ElicitationDisabledError, ToolContext.execute, this.get(TOKEN), this.tryGet, register tool in @App, tool examples metadata, availableWhen, missingAxes, `tool()` function builder, Tool.esm, Tool.remote, PublicMcpError, ResourceNotFoundError, MCP_ERROR_CODES, ui://widget.
tools
Use when you want to add tracing, structured logging, or monitoring to your FrontMCP server. Covers OpenTelemetry instrumentation, vendor integrations (Coralogix, Datadog, Logz.io, Grafana), this.telemetry API for custom spans, structured JSON logging with sinks, and testing observability. Triggers: observability, telemetry, tracing, logging, monitoring, opentelemetry, otel, spans, datadog, coralogix, logz, grafana, winston, pino.
development
Use when implementing authorization, access control, RBAC, ABAC, or ReBAC for tools, resources, prompts, or skills. Covers JWT claims mapping, authority profiles, and policy enforcement.
testing
Use when you want to write tests, run tests, add e2e tests, improve test coverage, test a tool, test a resource, or learn how to test any FrontMCP component. The skill for ALL testing needs.