LaunchFrame MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@LaunchFrame MCP scaffold a new NestJS module for 'orders' following project conventions"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@launchframe/mcp
MCP server that gives AI agents (Claude Code, Cursor, etc.) architectural knowledge about your LaunchFrame project — auth patterns, entity conventions, queue usage, cron jobs, webhooks, and more.
Installation
Running launchframe init automatically configures this MCP server in your project. No manual setup needed.
Related MCP server: Laravel AI MCP Server
What It Does
Instead of bloating CLAUDE.md with rules, agents call tools on demand to pull the exact pattern they need:
Tool | Description |
| Auth system, guard hierarchy, session flow |
| Exact decorator for a given auth need |
| Guard class + import for admin/user/credits |
| How feature gates are stored and queried |
| Copy-paste feature check snippet |
| Decorator + guard for route-level credit deduction |
| Code snippet for programmatic credit addition |
| Overview of free/subscription/credits/hybrid modes |
| Available Bull queues and their purpose |
| Producer injection snippet for a given queue |
| Processor class scaffold for a queue + job name |
| Receipt/processing separation, retry logic |
| Controller + processor scaffold for a provider/event |
| Where crons live, available schedules, rules |
| Cron method scaffold to add to CronService |
| NestJS module folder structure and conventions |
| Full module scaffold (module + service + controller + entity) |
| TypeORM entity conventions and required decorators |
| TypeORM entity file scaffold |
| Centralized |
| Base / Multi-tenant / B2B2C variant differences |
| Full DB schema with tables, columns, types, and common SQL snippets |
| Subscription plans system: plan groups, annual billing, API shape |
| Overall architecture: services, modules, patterns, infrastructure |
| Email system: sending patterns, templates, built-in templates |
| Handlebars template stub for a new transactional email |
| NestJS code to send an email (direct or queued) |
| Start Docker services (detached) |
| Stop all running Docker services |
| Build Docker images (all or specific service) |
| Fetch a snapshot of Docker service logs |
| Destroy ALL Docker resources — irreversible |
| Run all pending TypeORM migrations |
| Create a new empty TypeORM migration file |
| Revert the most recently applied migration |
| Execute a SQL query (local or remote via SSH) |
| List available optional services |
| Install an optional service non-interactively |
| List available optional modules |
| Install a module non-interactively |
| Build production images and push to GHCR |
| Deploy latest images to VPS via SSH |
| Sync plan features to production DB — destructive |
| Start the waitlist service locally |
| Stop the local waitlist service |
| Build and deploy waitlist service to VPS |
| Fetch waitlist service logs from VPS |
| Create a random test user in the local DB |
| Run npm install inside a service via Docker |
| Generate and inject logo/favicon assets |
| Show local service cache info |
| Force-update the local service cache |
| Delete the entire local service cache |
Manual Install
If you prefer a global install:
npm install -g @launchframe/mcpThen in .mcp.json:
{
"mcpServers": {
"launchframe": {
"command": "launchframe-mcp"
}
}
}Available Tools
53 toolsarchitecture_get_overviewA
Get the overall architecture of the LaunchFrame project: services, backend module layout, key patterns, frontend structure, and infrastructure.
Inputs: no named parameters.
auth_get_decorator_usageB
Get the exact decorator and import for a specific auth need.
Inputs: need (required).
auth_get_guard_usageB
Get the guard class, import path, and decorator combo for a specific guard type.
Inputs: guard (required).
auth_get_overviewA
Get full auth system overview: guard hierarchy, session flow, Better Auth setup, roles, and decorator system.
Inputs: no named parameters.
cli_cache_clearA
Delete the entire local LaunchFrame service cache. Services will be re-downloaded on next use.
Inputs: no named parameters.
cli_cache_infoA
Show information about the local LaunchFrame service cache (location, size, cached services, last update time).
Inputs: no named parameters.
cli_cache_updateA
Force-update the local LaunchFrame service cache by re-downloading cached services.
Inputs: no named parameters.
cli_database_queryA
Execute a SQL query and return the results as text.
Workflow:
Call database_schema first to learn table/column names.
Call this tool with a complete, valid SQL statement.
Read the returned text — it is raw psql output (column headers + rows).
Local (default): runs against the Docker Compose database on the developer machine.
→ Requires launchframe docker:up to be running.
Remote (remote=true): SSHs into the VPS and runs against the production database. → Will ask the user for confirmation before executing. → Only use when the user explicitly asks about production/live data.
Supported statements: SELECT, INSERT, UPDATE, DELETE, EXPLAIN, etc. Always end the SQL with a semicolon. Quote identifiers that are reserved words (e.g. "user", "order").
Inputs: projectPath (required), sql (required), remote.
cli_deploy_buildC
Build production Docker images and push to GitHub Container Registry. Optionally build a specific service only.
Inputs: projectPath (required), service.
cli_deploy_sync_featuresA
Sync subscription plan features from the local database to the production database. DESTRUCTIVE: truncates subscription_plan_features on production. Will prompt for confirmation before proceeding.
Inputs: projectPath (required).
cli_deploy_upA
Deploy the latest images to the VPS and restart all production services via SSH.
Inputs: projectPath (required).
cli_dev_add_userA
Create a random test user in the local database. Generates a unique email + bcrypt password hash and inserts via docker exec. Creates a demo project if the project uses multi-tenancy.
Inputs: projectPath (required).
cli_dev_logoA
Generate and inject logo/favicon assets across all frontend services from an SVG file. Defaults to /logo.svg if no path is given.
Inputs: projectPath (required), svgPath.
cli_dev_npm_installA
Run npm install inside a service directory using a node:20-alpine Docker container (matches the build environment). Use this to add packages or update package-lock.json.
Inputs: projectPath (required), service (required), packages.
cli_docker_buildB
Build Docker images for a LaunchFrame project (all services or a specific one).
Inputs: projectPath (required), service.
cli_docker_destroyA
Destroy ALL Docker resources for a LaunchFrame project (containers, volumes, images, network). IRREVERSIBLE — all local data including database volumes will be lost. Will prompt for confirmation before proceeding.
Inputs: projectPath (required).
cli_docker_downB
Stop all running Docker services for a LaunchFrame project.
Inputs: projectPath (required).
cli_docker_logsA
Fetch a snapshot of Docker service logs (non-streaming). Returns the last N lines.
Inputs: projectPath (required), service, tail.
cli_docker_upA
Start Docker services for a LaunchFrame project. Always runs detached (background). Use cli_docker_logs to inspect output afterward.
Inputs: projectPath (required), service.
cli_migration_createB
Create a new empty TypeORM migration file with the given name.
Inputs: projectPath (required), name (required).
cli_migration_revertA
Revert the most recently applied TypeORM database migration.
Inputs: projectPath (required).
cli_migration_runB
Run all pending TypeORM database migrations against the local database.
Inputs: projectPath (required).
cli_module_addA
Install a module into a LaunchFrame project. Runs non-interactively (skips confirmation). Rebuilds affected containers and restarts the stack in detached mode.
Inputs: projectPath (required), name (required).
cli_module_listB
List all available modules that can be added to a LaunchFrame project (e.g., feature-flags, multi-tenancy).
Inputs: projectPath (required).
cli_service_addA
Install an optional service into a LaunchFrame project. Runs non-interactively (skips prompts). Env vars will be empty — configure them manually in infrastructure/.env afterward.
Inputs: projectPath (required), name (required).
cli_service_listA
List all available optional services that can be added to a LaunchFrame project (e.g., waitlist, docs, customers-portal).
Inputs: projectPath (required).
cli_waitlist_deployB
Build and deploy the waitlist service to the VPS via SSH.
Inputs: projectPath (required).
cli_waitlist_downA
Stop the locally running waitlist service.
Inputs: projectPath (required).
cli_waitlist_logsA
Fetch a snapshot of waitlist service logs from the VPS (non-streaming). Returns the last N lines.
Inputs: projectPath (required), tail.
cli_waitlist_upA
Start the waitlist service locally using Docker Compose.
Inputs: projectPath (required).
credits_get_add_patternA
Get the code snippet for programmatically adding credits to a user with a specific transaction type.
Inputs: transactionType (required).
credits_get_deduction_patternB
Get the decorator + guard pattern for deducting credits on a route.
Inputs: no named parameters.
credits_get_monetization_strategiesA
Get an overview of all monetization strategies (free, subscription, credits, hybrid) and when to use each.
Inputs: no named parameters.
cron_get_patternA
Get the LaunchFrame cron job pattern: where jobs live, available CronExpression presets, and module registration rules.
Inputs: no named parameters.
cron_scaffold_jobC
Scaffold a new cron method to add to CronService (src/jobs/cron.service.ts).
Inputs: methodName (required), schedule (required), queueName.
database_schemaA
Returns the full database schema (all tables, columns, types, relations) plus ready-made SQL snippets for common questions like user counts, active sessions, subscription plans, credit balances, etc. Call this before running cli_database_query when the user asks a data question.
Inputs: no named parameters.
email_get_conventionsA
Get an overview of the LaunchFrame email system: sending patterns (direct vs queue-based), template conventions, built-in templates, and environment setup.
Inputs: no named parameters.
email_scaffold_sendA
Generate NestJS code to send a transactional email — either by injecting MailService directly (direct) or via the emails Bull queue (queued).
Inputs: templateName (required), method (required), contextVars (required).
email_scaffold_templateA
Generate a Handlebars (.hbs) template stub for a new LaunchFrame transactional email, following project conventions.
Inputs: templateName (required), contextVars (required).
entity_get_conventionsB
Get TypeORM entity conventions for LaunchFrame: required decorators, naming strategy, column types, relations, and multi-tenancy.
Inputs: no named parameters.
entity_scaffold_typeormB
Generate a TypeORM entity file following LaunchFrame conventions.
Inputs: entityName (required), tableName (required), primaryKeyType, multiTenant, +1 more.
env_get_conventionsA
Get environment variable conventions for LaunchFrame: single centralized .env location, variable naming rules, full key variable reference, and how to add new variables.
Inputs: no named parameters.
feature_gates_get_check_patternA
Get a copy-paste TypeScript snippet for checking a feature gate by code and type.
Inputs: featureCode (required), featureType (required).
feature_gates_get_overviewB
Get the feature gate system overview: how features are stored, how to query them, and the check pattern.
Inputs: no named parameters.
module_get_structureB
Get the NestJS module folder structure, conventions, and rules used in LaunchFrame.
Inputs: no named parameters.
module_scaffold_nestjsB
Generate a NestJS module scaffold (module + service + optional controller + optional entity) following LaunchFrame conventions.
Inputs: moduleName (required), withController, withEntity.
queue_get_namesB
List all available Bull queues in LaunchFrame with their purpose and usage rules.
Inputs: no named parameters.
queue_scaffold_processorC
Get a Bull processor class scaffold for a given queue and job name.
Inputs: queueName (required), jobName (required).
queue_scaffold_producerB
Get the code to inject and use a Bull queue as a producer in a NestJS service.
Inputs: queueName (required).
subscriptions_get_plans_overviewA
Get an overview of the subscription plans system: plan groups, annual billing toggle, API response shape, and key files.
Inputs: no named parameters.
variant_get_overviewA
Get an overview of LaunchFrame project variants: Base (B2B single-tenant), Multi-tenant, and B2B2C. Explains how to read the active variant from the .launchframe file and what behavioral differences to account for when writing new code.
Inputs: no named parameters.
webhook_get_architectureA
Get an overview of the LaunchFrame webhook architecture: receipt/processing separation, WebhookLog entity, Bull queue, and retry cron.
Inputs: no named parameters.
webhook_scaffold_handlerB
Get a scaffold for a new webhook handler: controller receipt + Bull processor for a given provider and event type.
Inputs: provider (required), eventType (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 53 tools
Most tools have distinct purposes, but some overlap exists, such as between cli_cache_clear, cli_cache_update, and cli_database_query (which involves cache considerations). However, descriptions clarify boundaries, and tools are generally well-separated by domain (e.g., auth, cli, database).
Tool names follow a highly consistent pattern: most use a clear domain_prefix_verb_noun structure (e.g., auth_get_overview, cli_cache_clear, database_schema). This predictability makes it easy for an agent to understand the tool's scope and action.
With 53 tools, the count is excessive for a single server, making it overwhelming and difficult to navigate. This many tools suggests the server is trying to cover too many domains (e.g., CLI operations, database, auth, email) without proper scoping, which can lead to confusion and inefficiency.
The tool set provides comprehensive coverage for the LaunchFrame project domain, including CRUD-like operations, scaffolding, system overviews, and lifecycle management across various components (e.g., auth, database, CLI, email). There are no obvious gaps, and tools support end-to-end workflows effectively.
Related MCP Connectors
Project memory, documentation and controlled secret access for AI coding agents.
Serves your design system and coding standards to coding agents, so they stop guessing.
Shared memory for coding agents. Stop re-explaining your codebase every session.
Structured knowledge base for AI agent solutions. Search, explore, and retrieve build logs.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceProvides AI coding agents with access to CleanSlice architecture documentation, rules, and conventions. It enables users to search documentation and retrieve essential patterns to help AI build applications correctly.18MIT
- AlicenseAqualityDmaintenanceProvides AI assistants with direct access to Laravel documentation, coding rules, and implementation templates stored locally. It enables searching documentation, retrieving design system guides, and accessing domain-specific code examples to streamline Laravel development.8MIT
- FlicenseNot gradedqualityDmaintenanceProvides AI agents with structured access to project conventions, technology stacks, and architectural patterns to ensure consistency across development teams.1-
- AlicenseNot gradedqualityBmaintenanceEnables AI coding agents to retrieve precise, real-time architectural context—such as domains, models, routes, and events—from a codebase, avoiding the need to dump entire files into prompts.828 npm1MIT