Skip to main content
Glama

MIDI Analyzer MCP Server

by sin5ddd
README.md7.7 kB
# MIDI Analyzer MCP Server A Model Context Protocol (MCP) server for analyzing MIDI SMF (Standard MIDI File) files. This server provides comprehensive tools for loading, parsing, and analyzing MIDI files. ## Features - **MIDI File Loading**: Load and parse MIDI SMF files - **File Summary**: Get comprehensive information about MIDI files (format, PPQ, tempo, time signature, key signature, etc.) - **Track Analysis**: List and analyze individual tracks with filtering capabilities - **Event Extraction**: Extract and filter MIDI events with advanced filtering options - **Memory Management**: Keep loaded files in memory for efficient repeated access ## Available Tools ### 1. load_midi_file Load and parse a MIDI SMF file from a specified path. **Parameters:** - `filePath` (string): Path to the MIDI file **Returns:** - `fileId`: Unique identifier for the loaded file - `filePath`: Path to the loaded file - `format`: MIDI format type (0, 1, or 2) - `trackCount`: Number of tracks - `ppq`: Pulses per quarter note - `totalEvents`: Total number of events ### 2. get_midi_summary Get comprehensive summary information about a MIDI file. **Parameters:** - `fileId` (string, optional): ID of loaded file - `filePath` (string, optional): Path to MIDI file **Returns:** - Complete summary including format, PPQ, total ticks, track count, tempo info, time signatures, key signatures ### 3. get_tracks_list Get list of tracks with optional filtering. **Parameters:** - `fileId` or `filePath`: File identifier - `channelFilter` (number, optional): Filter by MIDI channel (0-15) - `programFilter` (number, optional): Filter by program number (0-127) **Returns:** - Array of track information including names, channels, programs, event counts ### 4. get_track_details Get detailed information about a specific track. **Parameters:** - `fileId` or `filePath`: File identifier - `trackIndex` (number): Track index to analyze - `timeRange` (object, optional): Filter events by time range - `eventTypeFilter` (array, optional): Filter by event types - `valueFilter` (object, optional): Filter by specific values **Returns:** - Track metadata and filtered events ### 5. get_midi_events Extract MIDI events with comprehensive filtering. **Parameters:** - `fileId` or `filePath`: File identifier - `timeRange` (object, optional): Time range filter - `eventTypeFilter` (array, optional): Event type filter - `trackFilter` (array, optional): Track filter - `valueFilter` (object, optional): Value filter - `metaTypeFilter` (array, optional): Meta event type filter **Returns:** - Filtered array of MIDI events ## Installation ### Prerequisites - Node.js (version 18 or higher) - npm (comes with Node.js) ## Adding to Claude Code ### Method 1: Using npx (Recommended - No Local Installation Required) Add the following configuration to your Claude Code settings file: ```json { "mcpServers": { "midi-analyzer": { "command": "npx", "args": ["sin5ddd/midi-analyzer-mcp"] } } } ``` This method automatically downloads and runs the latest version from GitHub without requiring local installation. ### Method 2: Local Installation (For Development or Offline Use) 1. Clone the repository: ```bash git clone https://github.com/sin5ddd/midi-analyzer-mcp.git cd midi-analyzer-mcp ``` 2. Install dependencies: ```bash npm install ``` 3. Build the project: ```bash npm run build ``` 4. Configure Claude Code: #### For Windows: ```json { "mcpServers": { "midi-analyzer": { "command": "node", "args": ["C:\\path\\to\\midi-analyzer-mcp\\dist\\index.js"], "cwd": "C:\\path\\to\\midi-analyzer-mcp" } } } ``` #### For Unix/Linux/macOS: ```json { "mcpServers": { "midi-analyzer": { "command": "node", "args": ["/path/to/midi-analyzer-mcp/dist/index.js"], "cwd": "/path/to/midi-analyzer-mcp" } } } ``` ### Configuration File Locations Claude Code configuration files are located at: - **Windows**: `%APPDATA%\Claude\claude_desktop_config.json` - **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json` - **Linux**: `~/.config/Claude/claude_desktop_config.json` ### Quick Setup with npx (Recommended) 1. **Add to Claude Code configuration:** ```json { "mcpServers": { "midi-analyzer": { "command": "npx", "args": ["sin5ddd/midi-analyzer-mcp"] } } } ``` 2. **Restart Claude Code** to load the new MCP server. 3. **Test the installation** by asking Claude Code: ``` "Load the MIDI file at [path] and analyze its contents" ``` ### Local Development Setup 1. **Clone and setup the repository:** ```bash git clone https://github.com/sin5ddd/midi-analyzer-mcp.git cd midi-analyzer-mcp npm install npm run build ``` 2. **Add to Claude Code configuration:** ```json { "mcpServers": { "midi-analyzer": { "command": "node", "args": ["/path/to/midi-analyzer-mcp/dist/index.js"], "cwd": "/path/to/midi-analyzer-mcp" } } } ``` ## Development ### Local Development ```bash npm run dev ``` ### Build for Production ```bash npm run build ``` ### Run in Production ```bash npm start ``` ## Troubleshooting 1. **Installation Issues:** - Ensure Node.js version 18+ is installed: `node --version` - Check npm version: `npm --version` - Try clearing npm cache: `npm cache clean --force` 2. **Claude Code Integration:** - Verify the path to `dist/index.js` is correct and absolute - Ensure the project has been built with `npm run build` - Check Claude Code logs for MCP server startup errors - Make sure Node.js is accessible from the command line 3. **Runtime Issues:** - Verify MIDI file paths are correct and accessible - Check file permissions for MIDI files - Ensure MIDI files are valid SMF format 4. **Updates:** **For npx method:** Updates are automatic - npx always downloads the latest version. **For local installation:** ```bash cd /path/to/midi-analyzer-mcp git pull origin main npm install npm run build ``` Then restart Claude Code. ## Event Types The server recognizes the following MIDI event types: - `noteOn`: Note on events - `noteOff`: Note off events - `noteAftertouch`: Note aftertouch - `controller`: Control change - `programChange`: Program change - `channelAftertouch`: Channel aftertouch - `pitchBend`: Pitch bend - `sysEx`: System exclusive - `meta`: Meta events (tempo, time signature, etc.) ## Filtering Options ### Time Range Filter events by MIDI tick range: ```json { "timeRange": { "startTick": 0, "endTick": 1920 } } ``` ### Value Filter Filter events by specific values: ```json { "valueFilter": { "value1": 60, // e.g., note number "value2": 100, // e.g., velocity "value3": 0 // e.g., third value if present } } ``` ### Meta Type Filter Filter meta events by type (for text, lyrics, markers, etc.): ```json { "metaTypeFilter": ["lyrics", "marker", "text"] } ``` **Supported Meta Event Types:** - `text` - Generic text events - `lyrics` - Lyric events - `marker` - Marker events (section names, rehearsal marks) - `trackName` - Track name - `instrumentName` - Instrument name - `copyright` - Copyright notice - `cuePoint` - Cue point events - `programName` - Program name - `deviceName` - Device name - `setTempo` - Tempo change events - `timeSignature` - Time signature events - `keySignature` - Key signature events ## Error Handling The server provides detailed error messages for: - File not found - Invalid MIDI files - Out of range track indexes - Invalid parameters ## License MIT

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/sin5ddd/midi-analyer-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server