CLI framework and stdio MCP server for Flutter: scaffolding, hot reload, REPL, codegen.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
One-click editor setup isnβt available for this listing yet β we donβt have a confirmed install command, and weβd rather show nothing than point your editor at the wrong package or host. Follow the projectβs own setup instructions, linked above.
Composable CLI framework and stdio MCP server for Flutter and Dart.
Scaffolding, code generation, transactional plugin installs, hot reload orchestration, REPL, and AI agent tool surfaces in one binary.
Documentation Β· pub.dev Β· Issues
Dart's CLI surface is fragmented. Every package invents its own install ritual, its own scaffold script, its own hand-edited entry point. A team that adopts five tools ends up with five bin/*.dart wrappers, five README install sections, and five chances for a bad merge to silently break the build. AI agents that want to drive the running app reach for ad hoc shell scripts because there is no shared tool surface.
Artisan fixes this. One binary registers every command, one protocol describes every plugin install, and one stdio MCP server exposes the whole stack to AI agents.
If you know php artisan, you already know the verb shape. The implementation is pure Dart 3.4+, no Flutter runtime dependency in the framework core.
| Feature | Description | |
|---|---|---|
| πΌ | Command Registry | ArtisanRegistry collects commands from every registered ArtisanServiceProvider, collision-detected at boot |
| π§° | 22 Built-in Commands | Lifecycle, scaffolding, plugin management, MCP, introspection, codegen, one binary |
| βοΈ | Signature DSL | String get signature => 'cmd:name {arg} {--flag}', Dart 3 record-style parser, ArgParser fallback when needed |
| π€ | MCP Server | Stdio JSON-RPC server built on dart_mcp, exposes substrate and plugin tools to AI agents |
| π³ | Magic-Free Path | install writes a canonical wrapper for plain Flutter and Dart projects, no framework dependency |
| π | Plugin Protocol | install.yaml declarative manifest plus PluginInstaller fluent DSL escape hatch |
| π | Idempotent Installs | Lookahead-anchored regex injection, replace-by-name registry, re-running an install is a safe no-op |
| β©οΈ | Reversible Ops | Every applied operation is recorded under .artisan/installed/<plugin>.json, plugin:uninstall walks it in reverse |
| πͺ | VM Service Hooks | tinker, reload, hot-restart drive the running Flutter VM directly over ext.* extensions |
| π― | Context-Aware Generators | make:command detects plugin vs consumer context, make:plugin upgrades to magic-mode automatically |
| π§ͺ | Testable Primitives | VirtualFs plus InMemoryFs, InstallContext.test, ArtisanContext.bare, BufferedOutput capture |
install writes bin/dispatcher.dart (the consumer entry that calls runArtisan(...)) plus barrels (lib/app/_plugins.g.dart, lib/app/commands/_index.g.dart), then auto-chains make:fast-cli so bin/fsa is ready immediately. Re-running is idempotent, pass --force to overwrite.
After scaffold, run any built-in command via the consumer wrapper:
Plugins ship either an install.yaml manifest (declarative, walked by ManifestInstaller) or a procedural ArtisanInstallCommand subclass that drives PluginInstaller directly. Either way, the registry records every applied operation so a future plugin:uninstall can reverse them safely.
Plugin commands surface automatically. After installing fluttersdk_dusk, dart run artisan list shows the new dusk:* entries under their own namespace section.
mcp:install writes (or updates) the mcpServers.fluttersdk entry in .mcp.json. After install, reconnect the MCP client once (for Claude Code: /mcp reconnect fluttersdk). The server boots in stdio JSON-RPC mode and exposes 10 substrate tools (artisan_start, artisan_stop, artisan_status, artisan_logs, artisan_restart, artisan_reload, artisan_hot_restart, artisan_doctor, artisan_list, artisan_tinker) plus any plugin-contributed tools.
Read the full setup walkthrough at MCP setup guide.
Artisan ships 22 built-in commands across 6 namespaces. Every command is a final class X extends ArtisanCommand with a signature string and a handle() method.
| Namespace | Count | Commands |
|---|---|---|
| Lifecycle | 7 | start, stop, status, logs, restart, reload, hot-restart |
| Scaffolding | 4 | make:plugin, make:command, make:fast-cli, install |
| Plugin Management | 3 | plugin:install, plugin:uninstall, plugins:refresh |
| MCP | 3 | mcp:serve, mcp:install, mcp:uninstall |
| Introspection | 4 | help, list, doctor, tinker |
| Codegen | 1 | commands:refresh |
Highlights:
Full command catalog and per-command flag reference at commands catalog.
make:command scaffolds a final class extending ArtisanCommand and auto-registers it in the nearest service provider. The signature DSL parses arguments and flags from one string, the handle() method receives a typed ArtisanContext:
For cases the signature DSL cannot express (positional rest, mutually exclusive flag groups), override void configure(ArgParser parser) and read from context.input.results directly. Signature DSL grammar at signature DSL reference.
Artisan plugins declare their install footprint in install.yaml, a declarative manifest walked by ManifestInstaller. The manifest supports publish (files to copy), magic.provider plus magic.configFactory plus magic.routes (framework wiring), native.android (permissions, metaData, gradle plugins, gradle dependencies), native.ios and native.macos (plist entries, pod entries), native.web (head injections, meta tags), env (environment variable declarations with defaults), prompts (interactive install prompts), placeholders (token resolution from prompt answers), and bootstrap_command (post-install hint). Schema reference at install.yaml schema.
A minimal install.yaml looks like this:
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/fluttersdk-artisan)<a href="https://allmcps.com/mcp/fluttersdk-artisan"><img src="https://allmcps.com/api/badge/fluttersdk-artisan?style=directory" alt="FlutterSDK Artisan on AllMCPs" /></a>