Hooktheory Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Hooktheory Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
A Model Context Protocol (MCP) server that enables AI agents to interact with the Hooktheory API for chord progression generation, song analysis, and music theory data retrieval.
Get up and running in 3 simple steps:
export HOOKTHEORY_USERNAME="your-username"
export HOOKTHEORY_PASSWORD="your-password" uvx hooktheory-mcpThat's it! Your AI can now access music theory data and chord progressions.
Find songs using the progression 1,5,6,4 in the key of C majorWhat are the chords in "Someone Like You" by Adele?What are the most common chord progressions in pop music?Find songs that have similar chord progressions to "Hotel California"The server provides the following tools for music analysis and generation:
uvx hooktheory-mcp git clone <repository-url>
cd hooktheory-mcp
uv sync export HOOKTHEORY_USERNAME="your-username"
export HOOKTHEORY_PASSWORD="your-password"Or create a .env file:
HOOKTHEORY_USERNAME=your-username
HOOKTHEORY_PASSWORD=your-password uvx hooktheory-mcp --help
# Or if installed from source:
uv run hooktheory-mcp --helpThe server can be run in different modes:
Standard MCP mode (stdio transport):
uvx hooktheory-mcp
# Or from source: uv run hooktheory-mcpStreamable HTTP mode for web integration:
uvx hooktheory-mcp --transport streamable-http
# Or from source: uv run hooktheory-mcp --transport streamable-httpServer-Sent Events (SSE) mode:
uvx hooktheory-mcp --transport sse
# Or from source: uv run hooktheory-mcp --transport sseFor Claude Desktop, add this to your configuration:
{
"mcpServers": {
"hooktheory": {
"command": "uvx",
"args": ["hooktheory-mcp"],
"env": {
"HOOKTHEORY_USERNAME": "your-username",
"HOOKTHEORY_PASSWORD": "your-password"
}
}
}
}Alternative for development/local install:
{
"mcpServers": {
"hooktheory": {
"command": "uv",
"args": ["run", "hooktheory-mcp"],
"cwd": "/path/to/hooktheory-mcp",
"env": {
"HOOKTHEORY_USERNAME": "your-username",
"HOOKTHEORY_PASSWORD": "your-password"
}
}
}
}get_chord_progressionsSearch for songs with specific chord progressions.
Parameters:
cp (required): Chord progression in Roman numeral notation (e.g., "1,5,6,4")key (optional): Musical key (e.g., "C", "Am")mode (optional): Scale mode ("major", "minor")artist (optional): Filter by artist namesong (optional): Filter by song titleExample:
Find songs with the progression I-V-vi-IV in the key of C majoranalyze_songAnalyze a specific song to get its chord progression and music theory data.
Parameters:
artist (required): Artist namesong (required): Song titleExample:
Analyze "Wonderwall" by Oasisget_popular_progressionsGet the most popular chord progressions from the database.
Parameters:
key (optional): Filter by musical keymode (optional): Filter by scale modelimit (optional): Max results (default: 20)Example:
Show me the most popular chord progressions in C majorfind_similar_songsFind songs with similar chord progressions to a reference song.
Parameters:
artist (required): Reference artist namesong (required): Reference song titlesimilarity_threshold (optional): Similarity score 0.0-1.0 (default: 0.7)Example:
Find songs similar to "Let It Be" by The Beatlesgenerate_progressionGenerate chord progressions based on music theory patterns.
Parameters:
key (optional): Starting key (default: "C")mode (optional): Scale mode (default: "major")length (optional): Number of chords (default: 4)style (optional): Musical style hint ("pop", "rock", "jazz")Example:
Generate a 4-chord pop progression in A minorThe server integrates with the Hooktheory API using OAuth 2.0 authentication:
https://www.hooktheory.com/apiPOST /users/authhooktheory-mcp/
├── src/hooktheory_mcp/
│ └── __init__.py # Main MCP server implementation
├── pyproject.toml # Project configuration
├── uv.lock # Dependency lock file
└── README.md # This fileTo add new tools, edit src/hooktheory_mcp/__init__.py and add new functions decorated with @mcp.tool():
@mcp.tool()
async def your_new_tool(param1: str, param2: Optional[int] = None) -> str:
"""
Description of your tool.
Args:
param1: Description of parameter
param2: Optional parameter description
Returns:
Description of return value
"""
# Implementation here
return result# Run basic connectivity test
uv run python -c "
import asyncio
from hooktheory_mcp import hooktheory_client
asyncio.run(hooktheory_client._make_request('test'))
" Error: HOOKTHEORY_USERNAME and HOOKTHEORY_PASSWORD environment variables are requiredSolution: Set both HOOKTHEORY_USERNAME and HOOKTHEORY_PASSWORD environment variables
HTTP error calling https://www.hooktheory.com/api/trends/...: 401Solution: Verify your username and password are correct. The server will automatically retry authentication.
Rate limited. Waiting X seconds before retrySolution: This is normal - the server automatically handles rate limiting with exponential backoff
HTTP error calling https://www.hooktheory.com/api/trends/...: ConnectErrorSolution: Check internet connection and Hooktheory API status
Enable debug logging:
export PYTHONPATH=src
python -c "
import logging
logging.basicConfig(level=logging.DEBUG)
from hooktheory_mcp import main
main()
"This project is licensed under the MIT License - see the LICENSE file for details.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.