By os-tack
Generate, process, and analyze MIDI data via a command-line MCP server, enabling semantic music composition and manipulation of musical instrument digital interface data directly from the terminal.
MCP server for semantic MIDI composition.
fcp-midi lets LLMs compose music by describing musical intent -- notes, chords, dynamics, tempo changes -- and renders it into standard MIDI files. Instead of manipulating raw bytes or MIDI events, the LLM works with operations like note Bass E2 at:1.1 dur:quarter vel:90 and crescendo @track:Lead vel:45-75 @range:3.1-6.4. Built on the FCP framework; a mido.MidiFile is the source of truth throughout, so there's no separate serialization step.
midi_session('new "Voltage Drop" tempo:140 key:E-minor')
midi([
'note Drums kick at:1.1 dur:eighth vel:100',
'note Bass E2 at:1.1 dur:quarter vel:90',
'chord Pad Em at:1.1 dur:whole vel:70',
'crescendo @track:Lead vel:45-75 @range:3.1-6.4',
'tempo 174 at:11.1',
])
midi_session('save as:./voltage_drop.mid')
| Tool | Purpose |
|---|---|
midi(ops) | Batch mutations -- notes, chords, tracks, tempo, dynamics, copy/transpose |
midi_query(q) | Inspect the composition -- map, tracks, events, piano-roll, instruments, find |
midi_session(action) | Lifecycle -- new, open, save, checkpoint, undo, redo |
midi_help() | Full reference card |
Plumber's Journey -- Classic game theme faithfully recreated: 4 tracks, 288 notes, 16 seconds, 180 BPM.
Voltage Drop -- A drum-and-bass track with tempo acceleration (140 -> 155 -> 174 BPM), 5 tracks, breakbeats, sub-bass, arpeggios, and a signature DROP section. Also used in the FCP vs raw Python agent battle -- FCP produced 1,674 notes across 12 tracks in 87 seconds, compared to 694 notes from ~689 lines of hand-written Python.
See docs/examples/ for MIDI files and the full writeup.
Requires Python >= 3.11.
pip install fcp-midi
{
"mcpServers": {
"midi": {
"command": "uv",
"args": ["run", "python", "-m", "fcp_midi"]
}
}
}
Mido-native — no parallel semantic model between the op handlers and the file format:
MCP Server (fcp-core create_fcp_server + MidiAdapter)
Parses op strings, dispatches to verb handlers, session lifecycle
|
MidiModel (mido.MidiFile is the source of truth)
Op handlers read/write mido messages directly on the tracks;
a NoteIndex gives fast selector lookups. Undo/redo and batch
atomicity are byte snapshots of the file, not event replay.
Key features:
acoustic-grand-piano, synth-bass-1, standard-kit)at:1.1 (bar 1, beat 1), at:3.2.240 (bar 3, beat 2, tick 240)whole, half, quarter, eighth, sixteenth, tripletcrescendo, diminuendo across rangesuv sync
uv run pytest # 620 tests
uv run pytest -m "not slow" # skip stress tests (604 tests, ~0.25s)
uv run ruff check # linting
uv run pyright # type checking
MIT
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimnpx claudepluginhub os-tack/fcp --plugin fcp-midiBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
Query and refactor Rust codebases through intent-level commands
Create and edit PowerPoint presentations through semantic commands
Create and edit draw.io diagrams through intent-level commands
All FCP servers — diagrams, infrastructure, music, spreadsheets, presentations, PDF documents, Python/Rust codebases, and regex construction
Semantic spreadsheet operations for LLMs
Memory compression system for Claude Code - persist context across sessions
Standalone image generation plugin using Nano Banana MCP server. Generates and edits images, icons, diagrams, patterns, and visual assets via Gemini image models. No Gemini CLI dependency required.
Streamline people operations — recruiting, onboarding, performance reviews, compensation analysis, and policy guidance. Maintain compliance and keep your team running smoothly.
Create content, plan campaigns, and analyze performance across marketing channels. Maintain brand voice consistency, track competitors, and report on what's working.
Unified capability management center for Skills, Agents, and Commands.
Write feature specs, plan roadmaps, and synthesize user research faster. Keep stakeholders updated and stay ahead of the competitive landscape.