An MCP server that lets any agent spin up a fully-configured AI radio station from scratch — including dependency installation, station configuration, deployment, and hub registration.
18 tools with clear verb-noun naming and mostly complete schemas. Descriptions are present and actionable (avg ~150 chars), exceeding the 10-char minimum. However, several parameter descriptions lack specificity on constraints, ranges, and error recovery. Output schemas are not formally documented. Error handling is minimal, most tools lack recovery guidance. No tool annotations (readOnlyHint/destructiveHint) despite clear risk levels. Composition is sound: tools chain well (e.g., create_station → set_personality → deploy_station). Security concern: install_* tools execute system commands without validation or dry-run options.
Audit the local machine for all dependencies needed to run an AI radio station. Returns a dict with 'installed' and 'missing' lists, plus install instructions.
Create a new AI radio station with a name and tagline. Returns a station_id (UUID) and initial config.
Delete a station from the registry and remove its directory.
Deploy a station: write config to disk, start the runner subprocess, and return the stream URL.
Generate a new music track using facebook/musicgen-small and save it to the station's music library.
Install a missing dependency by name. Supported: 'ollama', 'ffmpeg'. For Python packages use install_python_deps() instead.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels. Tools marked DESTRUCTIVE (delete_station) and WRITE (install_*, deploy_*) should declare hints to guide agent planning.
Parameter 'params' in set_content is an untyped object with no schema. Description says 'Source-specific parameters' but does not enumerate valid keys or types for 'topics', 'feeds', 'explorer_url'. LLM cannot validate input.
install_dependency and install_music_deps execute system commands without validation, dry-run, or confirmation. No error recovery guidance. If a command fails, LLM receives raw subprocess error with no actionable next step.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
Install Python packages required for AI music generation (MusicGen). This is optional — stations work fine with a pre-populated music_library/. Installs: torch, transformers, scipy. Note: torch can be large (~2GB). Requires a CUDA-capable GPU for fast generation; falls back to CPU (slow but functional).
Install all required Python packages for the radio runner. Runs: pip install kokoro soundfile numpy requests python-dotenv
List all music tracks in a station's music library.
List all stations in the registry with their status and stream URLs.
Preview the full configuration for a station before deployment.
Pull an LLM model from Ollama. Default: 'neural-chat'. Runs 'ollama pull <model>' and waits for completion.
Register a deployed station with the Degens.World hub. Returns the api_key (shown only once).
Configure the content source for a station. Supports 'freestyle', 'rss', or 'blockchain'.
Configure the DJ personality for a station. Sets name, bio, and system prompt.
Configure the broadcast schedule for a station. Sets drop interval and duration.
Configure the TTS voice for a station. Sets voice name and speed.
Stop a running station and clean up its subprocess.
Output schemas not documented. Tools return dicts but LLM does not know field names, types, or structure. E.g., check_dependencies returns 'status', 'checks', 'missing', 'missing_packages', 'next_step', not formally specified.
set_voice 'speed' parameter lacks range constraints. Description says 'default 1.15' but does not specify min/max (e.g., 0.5 - 2.0). LLM could pass invalid values.