MIDI MCP Server

MIDI MCP Server

MIDI MCP Server is a Model Context Protocol (MCP) server that enables AI models to generate MIDI files from text-based music data. This tool allows for programmatic creation of musical compositions through a standardized interface.

tubone24

Developer Tools
Visit Server

README

MIDI MCP Server

Overview

MIDI MCP Server is a Model Context Protocol (MCP) server that enables AI models to generate MIDI files from text-based music data. This tool allows for programmatic creation of musical compositions through a standardized interface.

mid

Installation

npm install
npm run build

Usage with MCP Clients (e.g., Cline)

After building the project, simply add the server to your MCP client configuration:

"mcpServers": {
    "musicComposer": {
        "command": "node",
        "args": ["/path/to/midi-mcp-server/build/index.js"]
    }
}

Replace /path/to/ with the actual path to your project directory.

Features

  • Generate MIDI files from structured JSON music data
  • Support for multiple tracks and instruments
  • Customizable tempo, time signature, and note properties
  • Save MIDI files to specified locations

Tool: create_midi

The server provides a tool called create_midi that generates MIDI files from structured music data.

Input Parameters

  • title: String - The title of the composition
  • composition: String - A JSON string representing the music data
  • output_path: String - Path where the MIDI file will be saved

Composition Format

The composition should follow this structure:

{
  "bpm": number,
  "timeSignature": { "numerator": number, "denominator": number },
  "tracks": [
    {
      "name": string,
      "instrument": number,
      "notes": [
        { "pitch": number, "startTime": number, "duration": number, "velocity": number }
      ]
    }
  ]
}

Properties

  • bpm: Tempo in beats per minute
  • timeSignature: Time signature (e.g., {numerator: 4, denominator: 4} for 4/4 time)
  • tracks: Array of instrument tracks
    • name: Track name
    • instrument: MIDI program number (0-127)
    • notes: Array of note objects
      • pitch: MIDI note number (0-127)
      • startTime: Start time in beats
      • duration: Note duration in beats
      • velocity: Note velocity/volume (0-127)

Example

const composition = {
  "bpm": 120,
  "timeSignature": { "numerator": 4, "denominator": 4 },
  "tracks": [
    {
      "name": "Piano",
      "instrument": 0,
      "notes": [
        { "pitch": 60, "startTime": 0, "duration": 1, "velocity": 100 },
        { "pitch": 64, "startTime": 1, "duration": 1, "velocity": 100 },
        { "pitch": 67, "startTime": 2, "duration": 1, "velocity": 100 }
      ]
    }
  ]
};

Dependencies

  • @modelcontextprotocol/sdk: MCP server implementation
  • midi-writer-js: Library for creating MIDI files

Demo

For example, the prompt below, which is a request to create a minor scale 8-bar choral piece, can be processed by the server:

8小節の合唱曲を作って。
若干マイナー調で、メロディックな音階を作ってほしい

https://github.com/user-attachments/assets/e20ebef0-fdbf-4e72-910d-41b94183f9d9

melodic_minor_chorus.mid

Note on Local Execution

This MCP server runs locally and communicates via standard input/output (stdio). No network configuration is required as the MCP client will automatically start the server process and establish communication.

Recommended Servers

playwright-mcp

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.

Official
Featured
TypeScript
Magic Component Platform (MCP)

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.

Official
Featured
Local
TypeScript
MCP Package Docs Server

MCP Package Docs Server

Facilitates LLMs to efficiently access and fetch structured documentation for packages in Go, Python, and NPM, enhancing software development with multi-language support and performance optimization.

Featured
Local
TypeScript
Claude Code MCP

Claude Code MCP

An implementation of Claude Code as a Model Context Protocol server that enables using Claude's software engineering capabilities (code generation, editing, reviewing, and file operations) through the standardized MCP interface.

Featured
Local
JavaScript
@kazuph/mcp-taskmanager

@kazuph/mcp-taskmanager

Model Context Protocol server for Task Management. This allows Claude Desktop (or any MCP client) to manage and execute tasks in a queue-based system.

Featured
Local
JavaScript
Linear MCP Server

Linear MCP Server

Enables interaction with Linear's API for managing issues, teams, and projects programmatically through the Model Context Protocol.

Featured
JavaScript
mermaid-mcp-server

mermaid-mcp-server

A Model Context Protocol (MCP) server that converts Mermaid diagrams to PNG images.

Featured
JavaScript
Jira-Context-MCP

Jira-Context-MCP

MCP server to provide Jira Tickets information to AI coding agents like Cursor

Featured
TypeScript
Linear MCP Server

Linear MCP Server

A Model Context Protocol server that integrates with Linear's issue tracking system, allowing LLMs to create, update, search, and comment on Linear issues through natural language interactions.

Featured
JavaScript
Sequential Thinking MCP Server

Sequential Thinking MCP Server

This server facilitates structured problem-solving by breaking down complex issues into sequential steps, supporting revisions, and enabling multiple solution paths through full MCP integration.

Featured
Python