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
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。