Built by Metorial, the integration platform for agentic AI.

Learn More

June/synth-mcp

Synth MIDI Composition Server

    Server Summary

    • Initialize FluidSynth

    • Load SoundFont files

    • Control overall volume

    • Configure reverb effects

    • Configure chorus effects

    • Play single notes

    • Play chords

    • Create musical sequences

Here's what you would need to create an effective MIDI composition system built on FluidSynth: Core MIDI Functions for Your MCP Server

  1. FluidSynth Integration Functions

initialize_fluidsynth() - Set up FluidSynth with proper configurations load_soundfont(soundfont_path) - Load SoundFont files (.sf2) for instrument sounds set_gain(gain_value) - Control the overall volume of the synth set_reverb(room_size, damping, width, level) - Configure reverb effects set_chorus(nr, level, speed, depth, type) - Configure chorus effects

  1. MIDI Composition Functions

play_note(note, velocity, duration, channel) - Play single notes with control over velocity and duration play_chord(notes, velocity, duration, channel) - Play multiple notes simultaneously as chords create_sequence(notes, durations, velocities, channel) - Create sequences of notes with timing play_midi_file(file_path) - Load and play existing MIDI files record_midi(duration) - Record MIDI input for a specified duration

  1. Advanced Musical Functions

create_melody(scale, key, length, rhythm_pattern) - Generate melodies based on musical rules create_chord_progression(progression, style, tempo) - Create harmonic progressions with different voicings create_drum_pattern(style, tempo, variations) - Generate rhythmic patterns for percussion create_arpeggio(chord, pattern, tempo) - Create arpeggiated patterns from chord structures create_bassline(chord_progression, style, tempo) - Generate bass patterns that complement chord progressions

  1. Composition Management

create_track(name, instrument, channel) - Create a new track with specified instrument mute_track(track_id) - Silence a specific track solo_track(track_id) - Solo a specific track set_track_volume(track_id, volume) - Adjust volume for individual tracks set_track_pan(track_id, pan) - Adjust stereo positioning

  1. Project Management

create_project(name, tempo, time_signature) - Initialize a new composition project save_project(path) - Save the current project state load_project(path) - Load a saved project export_midi(path) - Export the composition as a standard MIDI file export_audio(path, format) - Render the composition to audio using FluidSynth

  1. Real-time Collaboration and Interaction

start_midi_server(port) - Start a server that listens for MIDI events connect_midi_device(device_name) - Connect to external MIDI hardware send_midi_event(event_type, parameters) - Send MIDI events to connected devices sync_tempo(tempo) - Synchronize tempo across connected systems

Implementation Approach Based on the SuperCollider MCP server I examined, here's how you could structure your FluidSynth MIDI server:

Python Backend: Use Python with the python-osc library for communication and pyfluidsynth for FluidSynth integration MCP Protocol Implementation: Create a server that follows the Model Context Protocol structure Architecture:

AI Assistant (Claude) calls methods on your MCP Server Your server translates these to FluidSynth commands FluidSynth generates the actual audio

Getting Started To build this system, you would need to:

Create a Python project with the necessary dependencies:

pyfluidsynth - For FluidSynth integration mcp - For MCP protocol support python-osc - For OSC communication (if needed) mido - For MIDI file handling

Create a main server file (e.g., server.py) that:

Initializes FluidSynth Registers all your music composition methods Handles communication with Claude

Design the method signatures in a way that allows Claude to easily compose music, with well-defined parameters and reasonable defaults.