Back to Browse

Lightning Fm MCP Server

by Maml
Developer ToolsModerate6.7MCP RegistryLocal
Free

Server data from the Official MCP Registry

Search Lightning FM's Nostr music catalog, look up artists, and check what's live now.

About

Search Lightning FM's Nostr music catalog, look up artists, and check what's live now.

Security Report

6.7
Moderate6.7Moderate Risk

A well-designed read-only MCP server for the Lightning FM music catalog with solid security practices. The server connects to public Nostr relays and Blossom servers to fetch music metadata and requires no authentication. Code quality is good with proper event signature verification, input validation via Zod schemas, and no credential handling. Minor areas for improvement include broader error handling and more defensive parsing of untrusted relay data. Supply chain analysis found 2 known vulnerabilities in dependencies (0 critical, 1 high severity). Package verification found 1 issue.

7 files analyzed · 7 issues found

Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.

Permissions Required

This plugin requests these system permissions. Most are normal for its category.

HTTP Network Access

Connects to external APIs or services over the internet.

env_vars

Check that this permission is expected for this type of plugin.

What You'll Need

Set these up before or after installing:

Comma-separated relay URLs to query. Only add a relay here if it gates writes the way relay.lightning.fm does (allowlisted artists only) — an unrestricted public relay hands back every other app's kind-31337 events too, not just Lightning FM's.Optional

Environment variable: LFM_NOSTR_RELAYS

Blossom server audio/image hashes resolve against.Optional

Environment variable: LFM_BLOSSOM_URL

How long a fetched catalog/profile/now-playing snapshot is reused, in milliseconds, before the next tool call re-queries the relays.Optional

Environment variable: LFM_CACHE_TTL_MS

How to Install

Add this to your MCP configuration file:

{
  "mcpServers": {
    "io-github-maml-lightning-fm-mcp": {
      "env": {
        "LFM_BLOSSOM_URL": "your-lfm-blossom-url-here",
        "LFM_CACHE_TTL_MS": "your-lfm-cache-ttl-ms-here",
        "LFM_NOSTR_RELAYS": "your-lfm-nostr-relays-here"
      },
      "args": [
        "-y",
        "lightning-fm-mcp"
      ],
      "command": "npx"
    }
  }
}

Documentation

View on GitHub

From the project's GitHub README.

Lightning FM :: MCP Server

An MCP server for Lightning FM's music catalog — search tracks, look up artists, and check what's live on the station, all from an agent.

There is no separate agent API. This server reads exactly what a human client reads: kind 31337 track events and kind 0 profiles from public Nostr relays, audio and images from the public Blossom server, and the kind 30311 live activity event the station publishes on every track change. Every track is signed by the artist's own key — this is the canonical catalog, not a curated subset the platform maintains for agents.

Use it

Add it to your MCP client's server config. For Claude Code or Claude Desktop:

{
  "mcpServers": {
    "lightning-fm": {
      "command": "npx",
      "args": ["-y", "lightning-fm-mcp"]
    }
  }
}

No install, no API key, no account. It talks to relay.lightning.fm and media.lightning.fm by default — see Configuration to point it elsewhere.

Tools

  • search_catalog — free-text search plus genre/tag filters over the full catalog. Leave every filter empty to browse newest-first.
  • get_artist — look up an artist by display name (partial match), hex pubkey, or npub. Returns their profile and full discography.
  • get_now_playing — what's currently on air, and the stream URL.

Configuration

All environment variables are optional — defaults point at production. Nothing here is a secret; this server is read-only and never signs or publishes anything.

VariableDefaultWhat it does
LFM_NOSTR_RELAYSwss://relay.lightning.fmComma-separated relay URLs to query. Only add a relay here if it gates writes the way relay.lightning.fm does — kind 31337 isn't exclusive to Lightning FM, and an unrestricted public relay hands back every other app's tracks too.
LFM_BLOSSOM_URLhttps://media.lightning.fmBlossom server audio/image hashes resolve against.
LFM_CACHE_TTL_MS60000How long a fetched snapshot is reused before the next tool call re-queries the relays.

Development

npm install
npm run dev     # runs src/index.ts directly via tsx
npm run build   # tsc -> dist/

src/nostr/track.ts mirrors the kind 31337 parsing in station-server/src/catalog/track.ts and app-desktop/src-tauri/src/relay.rs. All three must agree on tag names — this is the platform's public wire format, documented in full at lightning.fm/interop.

License

MIT

Reviews

No reviews yet

Be the first to review this server!