Skip to main content
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.

Learn More

Apps

Full guide to @App configuration and capabilities

Server

Server-level composition and configuration