Fables MCP Server
An MCP server that provides AI agents with tools to build, deploy, and manage Flutter applications, including APK/AAB generation, keystore management, and CI/CD integration.
README
<div align="center">
███████╗ █████╗ ██████╗ ██╗ ███████╗███████╗
██╔════╝██╔══██╗██╔══██╗██║ ██╔════╝██╔════╝
█████╗ ███████║██████╔╝██║ █████╗ ███████╗
██╔══╝ ██╔══██║██╔══██╗██║ ██╔══╝ ╚════██║
██║ ██║ ██║██████╔╝███████╗███████╗███████║
╚═╝ ╚═╝ ╚═╝╚═════╝ ╚══════╝╚══════╝╚══════╝
📖 Fables
Turn Flutter apps into legendary builds.
Build APK, AAB & iOS — no Android Studio required. ✨
Installation · Quick Start · Commands · AI Agents · CI/CD · Guide
</div>
📖 Table of Contents
- Why Fables?
- Features
- Installation
- Quick Start
- Commands
- Comprehensive Guide
- AI Agent Integration
- Supported Agents
- OpenClaw
- Claude Code
- Cursor
- VS Code / GitHub Copilot
- Windsurf (Codeium)
- Cline
- Continue.dev
- Aider
- Zed Editor
- JetBrains IDEs
- LangChain
- CrewAI
- AutoGen (Microsoft)
- Semantic Kernel
- LlamaIndex
- Haystack (deepset)
- OpenAI Agents SDK
- Google ADK
- Amazon Bedrock
- n8n
- Dify
- Coze (ByteDance)
- FastGPT
- Flowise
- Generic MCP Client
- MCP Protocol Reference
- MCP Tools Reference
- CI/CD Integration
- Docker Support
- Configuration Reference
- Project Structure
- Testing
- Contributing
- License
🤔 Why Fables?
Setting up Flutter for Android builds is a nightmare:
| Without Fables ❌ | With Fables ✅ |
|---|---|
| 📥 Install Android Studio (~2GB) | 📦 npm install -g fables |
| 📥 Install Android SDK separately | 🐳 Auto-managed via Docker |
| 📥 Install Java/JDK | ✅ Included |
| 🔧 Configure PATH variables | ✅ Zero config |
| 😭 Pray nothing conflicts | 🚀 Just works |
| 🤖 No AI agent support | 🔌 26 agents supported |
| 📝 Manual CI/CD setup | 🔧 One-command CI generation |
| 🎨 Manual icon/splash creation | 🎨 Auto-generate everything |
Fables is a single CLI that replaces Android Studio, manages your SDK, handles signing, generates icons, creates CI/CD pipelines, and integrates with every major AI agent — all from your terminal.
✨ Features
Core 🏗️
- 🚀 Build APK, AAB, Split APKs — no Android Studio
- 🍎 iOS builds — IPA generation on macOS
- 🐳 Docker-powered SDK — auto-manages Android SDK
- 🔐 Keystore management — generate & manage signing keys
- 🔒 Code obfuscation — protect your app (on by default)
- ⚡ Build flavors — dev, staging, production
- 📊 Beautiful CLI — gradient ASCII art, book-themed spinners
Assets & Resources 🎨
- 🖼️ App icon generator — one 1024x1024 image → all platforms
- 🌊 Splash screen generator — Android + iOS launch screens
- 📦 Asset optimization — size analysis & recommendations
Quality & Analysis 📊
- 📏 APK/AAB size analysis — with optimization tips
- 📋 Permission manager — list, add, remove, auto-suggest
- 📄 Manifest viewer — AndroidManifest.xml inspection
- 🛡️ ProGuard helper — rule templates & validation
- 🧪 Test runner — beautiful Flutter test output
Developer Experience 💻
- 📱 Device deployment — install APK via ADB
- 🖥️ Emulator management — create, list, launch emulators
- 📜 Log viewer — colorized, filtered device logs
- 🔄 Version bumping — sync pubspec + Android + iOS
- 📝 Changelog generation — from git history
- 🌍 i18n support — localization setup & string extraction
- 📦 Dependency auditor — security & update checks
- 🔐 Secrets manager — per-environment .env files
AI Agent Integration 🤖
- 🔌 MCP Protocol — Model Context Protocol server
- 🤖 26 supported agents — Claude, Cursor, LangChain, CrewAI, and more
- 📡 stdio & HTTP transports — for CLI and remote agents
- 🛠️ 19 MCP tools — every Fables command as an AI tool
CI/CD 🔧
- 🐙 GitHub Actions — one-command workflow generation
- 🦊 GitLab CI — Docker-based pipeline
- ⭕ CircleCI — multi-stage builds
- 🔵 Bitbucket Pipelines — ready-to-push config
📦 Installation
Prerequisites
Install Fables
# Install globally (recommended)
npm install -g fables
# Or use with npx (no install)
npx fables --help
Verify Installation
fables --version
# → 0.1.0
fables doctor
# → Checks Flutter, SDK, Docker, Xcode, Java
🚀 Quick Start
# 1. Navigate to your Flutter project
cd my_flutter_app
# 2. Initialize Fables
fables init
# 3. Check your environment
fables doctor
# 4. Build your app!
fables build --target apk
# 5. Deploy to device
fables deploy build/fables/app-release.apk
That's it. No Android Studio. No SDK configuration. Just Fables. 📖✨
📖 Commands
Core Commands
| Command | Description |
|---|---|
fables init 🏗️ |
Initialize Fables in your Flutter project |
fables doctor 🔍 |
Check your build environment |
fables config ⚙️ |
View/edit Fables configuration |
fables clean 🧹 |
Clean build artifacts & caches |
Build & Deploy
| Command | Description |
|---|---|
fables build 🚀 |
Build APK, AAB, Split APKs, or iOS IPA |
fables deploy 📱 |
Deploy APK to connected device via ADB |
fables run 📱 |
Run app on device/emulator with hot reload |
Device & Testing
| Command | Description |
|---|---|
fables emulator 🖥️ |
Create, list, launch Android emulators |
fables logs 📜 |
View device logs with smart filtering |
fables test 🧪 |
Run Flutter tests with beautiful output |
Assets & Resources
| Command | Description |
|---|---|
fables icon 🎨 |
Generate app icons from a single image |
fables splash 🌊 |
Generate splash screen assets |
Configuration & Secrets
| Command | Description |
|---|---|
fables flavors 🍦 |
Manage build flavors (dev/staging/prod) |
fables secrets 🔐 |
Manage environment variables & secrets |
fables deps 📦 |
Dependency management & auditing |
fables permissions 📋 |
Manage app permissions |
fables i18n 🌍 |
Internationalization helpers |
Quality & Analysis
| Command | Description |
|---|---|
fables analyze 📊 |
APK/AAB size analysis & optimization |
fables manifest 📄 |
AndroidManifest.xml viewer & editor |
fables proguard 🛡️ |
ProGuard/R8 configuration helper |
fables sign 🔐 |
Keystore generation & signing profiles |
Release & CI/CD
| Command | Description |
|---|---|
fables release 🔄 |
Version bumping & changelog generation |
fables ci 🔧 |
Generate CI/CD configs (GitHub, GitLab, etc.) |
AI Integration
| Command | Description |
|---|---|
fables mcp 🤖 |
MCP server for AI agent integration |
📖 Comprehensive Guide
Building for Android
APK (Installable)
# Universal APK
fables build --target apk
# Per-architecture APKs (smaller download per device)
fables build --target apk --split-per-abi
# Debug build
fables build --target apk --mode debug
# Profile build (performance testing)
fables build --target apk --mode profile
AAB (Play Store)
# App Bundle for Google Play
fables build --target aab
# With flavor
fables build --target aab --flavor production
Build Options
fables build --target apk \
--mode release \ # release | profile | debug
--flavor production \ # Build flavor
--split-per-abi \ # Per-architecture APKs
--obfuscate \ # Code obfuscation (default: on)
--dart-define ENV=prod \ # Dart defines
--dart-define API_KEY=xxx \
--clean \ # Clean before build
--output build/fables \ # Output directory
--yes # Skip confirmation
Building for iOS
# Build IPA (requires macOS with Xcode)
fables build --target ios
# With flavor
fables build --target ios --flavor staging
# Without code signing (for CI/CD)
fables build --target ios --no-sign
Requirements:
- macOS 12+ (Monterey or later)
- Xcode 14+
- CocoaPods (
sudo gem install cocoapods)
Managing Signing Keys
# Generate a new keystore
fables sign generate
# Interactive prompts for:
# - Key alias
# - Certificate details (CN, O, OU, L, ST, C)
# - Password
# List signing profiles
fables sign list
Keystores are stored in .fables/keystores/ (gitignored by default).
Build Flavors & Environments
# Initialize flavors interactively
fables flavors init
# Creates configurations for:
# - dev (Development)
# - staging (Staging)
# - prod (Production)
# List configured flavors
fables flavors list
# Build a specific flavor
fables build --target apk --flavor production
Flavors are saved in .fables/fables.yaml and auto-generate Android product flavors.
App Icons & Splash Screens
Icons
# Generate all icons from a single 1024x1024 image
fables icon path/to/icon.png
# Android only
fables icon path/to/icon.png --android
# With adaptive icons
fables icon path/to/icon.png --adaptive --background "#FF6B35"
# iOS only
fables icon path/to/icon.png --ios
# Web (PWA + favicon)
fables icon path/to/icon.png --web
Generates:
- Android: 5 density buckets (mdpi → xxxhdpi) + adaptive icons
- iOS: 15 sizes including App Store icon
- Web: 192px, 512px, maskable, favicon
Splash Screens
# Generate splash screens
fables splash path/to/splash.png
# With custom background
fables splash path/to/splash.png --background "#FFFFFF"
# With dark mode support
fables splash path/to/splash.png --dark-background "#1A1A1A"
Dependency Management
# List all dependencies
fables deps list
# Include dev dependencies
fables deps list --dev
# Audit for issues
fables deps audit
# Checks: unpinned versions, git deps, supply chain risks
# Add packages
fables deps add http dio provider
# Remove packages
fables deps remove http
# Check for updates
fables deps update --dry-run
Secrets & Environment Variables
# Initialize secrets management
fables secrets init
# Creates .env files for dev, staging, production
# List environments
fables secrets list
# Set a secret
fables secrets set API_KEY sk_live_xxxxx --env production
# Load secrets as dart-defines
fables secrets load production
# Generate encryption key
fables secrets keygen
File structure:
.fables/secrets/
├── development.env
├── staging.env
└── production.env
Internationalization (i18n)
# Initialize i18n with locales
fables i18n init --locales en,es,fr,de,ja,zh
# List configured locales
fables i18n list
# Extract hardcoded strings from Dart code
fables i18n extract
# Validate translations
fables i18n validate
Permissions Management
# List current permissions
fables permissions list
# Add a permission
fables permissions add CAMERA
# Remove a permission
fables permissions remove READ_CONTACTS
# Auto-suggest permissions based on dependencies
fables permissions suggest
ProGuard/R8 Configuration
# List available rule categories
fables proguard list
# Add rules for common libraries
fables proguard add flutter
fables proguard add firebase
fables proguard add gson
fables proguard add okhttp
# Show current rules
fables proguard show
# Validate configuration
fables proguard validate
Device Logs & Debugging
# View all logs
fables logs
# Flutter-only logs
fables logs --flutter
# Filter by tag
fables logs --filter FlutterEngine
# Filter by level (V/D/I/W/E)
fables logs --level E
# Search for text
fables logs --search "error"
# Last 50 lines
fables logs --lines 50
Version Management
# Show current version
fables release version
# Bump version
fables release bump patch # 1.0.0 → 1.0.1
fables release bump minor # 1.0.0 → 1.1.0
fables release bump major # 1.0.0 → 2.0.0
fables release bump build # 1.0.0+1 → 1.0.0+2
# Bump + create git tag
fables release bump minor --tag
# Bump + generate changelog
fables release bump patch --changelog
# Generate changelog from git history
fables release changelog
Updates version in:
pubspec.yamlandroid/app/build.gradle(versionCode + versionName)ios/Runner/Info.plist(CFBundleVersion + CFBundleShortVersionString)
🤖 AI Agent Integration
Fables implements the Model Context Protocol (MCP), making it compatible with every major AI coding assistant and agent framework.
Supported Agents
| Category | Agents |
|---|---|
| Editors & IDEs | Claude Code, Cursor, VS Code/Copilot, Windsurf, Cline, Continue.dev, Aider, Zed, JetBrains |
| AI Frameworks | LangChain, CrewAI, AutoGen, Semantic Kernel, LlamaIndex, Haystack, OpenAI Agents, Google ADK, Amazon Bedrock |
| Platforms | OpenClaw, n8n, Dify, Coze, FastGPT, Flowise |
| Generic | Any MCP-compatible client |
Setup Commands
# One command to configure any agent
fables mcp setup <agent>
# Examples:
fables mcp setup claude
fables mcp setup cursor
fables mcp setup langchain
fables mcp setup crewai
# List all available MCP tools
fables mcp tools
# Start MCP server
fables mcp serve --stdio # For CLI agents
fables mcp serve --port 3000 # For remote agents
OpenClaw
fables mcp setup openclaw
Creates TOOLS.md with Fables integration. Add to your OpenClaw workspace.
Usage in OpenClaw:
Build my Flutter app as an APK
→ OpenClaw calls fables_build tool with target: "apk"
Claude Code
fables mcp setup claude
Creates .claude/mcp.json:
{
"mcpServers": {
"fables": {
"command": "fables",
"args": ["mcp", "serve", "--stdio"]
}
}
}
Usage in Claude Code:
User: "Build my Flutter app for Android release"
Claude: [calls fables_build with target: "apk", mode: "release"]
Cursor
fables mcp setup cursor
Creates .cursor/mcp.json. Fables tools appear in Cursor's AI panel.
VS Code / GitHub Copilot
fables mcp setup vscode
Creates .vscode/mcp.json. Works with GitHub Copilot Chat and VS Code extensions.
Windsurf (Codeium)
fables mcp setup windsurf
Creates .windsurf/mcp.json.
Cline
fables mcp setup cline
Creates .cline/mcp.json.
Continue.dev
fables mcp setup continue
Creates .continue/mcp.json with stdio transport.
Aider
fables mcp setup aider
Creates .aider.conf.yml with MCP server configuration.
Zed Editor
fables mcp setup zed
Creates .zed/settings.json.
JetBrains IDEs
fables mcp setup jetbrains
Creates .idea/mcp.json for IntelliJ, Android Studio, WebStorm, etc.
LangChain
fables mcp setup langchain
Creates langchain_mcp_config.json for use with LangChain's MCP adapter.
Python usage:
from langchain_mcp import MCPServer
server = MCPServer.from_config("langchain_mcp_config.json")
tools = server.get_tools()
# Use in LangChain agent
agent = create_react_agent(llm, tools)
agent.invoke({"input": "Build my Flutter app as an APK"})
CrewAI
fables mcp setup crewai
Creates crewai_mcp_config.json with capabilities metadata.
Python usage:
from crewai import Agent, Task, Crew
from crewai_tools import MCPServerToolKit
toolkit = MCPServerToolKit.from_config("crewai_mcp_config.json")
developer = Agent(
role="Mobile Developer",
goal="Build and deploy Flutter apps",
tools=toolkit.get_tools(),
backstory="Expert Flutter developer"
)
task = Task(
description="Build the Flutter app as a release APK",
agent=developer
)
crew = Crew(agents=[developer], tasks=[task])
crew.kickoff()
AutoGen (Microsoft)
fables mcp setup autogen
Creates autogen_mcp_config.json.
Semantic Kernel
fables mcp setup semantickernel
Creates semantickernel_mcp.json.
LlamaIndex
fables mcp setup llamaindex
Creates llamaindex_mcp.json.
Haystack (deepset)
fables mcp setup haystack
Creates haystack_mcp.yaml.
OpenAI Agents SDK
fables mcp setup openai
Creates openai_mcp_config.json.
Google ADK
fables mcp setup google
Creates google_adk_mcp.json.
Amazon Bedrock
fables mcp setup bedrock
Creates bedrock_mcp_config.json.
n8n
fables mcp setup n8n
Creates n8n_mcp.json for n8n workflow automation.
Dify
fables mcp setup dify
Creates dify_mcp.json.
Coze (ByteDance)
fables mcp setup coze
Creates coze_mcp.json.
FastGPT
fables mcp setup fastgpt
Creates fastgpt_mcp.json.
Flowise
fables mcp setup flowise
Creates flowise_mcp.json.
Generic MCP Client
For any MCP-compatible client:
fables mcp setup generic
Creates mcp_config.json with standard MCP configuration.
MCP Protocol Reference
stdio Transport (for CLI agents):
fables mcp serve --stdio
HTTP/SSE Transport (for remote agents):
fables mcp serve --port 3000 --host localhost
Endpoints:
GET /sse— Server-Sent Events streamPOST /— JSON-RPC requests
MCP Tools Reference
| Tool | Description |
|---|---|
fables_init |
Initialize Fables in a Flutter project |
fables_build |
Build Flutter app (APK, AAB, iOS) |
fables_doctor |
Check build environment |
fables_analyze |
Analyze APK/AAB size |
fables_deploy |
Deploy APK to device |
fables_run |
Run app on device/emulator |
fables_test |
Run Flutter tests |
fables_logs |
View device logs |
fables_permissions |
Manage app permissions |
fables_manifest |
View/edit AndroidManifest.xml |
fables_deps |
Manage dependencies |
fables_i18n |
Internationalization |
fables_flavors |
Manage build flavors |
fables_config |
Get/set configuration |
fables_sign_generate |
Generate signing keystore |
fables_release |
Bump version |
fables_devices |
List connected devices |
fables_project_info |
Get project information |
fables_emulator |
Manage emulators |
🔧 CI/CD Integration
GitHub Actions
fables ci generate github
Creates .github/workflows/fables-build.yml with:
- Android APK + AAB builds
- iOS build
- Size analysis
- Artifact uploads
- Manual dispatch with target selection
GitLab CI
fables ci generate gitlab
Creates .gitlab-ci.yml with Docker-based builds.
CircleCI
fables ci generate circleci
Creates .circleci/config.yml with multi-stage pipeline.
Bitbucket Pipelines
fables ci generate bitbucket
Creates bitbucket-pipelines.yml.
🐳 Docker Support
Fables can auto-manage the Android SDK via Docker — no Android Studio needed:
# First build sets up Docker SDK (may take a few minutes)
fables build --target apk
# Subsequent builds are fast ⚡
Docker image includes:
- Ubuntu 22.04
- Java 17 (OpenJDK)
- Android SDK (API 34)
- Android Build Tools (34.0.0)
- Flutter SDK (stable)
⚙️ Configuration Reference
.fables/fables.yaml:
name: my_app
version: 0.1.0
android:
enabled: true
targets:
- apk
- aab
ios:
enabled: true
signing:
autoSign: true
build:
mode: release
obfuscate: true
splitDebugInfo: true
flavors:
- name: dev
appName: My App Dev
bundleId: com.example.app.dev
environment: dev
- name: staging
appName: My App Staging
bundleId: com.example.app.staging
environment: staging
- name: prod
appName: My App
bundleId: com.example.app
environment: production
📁 Project Structure
my_flutter_app/
├── .fables/
│ ├── fables.yaml # Fables configuration
│ ├── keystores/ # Signing keystores (gitignored)
│ ├── profiles/ # Signing profiles (gitignored)
│ ├── secrets/ # Environment files (gitignored)
│ │ ├── development.env
│ │ ├── staging.env
│ │ └── production.env
│ └── .gitignore
├── lib/ # Your Flutter code
├── pubspec.yaml
├── l10n.yaml # i18n config (if initialized)
├── lib/l10n/ # Localization files (if initialized)
└── build/
└── fables/ # Build output
├── app-release.apk
├── app-release.aab
└── Runner.ipa
🧪 Testing
Fables has a comprehensive test suite:
# Run all tests
npm test
# Run with coverage
npm test -- --coverage
# Run specific test suite
npx jest --testNamePattern="fables mcp"
Test coverage:
- 50 test cases
- All 24 commands tested
- MCP tool handlers tested
- Error handling tested
- Edge cases covered
🤝 Contributing
Contributions welcome! 🎉
# 1. Fork the repo
# 2. Clone your fork
git clone https://github.com/YOUR_USERNAME/fables.git
# 3. Install dependencies
cd fables && npm install
# 4. Create a branch
git checkout -b feature/amazing-feature
# 5. Make your changes
# 6. Run tests
npm test
# 7. Commit
git commit -m 'feat: add amazing feature'
# 8. Push
git push origin feature/amazing-feature
# 9. Open a PR 🎉
Development
# Run locally
node bin/fables.js --help
# Run tests
npm test
# Watch mode
npx jest --watch
📄 License
MIT © Fables Contributors
<div align="center">
📖 Fables — where every build is a happy ending. ✨
Report Bug · Request Feature · Discord
</div>
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.