Content
# UniversalFLStudioMCP
**v26.0 Alpha 1**
UFM | Enable your AI Agent to control FL Studio for arranging and composing music by operating the UFM CLI or MCP server.
## Current scope
This implementation provides safe read-only discovery for FL Studio resources and an AI-driven project planner:
- Detect FL Studio install, user data, and executable paths
- List bundled templates, demo/render-test projects, user projects, and plugins
- Open an existing `.flp` project explicitly requested by path
- Create a writable project by copying a bundled/user `.flp` template
- Scan FLP files into dataset-preparation metadata
- Export FLP dataset summaries as JSON
- Train and evaluate baseline project planner models
- Generate project plans with marker-aware retrieval
- Manage generated projects with sidecar metadata
## CLI
```bash
ufm info
ufm templates --limit 20
ufm demos --limit 20
ufm projects --limit 20
ufm plugins --limit 50
ufm create-from-template "C:\\path\\to\\template.flp" "My Generated Track"
ufm scan-dataset --limit 100
ufm export-dataset "C:\\path\\to\\flp_dataset.json" --limit 1000
ufm build-manifest ".\\data\\manifest.json" --limit 1000
ufm enrich-manifest ".\\data\\manifest.json" --output-path ".\\data\\manifest.enriched.json"
ufm parse-manifest ".\\data\\manifest.enriched.json" --output-path ".\\data\\manifest.parsed.json"
ufm export-instructions ".\\data\\manifest.parsed.json" ".\\data\\instructions.jsonl"
ufm train-baseline ".\\data\\instructions.jsonl" ".\\runs\\baseline"
ufm train-baseline ".\data\instructions.v3.jsonl" ".\runs\project-planner-v2" --max-vocab-size 5000
ufm predict-baseline ".\\runs\\project-planner-v2\\baseline_model.json" "Create a dark trap FL Studio project" --source demo
ufm eval-baseline ".\\runs\\project-planner-v2\\baseline_model.json" ".\\data\\instructions.v3.jsonl" --limit 25
ufm eval-expert ".\runs\project-planner-v2\baseline_model.json" ".\data\eval.project_planner.json"
ufm build-from-baseline ".\\runs\\baseline\\baseline_model.json" "Create a dark trap FL Studio project" --source demo --project-name "My Generated Track"
ufm build-from-baseline ".\\runs\\baseline\\baseline_model.json" "Create a dark trap FL Studio project" --source demo --project-name "My Generated Track" --no-metadata
ufm build-from-plan ".\\data\\project_plan.json" --project-name "My Generated Track"
ufm generated list --root ".\\generated"
ufm generated search "trap" --root ".\\generated" --source demo --min-confidence 0.8
ufm generated latest --root ".\\generated"
ufm generated stats --root ".\\generated"
ufm generated show ".\\generated\\My Generated Track.flp.ufm.json"
ufm generated rebuild ".\\generated\\My Generated Track.flp.ufm.json" --project-name "My Generated Track Rebuilt"
ufm generated open ".\\generated\\My Generated Track.flp.ufm.json"
ufm split-manifest ".\\data\\manifest.parsed.json" ".\\data\\splits"
ufm analyze-flp "C:\\path\\to\\project.flp"
ufm open "C:\\path\\to\\project.flp"
ufm serve
```
## MCP configuration
```json
{
"mcpServers": {
"universal-flstudio-mcp": {
"command": "ufm",
"args": ["serve"]
}
}
}
```
## Environment overrides
- `FL_STUDIO_HOME`: FL Studio installation directory
- `IMAGE_LINE_USER_DIR`: Image-Line user documents directory