MCPcopy
hub / github.com/nukeop/nuclear

github.com/nukeop/nuclear @website@2.10.0 sqlite

repository ↗ · DeepWiki ↗ · release website@2.10.0 ↗ · compare 2 versions
1,590 symbols 4,964 edges 810 files 3 documented · 0%
README
<img alt="Nuclear Music Player"  srcset="packages/docs/.gitbook/assets/readme-banner.png">

Nuclear

Nuclear is a free, open-source music player without ads or tracking. Search for any song or artist, build playlists, and start listening.

Runs on Windows, macOS, and Linux.

Screenshots

Nuclear Music Player - Dashboard

Nuclear comes with multiple built-in themes:

Green theme Aqua theme Mint theme

Orange theme Red theme Violet theme

Search artists Search albums
Artist search Album search
Playlists Plugin store
Playlists Plugin store
Installed plugins Preferences
Installed plugins Preferences
What's new Log viewer
What's new Log viewer

Download

Grab the latest release for your platform from the Releases page.

Platform Formats
Windows .exe installer, .msi
macOS .dmg (Apple Silicon and Intel)
Linux .AppImage, .deb, .rpm, .flatpak

Features

  • Search for music and stream it from any source
  • Browse artist pages with biographies, discographies, and similar artists
  • Browse album pages with track listings
  • Queue management with shuffle, repeat, and drag-and-drop reordering
  • Favorites (albums, artists, and tracks)
  • Playlists (create, import, export, import from varous services)
  • Powerful plugin system with a built-in plugin store
  • Themes (built-in and custom CSS themes)
  • MCP server lets your AI agent drive the player
  • Auto-updates
  • Keyboard shortcuts
  • Localized in multiple languages

Plugins

Nuclear has a powerful plugin system now! Every functionality has been redesigned to be driven by plugins.

Plugins can provide streaming sources, metadata, playlists, dashboard content, and more. Browse and install plugins from the built-in plugin store, or write your own using the @nuclearplayer/plugin-sdk.

MCP

You can enable the MCP server in Settings → Integrations.

Then to add it to Claude Code:

claude mcp add nuclear --transport http http://127.0.0.1:8800/mcp

Codex CLI:

codex mcp add nuclear --url http://127.0.0.1:8800/mcp

OpenCode:

{
  "mcp": {
    "nuclear": {
      "type": "remote",
      "url": "http://127.0.0.1:8800/mcp"
    }
  }
}

Claude Desktop / Cursor / Windsurf:

{
  "mcpServers": {
    "nuclear": {
      "url": "http://127.0.0.1:8800/mcp"
    }
  }
}

The MCP is designed to be discoverable, but there's a skill you can load to get your AI up to speed: Nuclear MCP Skill

Development

Nuclear is a pnpm monorepo managed with Turborepo. The main app is built with Tauri (Rust + React).

Prerequisites

  • Node.js >= 22
  • pnpm >= 9
  • Rust (stable)
  • Platform-specific Tauri dependencies (see Tauri docs)

Getting started

git clone https://github.com/nukeop/nuclear.git
cd nuclear
pnpm install
pnpm dev

Useful commands

pnpm dev            # Run the player in dev mode
pnpm dev:remote     # Same, but binds Vite to 0.0.0.0 so you can open the remote control UI from other devices on your LAN
pnpm build          # Build all packages
pnpm test           # Run all tests
pnpm lint           # Lint all packages
pnpm type-check     # TypeScript checks
pnpm storybook      # Run Storybook

Community

License

AGPL-3.0. See LICENSE.

Extension points exported contracts — how you extend this code

CustomTypeOptions (Interface)
(no doc)
packages/i18n/src/types.ts
ImportMetaEnv (Interface)
(no doc)
packages/player/vite.env.d.ts
TrackTableLabels (Interface)
(no doc)
packages/ui/src/components/TrackTable/types.ts
ImportMeta (Interface)
(no doc)
packages/player/vite.env.d.ts
BarProps (Interface)
(no doc)
packages/ui/src/components/ScrollableArea/ScrollableArea.tsx
FileRoutesByFullPath (Interface)
(no doc)
packages/player/src/routeTree.gen.ts
FileRoutesByTo (Interface)
(no doc)
packages/player/src/routeTree.gen.ts
FileRoutesById (Interface)
(no doc)
packages/player/src/routeTree.gen.ts

Core symbols most depended-on inside this repo

getState
called by 511
packages/plugin-sdk/src/api/playback.ts
click
called by 234
packages/player/src/views/Themes/Themes.test-wrapper.tsx
register
called by 135
packages/plugin-sdk/src/api/settings.ts
cn
called by 116
packages/ui/src/utils.ts
build
called by 111
packages/player/src/test/builders/PlaylistBuilder.ts
withId
called by 88
packages/player/src/test/builders/PlaylistBuilder.ts
push
called by 77
packages/player/src/utils/RingBuffer.ts
get
called by 75
packages/player/src/test/utils/inMemoryTauriStore.ts

Shape

Function 1,096
Method 364
Class 116
Interface 14

Languages

TypeScript100%

Modules by API surface

packages/player/src/views/Themes/Themes.test-wrapper.tsx32 symbols
packages/player/src/views/Dashboard/Dashboard.test-wrapper.tsx27 symbols
packages/player/src/test/builders/MetadataProviderBuilder.ts26 symbols
packages/player/src/views/Plugins/Plugins.test-wrapper.tsx25 symbols
packages/player/src/components/ConnectedPlayerBar/ConnectedPlayerBar.test-wrapper.tsx24 symbols
packages/player/src/views/Playlists/Playlists.test-wrapper.tsx21 symbols
packages/plugin-sdk/src/api/queue.ts20 symbols
packages/player/src/test/builders/PlaylistBuilder.ts20 symbols
packages/player/src/remoteControl/RemoteControl.test-wrapper.tsx20 symbols
packages/plugin-sdk/src/api/playback.ts19 symbols
packages/hifi/src/fmp4/MseController.test.ts19 symbols
packages/player/src/integration-tests/Queue.test-wrapper.tsx18 symbols

Dependencies from manifests, versioned

@astrojs/check0.9.6 · 1×
@astrojs/mdx5.0.6 · 1×
@astrojs/react5.0.3 · 1×
@astrojs/rss4.0.18 · 1×
@astrojs/sitemap3.7.0 · 1×
@codecov/vite-plugin2.0.0 · 1×
@dnd-kit/core6.3.1 · 1×
@dnd-kit/sortable10.0.0 · 1×
@dnd-kit/utilities3.2.2 · 1×
@eslint/css1.0.0 · 1×
@eslint/js10.0.0 · 1×
@eslint/json1.0.0 · 1×

For agents

$ claude mcp add nuclear \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact