Music Engine No GUI· MCP + CLI

One player,
for music and AI assistants

Oh my god — just listen. mygod has no UI; you talk to it through your assistant or your terminal. Misremember a song title? It still finds it across 4 online sources and your local library, and plays it. Multiple assistants, still just one player. Three minutes to install, all data stays on your machine. Download now.

4Online music sources, one unified search
1Local library — just register a folder
19Capabilities your assistant can call
1Player instance shared across clients
FEATURES

Less of everything, except the music

No switching between apps, and no new API to learn just to play a song.

◎

One search, every source

One search returns results from multiple online sources and your local library, each labeled with its source and playability — no more trying each platform one by one.

✦

Native assistant integration

Exposes its capabilities as a standard MCP server (stdio). Assistants that support MCP — Trae, Codex, WorkBuddy and others — just need one path in their config.

◫

One player, shared by all

Only one player instance runs on your machine. Multiple assistants and terminals connect at once and read/write the same queue, progress and volume without interrupting each other.

⌂

Local music library

Register a folder and it indexes automatically, with incremental rescans. Local files are read directly — no copying, no transcoding, no uploading.

♫

Audio quality & effects

Four quality tiers — standard / high / higher / lossless — with automatic fallback. EQ presets, night mode, enhancement and loudness normalization are all saved with the session.

↻

Session recovery & self-healing

Restarts where you left off, with the same queue and position. Unplayable tracks are skipped, and a stream with no data for 15 seconds is marked failed — playback never freezes on loading.

USE CASES

Say one sentence. It handles everything in between.

What used to mean "search the web, then search the player, then retry with different keywords" now takes one sentence: your assistant searches, compares, builds the queue and plays — all in one go.

BEFORE
  • Misremember the title, hunt for clues in a search engine
  • Take the title and search again inside the player
  • No results? Try another round of keywords
  • Want a playlist in the same style? Pick songs one by one
→
NOW
  • Say whatever fragments you remember (lyrics, scene, rough title)
  • The assistant searches across sources, compares artist and duration, then plays
  • If a version can't play, it switches sources automatically
  • One "like these artists" builds and plays the whole queue

① You only remember one line — and got the title wrong

ALL YOU SAY

Play that song that goes 'the evening wind blows down the old alley' — I think it's called "When the Wind Rises", but I might have the title wrong.

WHAT THE ASSISTANT DOES

  1. Searches several sources using the lyric fragment and the approximate title;
  2. Compares candidates by artist, duration and release info, ruling out same-name songs and covers;
  3. Confirms the target, builds the queue and plays it, adding "I took it to mean this one".
Playing the moment you open itBefore: search → copy title → search in player → 3 rounds of trial and error

② A playlist "similar to these artists"

ALL YOU SAY

Find artists with a style close to these three, put together a playlist of about 20 tracks, and start playing.

WHAT THE ASSISTANT DOES

  1. Looks up each artist, opens their pages for popular tracks and similar-artist recommendations;
  2. De-duplicates, filters by playability, and fills up to the target count;
  3. Enqueues the whole batch and plays it; a single "give me another batch" replaces it later.
20 tracks, playing nowBefore: search each one → pick manually → build a playlist

③ Missing a few tracks? Fill in the gaps

ALL YOU SAY

A few tracks on this album are missing. Find playable versions elsewhere and fill them in, keeping the original order.

WHAT THE ASSISTANT DOES

  1. Matches title and artist against the remaining sources and picks equivalent playable versions;
  2. Keeps the album order, replacing or skipping unplayable entries;
  3. Returns to the snapshot after playback starts and tells you which ones were substitutes.
Same order, full albumBefore: switch platform → search each track → reorder by hand

④ Local oldies mixed with today's charts

ALL YOU SAY

Play the demo on my computer first, then today's chart, and loop the list.

WHAT THE ASSISTANT DOES

  1. Registers and searches the local music folder to find that demo;
  2. Fetches the chart tracks and merges them with the local track into one queue;
  3. Sets list loop and starts playback; local files are read directly, with no copying or transcoding.
One queue across sourcesBefore: local player + online client, half the music each

⑤ Change the mood without stopping the music

ALL YOU SAY

This one isn't right. Swap in something similar — don't stop.

WHAT THE ASSISTANT DOES

  1. Records the taste feedback for the current track and fetches a fresh batch from radio;
  2. Filters out unplayable entries and appends them to the end of the queue;
  3. Playback never stops — the next track picks up immediately.
Seamless continuationBefore: leave to find a song → hit play again

⑥ Forgot where you left off

ALL YOU SAY

Which track was I on? Resume from there.

WHAT THE ASSISTANT DOES

  1. Reads the playback snapshot: current track, queue position, progress, loop mode and volume;
  2. Resumes from the pause point, with progress continuing from the original position;
  3. Also tells you how many tracks are left in the queue.
Resumes where you stoppedBefore: reopen the client → find the song again
DOWNLOAD

Download mygod

Pick your platform and the components you want, then generate a request. An email sends your selection to the author, who replies with the matching binaries or download instructions. macOS (Apple Silicon) is prebuilt; other platforms are built on request.

1 · Choose your platform

2 · Choose components

3 · Send the request

EMAIL PREVIEW
—
Send request by email →

The email goes to aosfather@gmail.com with the subject and body filled in from your choices. You can also copy the address and send it manually. To build it yourself, see below.

Want to build it yourself?

The full capability list, behavior rules and error handling are all in the PRD. Hand it to your AI coding assistant, implement the numbered requirements one by one, and build both binaries on your own platform.

  1. Open the PRD and decide the scope (all P0 items, or just the capabilities you need).
  2. Have your AI coding assistant use FR-01 … FR-27 as its task list, implementing and self-testing each one; shared rules (R1–R4) apply throughout.
  3. Produce mygod-mcp and mygod-cli locally, then add them to your PATH as shown below.
Open the PRD (prd.html) →
INSTALL

Install: three minutes, two binaries

mygod needs no background service: all data (sessions, indexes, cache) stays on your own machine.

Get the two binaries

mygod-mcp — for MCP-capable AI assistants; mygod-cli — for the command line and scripts.

Target platform: macOS (Apple Silicon). The two files are independent — install whichever you use, or both.

Put them on your PATH and make them executable

# Put them in your personal bin directory (create it first if needed)
mkdir -p ~/.local/bin
mv mygod-mcp mygod-cli ~/.local/bin/
chmod +x ~/.local/bin/mygod-mcp ~/.local/bin/mygod-cli

# Make sure it's on your PATH (zsh users: add to ~/.zshrc)
export PATH="$HOME/.local/bin:$PATH"

If your files live elsewhere, replace /Users/you/.local/bin with the real directory in all configs below.

Verify the install

# CLI: should print engine version, available sources and login status
mygod-cli status

# Assistant side: should print the MCP handshake, then wait on stdin
mygod-mcp

The first run starts a persistent engine; from then on, every entry point connects to the same player instance.

MCP SERVER

Connect an assistant: give it the path, it configures the rest

mygod-mcp is a local stdio MCP server: no ports, no server, no network permissions. To an assistant it's just another local tool.

What kind of server is it

PropertyValueNotes
TransportstdioTalks to the assistant over stdin/stdout — a local process-to-process conversation
StartupLaunched by the assistantThe assistant runs the configured path when it starts, on demand
ArgumentsNoneAn empty args array is enough; it manages the persistent engine itself
ConcurrencyMulti-client safeMultiple assistants can connect without fighting over the player; latecomers join the same instance

Option 1: let the assistant configure itself (recommended)

Just say this in the conversation — the assistant writes the MCP config and verifies the handshake itself:

TRAE

"Add an MCP server named mygod, type stdio, command path /Users/you/.local/bin/mygod-mcp, no arguments. Then call status once to verify."

CODEX

"Add mygod to the MCP config: stdio type, command /Users/you/.local/bin/mygod-mcp, no args. Then list the tools and confirm scan_local shows up."

WORKBUDDY

"Connect the local MCP server mygod, type stdio, binary at /Users/you/.local/bin/mygod-mcp. Once configured, read the playback state once."

Replace the path with your own. The same wording works with any MCP-capable assistant.

Option 2: write the config by hand

Generic mcpServers form (for assistants using JSON config, such as Trae):

{
  "mcpServers": {
    "mygod": {
      "type": "stdio",
      "command": "/Users/you/.local/bin/mygod-mcp",
      "args": []
    }
  }
}

For assistants using TOML config (such as Codex):

[mcp_servers.mygod]
command = "/Users/you/.local/bin/mygod-mcp"
args = []
COMMAND LINE

No MCP support? The CLI manages playback just as well

Any terminal, script, hotkey tool or scheduled job can call mygod-cli. Output is structured so downstream programs can parse it.

Command reference (the full mygod-cli help output)

mygod-cli — command-line interface to the music engine

  status                        Engine version, available sources, login status
  search <keyword> [--kind k] [--source s] [--limit n]
  play <keyword> [--source s] [--n i] [--yes]
       play --tracks id,id | --playlist id | --album id | --radio mode
  state                         Now playing and what's next
  next | prev | pause | toggle | resume | radio_exit
  volume <0-1> | eq <preset> | repeat <off|all|one> | shuffle [on|off]
  lyrics [id] [--source s]      With no id, uses the current track
  catalog <kind> <id> [--source s] [--tab t] [--limit n] [--offset n]
  discovery <kind> [--source s] [--limit n]
  radio [mode]                  Personal radio (default / familiar / explore)
  login-qr                      QR-code login (for sources that need it)
  help                          Show this help

  sources: run status to see available source IDs (the first is used by default)
  Starting with no arguments enters interactive mode; leaving it does not stop playback

Command details

CommandDescriptionKey options
statusEngine version, available sources and each source's login status—
searchSearch by keyword, returning results without playing--kind result type; --source source; --limit count
playSearch and play, or build a queue directly from IDs / playlist / album / radio--n play the nth result; --yes skip confirmation; --tracks / --playlist / --album / --radio
stateCurrent track, progress, queue, volume, loop and shuffle—
next / prevSkip to the next / previous track—
pause / resume / togglePause, resume, or switch between the two—
radio_exitLeave radio continuation; the queue no longer extends itself—
volumeSet volume, shared across all entry pointsFloat between 0-1
eqSwitch EQ preset; flat turns it offPreset name
repeatLoop mode: off / list / single trackoff | all | one
shuffleToggle shuffle; with no argument it turns onon | off
lyricsTimed / translated / word-by-word lyricsid track ID; --source source
catalogOpen an artist, album, playlist or user pagekind and id; --tab, --limit, --offset
discoveryDiscovery page: daily picks, recommended playlists, featured, charts, recently playedkind; --limit
radioGenerate a continuous stream matched to your tastedefault / familiar / explore
login-qrQR-code login for sources that need an account; credentials stay local—
helpPrint the command table—

Common examples

# Search and see which versions are playable
mygod-cli search "evening wind" --limit 10

# Play the 2nd search result directly
mygod-cli play "evening wind" --n 2 --yes

# Build a queue from track IDs, starting at the first
mygod-cli play --tracks 1001,1002,1003

# Open a playlist and enqueue it all
mygod-cli play --playlist 7788

# Loop the list + shuffle, then set volume to 60%
mygod-cli repeat all && mygod-cli shuffle on && mygod-cli volume 0.6

# See what's playing now
mygod-cli state
FAQ

Frequently asked questions

If I run several assistants, will two players be playing?

No. mygod allows only one player instance on your machine: the first connection owns the engine, the rest join as clients and read/write the same queue and progress. Switch tracks from any entry point and every other client's next snapshot is already up to date.

Do I have to log in?

No. Some sources allow guest search and playback; restricted capabilities are flagged at search time, so you won't hit a failure only after pressing play. For more capabilities, scan the QR code with mygod-cli login-qr — credentials stay on your machine.

How do I use local music?

Two ways: on the assistant side, call scan_local with add to register a folder and build the index — local files then become searchable just like online tracks. Without an assistant, play a known path directly from the CLI, e.g. mygod-cli play --tracks /Users/you/Music/a.mp3 --source local. Files are never copied or transcoded.

Where is my data stored? How do I clear it?

All in ~/.local/share/mygod: playback sessions, local indexes and cache. Delete the directory and it's a factory reset; deleting just the cache subdirectory only affects cached tracks, not your indexes or queues.

What if playback gets stuck loading?

It won't stay stuck. If a stream delivers no new data for 15 seconds, the track is marked failed and skipped. If the entire queue is unplayable, it stops and reports the reason instead of retrying forever.

Can it download songs?

No, and it never will. mygod only streams online playback and reads files already on your machine. Downloading, saving or redistributing tracks is not provided.