# Chord Constructor MCP

> Chord Constructor analyzes complex music theory by breaking down chord notation into notes, intervals, and harmonic roles. This MCP lets your agent understand the underlying structure of any chord you feed it, calculating every possible inversion or determining its function within a given key. It's essential for composers needing automated analysis or students studying advanced harmony.

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

## Description

Writing music theory often involves juggling complex rules: figuring out if a chord is acting as a dominant seventh, listing all possible inversions, or deciding how to spread the notes across different voices. This MCP handles all that heavy lifting. You can feed it any standard chord notation, and your agent immediately breaks down its root intervals and component parts. Need to know how those three notes sound when they're played from a different bass point? It calculates every possible permutation for you. If you’re stuck on arrangement, the tool generates specific note groupings, supporting both open and closed textures. Plus, it tells you the functional role of that chord in the key—is it setting up movement or resolving tension? Because Vinkius hosts this MCP, your agent can access these deep music theory tools alongside everything else in their catalog, letting you focus purely on composition.


## Tools

### determine_harmonic_role
Identifies the functional role of a chord within a specific musical key, telling you its theoretical job in the piece.

### generate_voicings
Arranges a set of notes into structured 'closed' or 'open' textures for composition.

### get_chord_inversions
Calculates all possible ways to stack the same chord, determining which note acts as the bass point.

### parse_chord_string
Breaks down any standard chord name into its constituent root notes and intervals for analysis.

## 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

### Analyze Chord Structure
Converts a standard chord name (like Cmaj7) into its core notes and intervals.

### Determine Harmonic Function
Identifies the specific theoretical role of a chord within a given musical key.

### Calculate Note Permutations
Generates every possible way to arrange a set of notes, allowing you to change which note acts as the bass.

### Arrange Musical Textures
Builds specific sounding arrangements of notes, choosing between open or closed voicing styles.

## Use Cases

### Composing a Jazz Chord Progression
The composer needs to write a chord that resolves smoothly but maintain tension. They ask their agent to analyze the progression and use determine_harmonic_role, which confirms the target chord is functioning as a V7 (dominant). The agent then uses generate_voicings to create an open voicing perfect for the desired brass sound.

### Analyzing Classical Music Theory
A music student needs to prove that a specific sequence of notes represents all inversions. They input the chord and use get_chord_inversions, which immediately outputs root position, first inversion, and second inversion, allowing them to build their academic argument instantly.

### Creating Background Underscore
The sound designer needs a simple, rich-sounding harmonic bed. They use parse_chord_string on the source material's primary chord and then feed that data into generate_voicings to create a closed voicing that sounds dense but controlled.

### Reviewing Song Structure
The producer needs to check if the bridge section deviates harmonically from the verse. They use determine_harmonic_role on the suspected chords, which highlights that the bridge chord temporarily shifts the functional role of the key, guiding a structural change.

## Benefits

- Eliminate manual chord decomposition. Instead of looking up a chart, using parse_chord_string instantly breaks down any complex chord name into its core notes and intervals.
- Master voice leading by checking every permutation. The get_chord_inversions tool calculates all possible arrangements, letting you see exactly how the bass changes across different chords without manual calculation.
- Improve texture control with specific voicings. Generate an open voicing or a closed voicing using generate_voicings to give your composition distinct sonic space and body.
- Understand musical grammar instantly. Determine harmonic role tells you if a chord is acting as a tonic, dominant, or subdominant in the key, making arrangement decisions faster than ever.
- Stop guessing about note spacing. This MCP provides accurate, structured data for advanced music theory tasks, giving you reliable results every time you need to compose.

## How It Works

The bottom line is you get highly structured musical data that tells you not just what notes are present, but how they function theoretically.

1. You provide the MCP with a chord name (e.g., F#m) or a set of notes.
2. The tool processes this input, calculating all related theoretical data, such as its functional role in a key or all possible inversions.
3. Your agent receives structured output: detailed component parts, specific voicings, and harmonic labels ready for composition.

## Frequently Asked Questions

**How does the Chord Constructor MCP handle complex chords?**
The system uses parse_chord_string to break down any notation, no matter how complex. It isolates the root and all constituent intervals so you can analyze them piece by piece.

**Can I use get_chord_inversions for non-triad chords?**
Yes, it calculates inversions based on a provided set of notes. You feed it the full chord data (not just three notes), and it finds all valid permutations.

**What is the difference between open and closed voicing using generate_voicings?**
Open voicing spreads the notes out widely, giving a spacious sound. Closed voicing keeps the notes closer together, creating a denser texture, allowing you to choose the right sonic impact.

**Does determine_harmonic_role only work on major keys?**
No, it identifies the functional role of a chord within any specified musical key. It handles minor and modal analysis equally well.