Roam FM MCP Server
MCP (Model Context Protocol) server for controlling Roam FM radio app via AI assistants like Claude.
Prerequisites
- macOS
- Roam FM app installed and running
- MCP remote control enabled in Roam FM: Settings > Labs > AI Remote Control
- Python 3.10+
Installation
cd mcp-server
pip install -e .
Configuration
Claude Code
Add to your Claude Code MCP settings (~/.claude/claude_desktop_config.json):
{
"mcpServers": {
"roam-fm": {
"command": "roam-fm-mcp"
}
}
}
Or if using a virtual environment:
{
"mcpServers": {
"roam-fm": {
"command": "/path/to/venv/bin/roam-fm-mcp"
}
}
}
Available Tools
| Tool | Description |
|---|---|
roam_play |
Start playing radio. Optionally filter by country code. |
roam_pause |
Pause the current station. |
roam_resume |
Resume playback. |
roam_next |
Skip to next random station. |
roam_stop |
Stop playback completely. |
roam_status |
Get current playback status and station info. |
roam_get_stats |
Get listening statistics. |
Country Codes
Use ISO 3166-1 alpha-2 country codes for filtering:
JP- JapanUS- United StatesFR- FranceDE- GermanyGB- United KingdomCN- China- etc.
Example Usage
Ask your AI assistant:
- "Play Japanese radio stations"
- "Pause the radio"
- "What's currently playing?"
- "Skip to the next station"
- "How long have I been listening?"
How It Works
AI Assistant ──MCP──> roam-fm-mcp ──URL Scheme──> Roam FM App
<──status.json──
- AI sends commands via MCP protocol
- MCP server triggers URL Scheme (
roam-fm://play, etc.) - Roam FM app executes the command
- App writes status to
~/.roam-fm/status.json - MCP server reads status and returns result
Troubleshooting
"Status file not found"
Make sure MCP remote control is enabled in Roam FM:
- Open Roam FM
- Go to Settings > Labs
- Enable "AI Remote Control"
Commands not working
- Check if Roam FM is running
- Verify the app is responding to URL schemes:
open "roam-fm://play"
- Check status file exists:
cat ~/.roam-fm/status.json
License
MIT
Metadata
Release files for roam-fm-mcp 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| roam_fm_mcp-0.1.0.tar.gz | 5.4 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| roam_fm_mcp-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 11.9 kB
Release files / roam_fm_mcp-0.1.0.tar.gz
| Download URL | roam_fm_mcp-0.1.0.tar.gz |
|---|---|
| Size | 5.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
63ef785bfbafd82f2da32199cb084c90fca897ddd5d85c33a0126126b261d580
|
|
BLAKE2b-256 checksum How to use checksums |
8e79f2c6386aa36d4338c92f77565929dbbda26f693c42d5323d87f2b7d3941c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.2
|
Release files / roam_fm_mcp-0.1.0-py3-none-any.whl
| Download URL | roam_fm_mcp-0.1.0-py3-none-any.whl |
|---|---|
| Size | 6.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6c2198b2e148a3d5df8018672b9b2ffc5aa7044c4cee63d77510bda9f7db00bf
|
|
BLAKE2b-256 checksum How to use checksums |
18a643a080f5bab633642d079814ccfa98765d52e5de7998957b72a5158be28b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.2
|
Security for roam-fm-mcp 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.