Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.agentfront.dev/llms.txt

Use this file to discover all available pages before exploring further.

FrontMCP servers are composed of one or more apps. Each @App is an isolated container with its own tools, resources, prompts, providers, and authentication — composed together under a single @FrontMcp server.

Composing Apps

@FrontMcp({
  info: { name: 'Platform Server', version: '1.0.0' },
  apps: [CrmApp, AnalyticsApp, AdminApp],
})
export default class Server {}
Each app defines its own capabilities:
@App({
  id: 'crm',
  name: 'CRM',
  tools: [CreateLeadTool, GetContactsTool],
  resources: [LeadResource],
  providers: [CrmDatabaseProvider],
})
class CrmApp {}

@App({
  id: 'analytics',
  name: 'Analytics',
  tools: [RunReportTool, ExportDataTool],
  providers: [AnalyticsDatabaseProvider],
})
class AnalyticsApp {}

@App({
  id: 'admin',
  name: 'Admin',
  tools: [ManageUsersTool],
})
class AdminApp {}

What Each App Gets

FeatureScope
Tools, Resources, PromptsRegistered under the app’s namespace
ProvidersIsolated to the app (server-level providers are shared)
AuthenticationPer-app auth configuration
SkillsRegistered and searchable within the app
PluginsCan be app-specific or server-wide

Shared vs Isolated Providers

// Server-level: shared across all apps
@FrontMcp({
  providers: [SharedCacheProvider, LoggingProvider],
  apps: [CrmApp, AnalyticsApp],
})
class Server {}

// App-level: isolated to CRM only
@App({
  id: 'crm',
  providers: [CrmDatabaseProvider],
  tools: [CreateLeadTool],
})
class CrmApp {}
Tools in CrmApp can access both SharedCacheProvider and CrmDatabaseProvider, while tools in AnalyticsApp can only access SharedCacheProvider.

ESM Package Apps

You can also compose apps from npm packages or remote MCP servers at runtime via App.esm() and App.remote():
import { FrontMcp, App } from '@frontmcp/sdk';

@FrontMcp({
  info: { name: 'Platform', version: '1.0.0' },
  apps: [
    CrmApp,                                         // Local app
    App.esm('@acme/analytics@^2.0.0'),              // ESM package
    App.remote('https://ext.example.com/mcp'),      // Remote app
  ],
})
export default class Server {}
ESM packages get their own tool, resource, and prompt registries with full hook and lifecycle support, but do not support plugins or adapters (use local @App classes for those).

Learn More

Apps

Full guide to @App configuration and capabilities

Server

Server-level composition and configuration

ESM Packages

Load npm packages at runtime as MCP apps