lautfm-mcp
MCP server providing access to the laut.fm Radioadmin API for managing radio stations, playlists, tracks, users, and automation.
README
lautfm-mcp
An MCP server that provides access to the laut.fm Radioadmin API.
Requirements
- Node.js 18 or later
- A valid laut.fm Radioadmin API token
Setup
1. Install dependencies
npm install
2. Build
npm run build
3. Configure your MCP client
Add the server to your MCP client configuration (e.g. Claude Desktop claude_desktop_config.json):
{
"mcpServers": {
"lautfm": {
"command": "node",
"args": ["/absolute/path/to/lautfm-mcp/dist/index.js"],
"env": {
"LAUTFM_TOKEN": "your-radioadmin-api-token-here"
}
}
}
}
Generate a token by calling https://radioadmin.laut.fm/login?callback_url=LautfmMCP
Environment Variables
| Variable | Required | Description |
|---|---|---|
LAUTFM_TOKEN |
✅ Yes | Your laut.fm Radioadmin API bearer token. The server will exit immediately if this is not set. |
Authentication & Origin
Every request to the Radioadmin API is sent with:
Authorization: Bearer <LAUTFM_TOKEN>Origin: LautfmMCP
Available Tools
General
| Tool | Description |
|---|---|
get_server_status |
Check the laut.fm Radioadmin API server status |
Station
| Tool | Description |
|---|---|
list_stations |
List all stations accessible with the current token |
get_station |
Get detailed information about a specific station |
update_station |
Update station information (description, format, djs, location, website, social links, genres) |
get_station_state |
Check if a station is active and playing on a streaming server |
activate_station |
Activate a station — triggers a playlist export and starts streaming |
get_current_playlist |
Get the currently playing playlist and its tracks |
get_listener_stats |
Get listener statistics (current listeners, position, switchons log, TLH log) |
Users
| Tool | Description |
|---|---|
get_station_users |
List all users of a station |
add_station_user |
Add a user with a given role to a station (sends an invitation) |
update_station_user_role |
Change the role of a user on a station |
remove_station_user |
Remove a user from a station |
Playlists
| Tool | Description |
|---|---|
get_playlists |
List all playlists for a station |
add_playlist |
Add a new playlist to a station |
get_playlist |
Get information for a single playlist including its entries |
update_playlist |
Modify an existing playlist |
delete_playlist |
Delete a playlist (the rotation playlist cannot be deleted) |
add_track_to_playlist |
Append a single track to a playlist |
get_playlist_tracks |
Get all tracks for a playlist |
delete_track_from_playlist |
Delete all occurrences of a track from a playlist |
Schedule
| Tool | Description |
|---|---|
get_schedule |
Get the schedule for a station |
update_schedule |
Modify the schedule for a station |
Tracks
| Tool | Description |
|---|---|
search_tracks |
Search tracks using various filters (deprecated endpoint) |
get_tracks_by_ids |
Get track information for one or more track IDs |
update_track |
Update metadata for a track |
delete_track |
Delete an own track from a station |
get_track_stats |
Get current day track statistics |
get_track_stats_period |
Get track statistics for a specific period (24h or yyyy-mm-dd) |
get_track_tags_for_ids |
Get tags for one or more specific tracks |
add_track_tags |
Add tags to one or more tracks |
remove_track_tags |
Remove tags from one or more tracks |
get_all_track_tags |
Get all tags used across all tracks for a station |
get_incomplete_tracks |
Get tracks with incomplete uploads |
get_queued_tracks |
Get tracks queued for processing |
Live
| Tool | Description |
|---|---|
get_live_connection_info |
Get live streaming connection information (server, port, mountpoint, bitrate, etc.) |
get_live_password |
Get the live streaming password for a station |
Automation Algorithms
| Tool | Description |
|---|---|
get_automation_algorithm |
View the definition of a specific automation algorithm |
create_automation_algorithm |
Create a new automation algorithm for shuffling tracks |
update_automation_algorithm |
Update the function used by an existing automation algorithm |
delete_automation_algorithm |
Delete an automation algorithm |
Excluded Endpoints
The following API endpoints are not exposed as MCP tools because they involve binary data transfer which is not suitable for the MCP text protocol:
POST /stations/{station_id}/tracks— MP3 file uploadPUT /stations/{station_id}/images/{image_type}— Image upload (logo, website, background)GET /stations/{station_id}/tracks/{track_id}/prelisten— Returns audio/mpeg binary stream
Additionally, all App-tagged endpoints (which use Firebase JWT authentication) are excluded as they serve a different use case.
Development
# Watch mode (recompiles on change)
npm run dev
# Build once
npm run build
# Run directly (requires LAUTFM_TOKEN to be set)
LAUTFM_TOKEN=your-token node dist/index.js
Project Structure
src/
├── index.ts # MCP server entry point
├── client.ts # HTTP client with auth + Origin header
└── tools/
├── general.ts # General tools (server status)
├── stations.ts # Station tools
├── users.ts # User management tools
├── playlists.ts # Playlist tools
├── schedule.ts # Schedule tools
├── tracks.ts # Track tools
├── live.ts # Live streaming tools
└── automation.ts # Automation algorithm tools
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.