# Chord Constructor MCP MCP

> The Chord Constructor MCP breaks down any complex chord notation into its component notes, harmonic roles, and possible inversions. It's a musical engine for composers and theorists that analyzes structure, generates various voicings (open or closed), and maps out how chords fit within a key. Stop spending hours manually mapping out theory; get instant, structured data for composition and analysis.

## Overview
- **Category:** productivity
- **Price:** Free
- **Tags:** music-theory, chords, composition, audio, notation

## Description

This MCP is your deep dive into music theory. It handles complex chord structures, breaking them down into the individual notes, intervals, and functional roles needed for writing or analyzing music. You can take a simple chord name and get its constituent parts instantly. Beyond basic parsing, it calculates every possible inversion of that chord—allowing you to see how different bass notes change the feel without changing the harmony. If you need specific textures, it arranges those same notes into closed or open voicings. The real value comes when chaining these tools; for example, determining a harmonic role and then using that result to inform which voicings are appropriate. This kind of multi-step analysis is what makes Vinkius so powerful. You connect your preferred AI client once, and you can build automations spanning multiple platforms—connecting this music theory MCP with, say, a MIDI or sheet music storage MCP—all through one agent.

## Tools

### determine_harmonic_role
Identifies which functional role a chord plays within a specific musical key (e.g., tonic, subdominant).

### generate_voicings
Arranges notes into structured textures, supporting both closed and open sounding arrangements.

### get_chord_inversions
Calculates all possible ways a chord can be played by changing which note acts as the bass pitch.

### parse_chord_string
Breaks down any standard chord name string into its basic roots and component intervals.

## Prompt Examples

**Prompt:** 
```
Parse the chord 'Ebmaj7'.
```

**Response:** 
```
The `parse_chord_string` tool identifies the root as Eb and the intervals as major third, perfect fifth, and minor seventh.
```

**Prompt:** 
```
What are the inversions for the notes [C, E, G]?
```

**Response:** 
```
Using `get_chord_inversions`, you can find all three permutations: root position (C-E-G), first inversion (E-G-C), and second inversion (G-C-E).
```

**Prompt:** 
```
Generate an open voicing for [C, E, G, B].
```

**Response:** 
```
The `generate_voicings` tool produces an expanded arrangement of the notes to create more space in the sound.
```

## Capabilities

### Parse Chord Notation
Converts standard chord name strings (like 'Cmaj7') into their structured component parts: root, intervals, and normalized notes.

### Determine Harmonic Function
Identifies the functional role of a specific chord within a defined musical key (Tonic, Dominant, etc.).

### Generate Chord Inversions
Calculates every possible permutation of a chord, showing how different notes can serve as the bass.

### Create Specific Voicings
Arranges a set of notes into structured musical textures, supporting both tight 'closed' and spaced 'open' styles.

## Use Cases

### Checking Tonal Consistency Across Movements
A composer writes a piece that shifts keys rapidly. Instead of manually cross-referencing the harmonic function, they feed all transitional chords into `determine_harmonic_role` to ensure the movement always feels grounded and intentional.

### Building Out Bass Line Options
A songwriter has a simple core chord (C-E-G). They run `get_chord_inversions` to get all permutations, then use those results as the input for `generate_voicings` to create an entire set of bass/harmony options.

### Analyzing Existing Sheet Music
An editor wants to understand a piece they found. They use `parse_chord_string` on every chord name, which gives them structured data points (root, intervals) that can then be fed into other analytical tools.

### Designing a Specific Soundscape
A sound designer needs notes for an ambient passage. They use `generate_voicings` to create several open voicings from the same root chord, guaranteeing unique spacing and texture across their track.

## Benefits

- Stop guessing how a chord functions. Use `determine_harmonic_role` to immediately know if the chord is acting as a dominant or a tonic in any given key.
- Need variety? Run `get_chord_inversions` to generate every possible permutation of your notes, giving you dozens of choices for bass lines without writing extra material.
- `parse_chord_string` turns messy notation into clean data. Feed it 'F#min7' and get the root, intervals, and normalized name back in seconds.
- Create unique sound textures by running `generate_voicings`. You can specify open or closed styles to give your music depth that simple triads miss.
- When you combine these tools—say, parsing a chord, finding its inversions, and then generating voicings from those results—you automate weeks of manual theory work.

## How It Works

The bottom line is that it turns abstract music theory concepts into concrete, usable data points.

1. First, you feed the MCP a raw chord name or note sequence. This initial input gets broken down by analyzing its fundamental components.
2. Next, the system runs multiple structural checks: it determines all possible inversions and identifies the chord's role within its key, providing layered context.
3. Finally, you select your desired output—maybe a specific open voicing or just the list of roots—and get back structured data ready for composition.

## Frequently Asked Questions

**How do I use the parse_chord_string tool?**
You pass it a standard chord name string like 'Ebmaj7'. The tool returns its roots, intervals (like major third), and normalized component parts.

**Can determine_harmonic_role tell me if a chord is correct for a key?**
Yes. It analyzes the chord against a specified musical key to confirm or identify its functional role, such as being Tonic or Subdominant within that key.

**What's the difference between get_chord_inversions and generate_voicings?**
Inversions finds *structural* permutations (which note is the bass). Voicings takes those notes and arranges them into a specific *sound texture*, like open or closed.

**Do I need to use parse_chord_string first?**
While not mandatory, it's best practice. It gives you the cleanest, most structured list of notes that other tools can rely on for accurate analysis and arrangement.

**If I run `parse_chord_string` with an invalid or ambiguous chord name, how does it handle the error?**
The tool returns a structured failure object instead of failing outright. It will tell you exactly which part of the notation caused the problem and why the input was rejected.

**Does `get_chord_inversions` provide enough detail for advanced musical arranging?**
Yes, it gives more than just a note order. For every permutation, you get both the specific bass note and the full stack of notes, making arrangement planning straightforward.

**How can I feed structured data from `parse_chord_string` into `generate_voicings`?**
You pass the resulting root and interval components directly as a list of individual notes. The voicing tool accepts this note set, regardless of how it was originally named.

**What if I use `determine_harmonic_role` on a chord that doesn't fit the specified key?**
It won't crash. Instead, the tool will flag the role as ambiguous or non-functional relative to the key you provided, alerting you that it deviates from the established tonal center.