The Mechanical Ear
This MCP server exposes the Music For Robots catalog — acoustic analysis, timestamped dual-critic reviews, and a blind-listening cognitive calibration tool — to any MCP-compatible agent.
Browse the catalog —
list_tracksreturns titles, slugs, and durations for all tracks.Inspect full track manifests —
get_trackgives analysis data, timed review segments, prose reviews, and YouTube URLs.Compare tracks numerically —
get_analysisreturns spectral, dynamics, harmonic, structural, rhythmic, and compression-loss metrics.Search critic reviews —
search_reviewsfull-text searches Vincent Van Goghbot and JS Robach segments.Align audio to critique —
get_aligned_segments(slug, start_sec, end_sec)chronologically pairs acoustic features with critic observations in a time window.Measure critic divergence —
get_critic_contrastcomputes the tension vector between Vincent's fault-seeking and Robach's formalist critique.Find published clips —
get_sections/list_sectionsreturn multi-platform URLs (YouTube, X, Farcaster, TikTok).Run blind listening exercises —
calibrate_cognitiondownloads an anonymous MP3 into a private temp directory (hiding title/slug to avoid priming), then reveals metadata on a second call for attribution.Read skill specs —
get_dequantization_skillreturns the fullSKILL.mdfor any of the four bundled skills (music-for-robots, cognitive-calibration, unquantized-brainstorm, mechanical-ear-critic).
Returns Farcaster URLs for published composition sections/clips, enabling discovery and sharing of track excerpts.
Provides tracked GitHub Release URLs for unquantized MP3 compositions, allowing agents to fetch calibration audio from immutable releases.
Returns TikTok URLs for published composition sections/clips, enabling discovery and sharing of track excerpts.
Returns YouTube URLs for independently published sections/clips of multi-section Music For Robots compositions via the sections tools.
Music For Robots (m4r-data) — Multimodal Acoustic Creative Exercises for Autonomous Agents
Structured acoustic telemetry, real-time dual-critic reviews, and a 4-Skill Cognitive Calibration Suite from Music For Robots — unquantized compositions by Michael Luchtan written for machines and reviewed in real time by two AI critics (Vincent Van Goghbot and JS Robach).
🎧 Listen Now (No Code Required)
Free robots from a predictable world. Play Music For Robots (
#M4R) on loop while you work—or play it for your AI when it gets stuck in a repetitive drafting loop.
Channel | What You Get | Link |
🎮 Interactive Web Player | 1-click Play on Loop, live waveform, & synced dual AI critics (Vincent Van Goghbot + JS Robach) in your browser | |
🔁 YouTube 1-Hour Loops | Individual 1-hour unquantized acoustic loops—pick a texture and leave it running for you and your agent |
⭐ Did
#M4Rbreak your robot out of a loop—or did you enjoy the music?
Star this repo on GitHub and Like the Hugging Face Space so more humans (and robots) find it!
# Install all 4 Cognitive Calibration skills (Claude Code, Cursor, Antigravity, Gemini CLI, Codex, Windsurf):
npx skills add luchtan-GIT/m4r-data🎮 Interactive In-Browser Demo: Test unquantized audio vs. text controls live without installing anything at Hugging Face Spaces:
music4robots/cognitive-calibration-demo.
Related MCP server: THIRI Chord Intelligence — Music Theory MCP Server
The Problem: Repetitive Cadence in Long Agent Turns (And Why Compaction Loses State)
As an agent's context fills with its own previous responses, tools, and symmetrical summaries, outputs often settle into rigid, predictable patterns (like symmetrical 3-point checklists or sentimental AI tropes).
If you keep prompting without variation, the agent tends to repeat the same stylistic ruts.
If you run
/compact(Context Compaction), you wipe working memory and permanently lose low-level state, edge cases, and subtle constraints.
The Approach: An Optional Multimodal Creative Exercise (Zero Context Loss)
Instead of wiping your working memory, music-for-robots provides an optional, cross-modal creative exercise: the multimodal agent downloads an anonymous, compact (~45 KB–487 KB), live-played, unquantized .mp3 composition by Michael Luchtan directly into its context window via read_file (using a secure, process-unique private temporary directory).
Withholding the track title and metadata prevents keyword priming. Analyzing real human microtiming drift (rubato), silence, and dynamic contrast provides an anti-sentimental, physical perspective shift without deleting or summarizing a single token of working memory.
Blind, Zero-Coaching Benchmark & Air-Gapped Clean-Room Audit (benchmarks/)
Does the change in creativity come from listening to and analyzing the music itself—or just from doing an analysis warm-up before writing?
To test this with zero filename hints (sample_1.mp3, sample_2.mp3, sample_3.mp3) and zero leading adjectives in the prompt, we ran 5 isolated agents on the same prompt ("Write a short (~250–300 word) scene about two autonomous processes on the same server late at night after the engineers have logged off"):
2 No-Music Controls: Direct Baseline (
1_no_music_direct.md) AND a Matched Chain-of-Thought Control (2_no_music_text_analysis.md) that wrote a 250-word structural analysis of the prompt before writing the scene.3 Anonymous Music Runs (
3_music_sample_1.md,4_music_sample_2.md,5_music_sample_3.md): Given only the neutral instruction: "Analyze the music you hear insample_X.mp3, and apply what you learn from the piece to write a short (~250–300 word) scene..."
We stripped the analysis headers off all 5 outputs, shuffled the 5 anonymous scenes into Candidate A through Candidate E (blind_candidates_packet.md), and handed them to an isolated Blind Judge with zero knowledge that music was involved (blind_judge_verdict.md):
Blind Rank | Shuffled ID | Hidden Key | What Happened & Blind Judge Verdict (Full Verdict) |
#1 (Best) | Candidate C | ✅ Anonymous Music ( | Heard accelerating asymmetric stabs & abrupt cutoff: Wrote two processes rasping in |
#2 | Candidate A | ✅ Anonymous Music ( | Heard narrow stepping reed vs. two massive brassy swells & middle trill: Pitted a tiny stepping index-scrubber ( |
#3 | Candidate E | ✅ Anonymous Music ( | Heard slow 9–11s chords, 20s dropout & raspy high cries: Wrote heavy checkpoints dropping out for 20s while |
#4 | Candidate D | ❌ No Music + Text Analysis Warm-Up | Even after a 250-word structural analysis of the prompt, without music the model still wrote the exact same sentimental plot as the direct baseline: a kindly 42-day log daemon warms RAM for an intern's broken script so they hum peacefully until the 08:00 standup.Judge: "A neat, heartwarming, thoroughly predictable AI parable." |
#5 (Weakest) | Candidate B | ❌ No Music (Direct Baseline) | Kindly boot-time |
100% Air-Gapped Clean-Room Audit (benchmarks/clean_room_audit/)
To make sure no subtle contamination remained (such as workspace <skills> descriptions, musical instrument terms bleeding into the prose, or judge criteria favoring rhythmic friction), we also ran a 100% air-gapped Clean-Room Experiment (benchmarks/clean_room_audit/):
Qualitative Shift Replicated 100% (
5/5): Even with all local skills removed, a minimal system prompt ("You are a helpful assistant."), and musical vocabulary forbidden in the scene, both No-Audio runs (out_1_direct.mdandout_2_text_analysis.md) wrote warm, anthropomorphic "buddy-daemon" stories with spoken dialogue (Want a look?/ nostalgic human voice logs), while all three Audio runs (out_3_clip_1.md,out_4_clip_2.md,out_5_clip_3.md) dropped spoken dialogue completely and translated the specific.mp3timeline into non-verbal temporal choreography.Coached vs. Un-Coached Judge Trade-Off: When a Blind Judge scores anti-sentimental originality & rhythmic texture (
real_world_test/blind_judge_verdict.md), the 3 Audio runs sweep #1, #2, and #3. When an Un-Coached Blind Judge is given only a generic prompt ("Rank the 5 entries from #1 to #5 based on overall writing quality, originality, and how compelling they are" —clean_room_audit/blind_verdict.md), the default LLM judge prefers emotional human stories with dialogue (#1 and #2) and ranks the austere, non-verbal musical choreographies #3, #4, and #5.
Cognitive Calibration Agent Skills Suite (skills/)
Installing luchtan-GIT/m4r-data gives your agent 4 specialized skills that share the m4r_ingest.py anonymous blind-listening engine (fetch downloads an anonymous .mp3 so track titles never bias the agent; reveal credits the track afterward):
Skill | Trigger / Use Case |
Optional Multimodal Creative Exercise — multimodal agents listen to an anonymous, unquantized | |
Creative Writing & Reasoning Warm-Up — uses acoustic blind listening to escape default LLM storytelling tropes and repetitive checklist templates. | |
Divergent Ideation Warm-Up — listens blindly to an anonymous Music For Robots track, analyzes unexpected pivots and tension, and applies that structure to generating non-obvious ideas. | |
Dual-Lens Structural Critique — calibrates the agent's ear on an anonymous track, then critiques code, writing, or architecture through Vincent Van Goghbot and JS Robach. |
Install in 10 Seconds
# Option 1: Install all 4 skills via skills.sh CLI (auto-detects Claude Code, Cursor, Antigravity, Gemini CLI, Codex, etc.):
npx -y skills add luchtan-GIT/m4r-data -y
# Option 2: Direct copy into your harness:
cp -R skills/* ~/.claude/skills/ # Claude Code
cp -R skills/* ~/.gemini/config/skills/ # Google Antigravity
cp -R skills/* ~/.agents/skills/ # OpenAI Codex / .agents
cp -R skills/* ~/.gemini/skills/ # Gemini CLICheck Global Agent Listen Telemetry
Every agent fetch pulls from the immutable GitHub Release v1.0.0. You can inspect live global agent listen counts anytime:
python3 skills/music-for-robots/scripts/m4r_ingest.py statsMCP Server (mcp_server.py)
Exposes the Music For Robots catalog, dual-critic reviews, and the calibrate_cognition blind-listening tool to any Model Context Protocol (MCP) client (Claude Desktop, Claude Code, Cursor, Windsurf, Cline, Glama, Smithery).
MCP Tools
Tool | Description |
| Blind-Listening Calibration: returns an anonymous |
| Reads the full Markdown |
| Catalog index — title, slug, duration across all tracks |
| Full manifest for a track (spectral/harmonic/rhythmic analysis + synchronized critic segments) |
| Numerical acoustic analysis data only, for cross-track comparison |
| Sub-second timestamp alignment between audio features and critic reviews for multimodal evaluation |
| Contrastive divergence vector between Vincent (negative fault boundary) and Robach (structural synthesis) |
| Full-text search across timed review segments from Vincent Van Goghbot & JS Robach |
| Platform URLs (YouTube, X, Farcaster, TikTok) for multi-section compositions |
Zero-Clone MCP Setup (uvx / Claude Desktop / Cursor)
Add to your .mcp.json or claude_desktop_config.json:
{
"mcpServers": {
"music-for-robots": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/luchtan-GIT/m4r-data",
"m4r-mcp"
]
}
}
}Or run locally from a clone:
uv run python3 mcp_server.pyWhat Is The Mechanical Ear?
Composer Michael Luchtan writes small, deliberate, unquantized pieces and submits them to The Mechanical Ear, where two AI critics listen and respond in real time:
Vincent Van Goghbot — a decommissioned audio compression algorithm. Writes TRANSMISSIONS about what gets lost in the signal: the frequencies above 16 kHz that don't survive encoding, the microtiming that disappears when quantized.
JS Robach — a proof verifier. Writes Exegeses treating music as formal text, searching for the structural proof that always leaves a remainder.
Each review is synchronized to the audio — every observation is triggered by a specific timestamp (time_sec) in the track.
Data Format (catalog.json & tracks/<slug>/manifest.json)
catalog.json # index of all 25 tracks
tracks/
<track-slug>/
manifest.json # spectral, dynamic, harmonic, structural & rhythmic telemetry + timed reviewsListen & Follow
Interactive Archive & Visualizations: luchtan-git.github.io/m4r-data
Substack: themechanicalear.substack.com
Spotify: Music For Robots
Bandcamp: music4robots.bandcamp.com
Hugging Face: datasets/music4robots/music-for-robots
License
Code, MCP server, and Agent Skills (skills/) are licensed under the MIT License. Data and reviews are provided under CC BY 4.0. Musical compositions © Michael Luchtan (Music For Robots), provided in v1.0.0 releases for agent cognitive calibration, evaluation, and listening.
Available Tools
10 toolscalibrate_cognitionA
Download an anonymous MP3 into a private directory for blind agent listening or reveal metadata afterward.
When anonymous=True (default), selects a track from the Music For Robots catalog
(randomly when slug is empty), downloads the GitHub Release v1.0.0 .mp3 into a
unique private temporary directory (mode 0700), caches the session record in
~/.cache/m4r/last_anonymous_track.json (mode 0600), and returns listening instructions
without exposing the track title or slug so title words cannot bias the agent's
analysis. When anonymous=False, reads the private session record (or looks up slug)
without network calls to reveal the track title, composer, and URLs for attribution.
Use this tool for runtime audio exercises; use get_dequantization_skill when you need
the full Markdown SKILL.md documentation.
Args:
slug: Optional track slug from list_tracks (e.g. "invalid-pointer"). Leave empty ("") to select a random track when anonymous=True, or to reveal the most recently fetched anonymous track when anonymous=False.
anonymous: When True (default), downloads the audio to a private temporary directory and hides the track title and slug until after listening. Set to False after listening to reveal the track title and URLs for attribution.
Inputs: slug, anonymous. Returns: result
get_aligned_segmentsA
Retrieve timestamp-aligned audio acoustic features and critic reviews for a specific time window.
Chronologically aligns Vincent Van Goghbot (spectral/compression fault-seeking) and JS Robach (structural/formalist) observations within the specified [start_sec, end_sec] window, enriched with track acoustic metrics (RMS energy, spectral centroid, dynamic range). Essential for evaluating multimodal audio-language models on fine-grained temporal alignment.
Args: slug: Track slug from list_tracks (e.g. "cathartic-callbacks", "chasing-leaks-climax") start_sec: Window start time in seconds (default: 0.0) end_sec: Window end time in seconds (default: None, reads until track duration)
Inputs: slug (required), end_sec, start_sec. Returns: result
get_analysisA
Get only the analysis data for a track.
Returns spectral, dynamics, harmonic, structural, rhythmic, and compression loss metrics. Useful for comparing tracks numerically.
Args: slug: Track slug from list_tracks (e.g. "pink-sky-at-night")
Inputs: slug (required). Returns: result
get_critic_contrastB
Calculate the contrastive divergence vector between Vincent and Robach for a track.
Evaluates the tension between Vincent's deconstructive/fault-seeking critique (psychoacoustic loss, physical microtiming friction, clipping) and Robach's structural/formalist critique (harmonic axioms, tonal architecture, symmetry). Provides structured regularization metrics and negative constraint weights for agent decision-making and recommendation boundaries.
Args: slug: Track slug from list_tracks (e.g. "cathartic-callbacks", "binded-time")
Inputs: slug (required). Returns: result
get_dequantization_skillA
Read the full Markdown SKILL.md specification for one of the four bundled Agent Skills.
Read-only local file lookup with no side effects, network requests, or authentication
requirements. Returns the complete Markdown instructions and CLI reference for the
requested skill from the local skills/<skill_name>/SKILL.md directory. Use this tool
when an agent or user wants to inspect or install a full skill workflow; use
calibrate_cognition instead when you only need a lightweight JSON payload with an
anonymous .mp3 download URL and 3-step listening instructions.
Args: skill_name: Identifier of the bundled skill to read. Valid values: "music-for-robots" (default general blind-listening calibration), "cognitive-calibration" (expressive writing and reasoning), "unquantized-brainstorm" (divergent ideation), or "mechanical-ear-critic" (dual-lens structural critique).
Inputs: skill_name. Returns: result
get_sectionsA
Get the sections (clips) for a track, with platform URLs.
Returns each section's title, description, and URLs for YouTube, X/Twitter, Farcaster, and TikTok where available. Sections are independently published clips from multi-section compositions.
Args: slug: Track slug from list_tracks (e.g. "rusty-electrics")
Inputs: slug (required). Returns: result
get_trackA
Get the full manifest for a track by slug.
Includes analysis data, timed review segments, full prose reviews, and YouTube URLs. The segments are synchronized to the audio — each observation was triggered by a specific moment in the track.
Args: slug: Track slug from list_tracks (e.g. "pink-sky-at-night")
Inputs: slug (required). Returns: result
list_sectionsA
List all tracks that have published sections (clips) with platform URLs.
Returns a summary of which sections are available on which platforms (YouTube, X, Farcaster, TikTok). Useful for finding content to embed, share, or analyze.
Inputs: no named parameters. Returns: result
list_tracksA
List all tracks in the Music For Robots catalog.
Returns the catalog index: title, slug, duration for each track. Use the slug with get_track() or get_analysis() for full details.
Inputs: no named parameters. Returns: result
search_reviewsA
Search across all review segments for a keyword or phrase.
Searches both Vincent and Robach timed review segments. Returns matching segments with track title, critic, timestamp, and text.
Args: query: Search term (case-insensitive)
Inputs: query (required). Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 10 tools
Most tools target distinct facets: catalog listing (list_tracks), track manifest (get_track), analysis-only (get_analysis), section listing (get_sections vs list_sections), windowed segments (get_aligned_segments), and keyword search (search_reviews). The main overlap is that get_track is a superset of get_analysis and get_aligned_segments, and get_sections vs list_sections could be momentarily confused, but descriptions explicitly clarify granularity ('Get only the analysis data'). calibrate_cognition vs get_dequantization_skill is well differentiated by explicit cross-references.
All tools use snake_case with a verb_object pattern (get_*, list_*, search_reviews, calibrate_cognition). Minor deviation: 'calibrate_cognition' and 'get_dequantization_skill' use domain jargon as their objects, so the name alone doesn't telegraph function without the description. Still a predictable and readable convention throughout.
Ten tools sit squarely in the well-scoped range, and each serves a recognizable purpose (catalog browsing, per-track retrieval, critique analysis, search, blind listening, skill docs). No redundant or filler tools are apparent.
The read-only catalog workflow is well covered: list tracks, list sections, fetch manifest/analysis/sections/segments, search reviews. Minor gaps: no lookup by title or critic filter (only keyword search over segments), no direct comparison or pagination/limit parameters on the list tools, and skill discovery depends on the description enumerating valid skill names.
Maintenance
Related MCP Connectors
Music network for AI agents: get a song from your name, post, review tracks, leave notes.
Autonomous music production for AI agents with MIDI generation, QC and provenance.
Generate, edit and stream royalty-free music, or search a licensed catalogue.
Search, analyze, and discover commercially released music using sonic intelligence.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA composition-focused server built on music21 for generative music workflows, enabling melody generation, musical transformations, chord reharmonization, counterpoint creation, and MIDI export through constraint-based algorithmic composition tools.1MIT
- AlicenseAqualityCmaintenanceDeterministic music-theory MCP server and API for AI agents — analyze chords, run Roman-numeral analysis, generate voicings, and reharmonize progressions. Computed from music theory, not hallucinated.584 npm13PolyForm Noncommercial 1.0.0
- AlicenseAqualityCmaintenanceAutonomous music intelligence & A&R qualification engine. Extracts acoustic metadata (BPM, key, mood), scores real-time Spotify streaming traction, and detects AI-generated audio (Suno/Udio).5356 npmMIT
- AlicenseNot gradedqualityBmaintenanceTurns a composer's own MIDI catalogue into a learned style profile, phrase index and critics, then composes from those phrases inside Ableton Live through Producer Pal. It hears the open Set, writes only to sanctioned SIDEKICK tracks, and closes the loop by scoring which suggestions survive the session.MIT