Summary
The Autonomic Media Control System (MCS) 3.0 is an IP-based media playback engine implemented in the Autonomic Mirage Media Server, MCS 3.0 software, and NuVo MPS4 series music servers. This spec covers the ASCII TCP/IP control protocol on port 5004, which provides two-way communication for transport control, media library browsing, multi-instance management, volume, and radio source selection. Commands are case-insensitive and terminated with CRLF.
Transport
protocols:
- tcp
addressing:
port: 5004
auth:
type: none # inferred: no auth procedure in source
Traits
- queryable # inferred from GetStatus and SubscribeEvents query commands
- levelable # inferred from Volume state reported in GetStatus/StateChanged
Actions
- id: banner
label: Display Connection Banner
kind: query
command: "banner"
params: []
- id: set_xml_mode_none
label: Set Response Mode to ASCII
kind: action
command: "setxmlmode none"
params: []
- id: set_xml_mode_lists
label: Set Response Mode to XML
kind: action
command: "setxmlmode lists"
params: []
- id: cls
label: Clear ANSI Terminal
kind: action
command: "cls"
params: []
- id: exit
label: End Session
kind: action
command: "exit"
params: []
- id: help
label: Display Help
kind: query
command: "help"
params: []
- id: help_command
label: Display Help for Command
kind: query
command: "help {command}"
params:
- name: command
type: string
description: Command name to get help for
- id: get_versions
label: Get Component Versions
kind: query
command: "GetVersions"
params: []
- id: get_license_message
label: Get License Message
kind: query
command: "GetLicenseMessage"
params: []
- id: time
label: Get System Time
kind: query
command: "Time"
params: []
- id: time_formatted
label: Get System Time with Format
kind: query
command: "Time {format}"
params:
- name: format
type: string
description: Format code (d, D, f, F, g, G, m, r, s, U)
- id: uptime
label: Get MCS Uptime
kind: query
command: "Uptime"
params: []
- id: browse_encodings
label: Browse Text Encodings
kind: query
command: "BrowseEncodings"
params: []
- id: set_encoding
label: Set Text Encoding
kind: action
command: "SetEncoding {encoding_id}"
params:
- name: encoding_id
type: integer
description: Encoding ID (e.g. 20105 for Western European IA5)
- id: start_mcs
label: Start MCS Session
kind: action
command: "StartMCS"
params: []
- id: browse_instances
label: Browse MCS Instances
kind: query
command: "BrowseInstances"
params: []
- id: set_instance
label: Select MCS Instance
kind: action
command: "SetInstance \"{instance_id}\""
params:
- name: instance_id
type: string
description: Instance name or * for current console instance
- id: msg_box
label: Display Message Box Dialog
kind: action
command: "MsgBox {id} \"{caption}\" \"{message}\" \"{buttons}\" \"{timeout}\""
params:
- name: id
type: integer
description: Question ID to match response
- name: caption
type: string
description: Dialog caption
- name: message
type: string
description: Dialog message text
- name: buttons
type: string
description: Semicolon-delimited button labels
- name: timeout
type: integer
description: Timeout in seconds (default 5)
- id: get_status
label: Get Full MCS Status
kind: query
command: "GetStatus"
params: []
- id: subscribe_events_true
label: Enable Event Notifications
kind: action
command: "SubscribeEvents True"
params: []
- id: subscribe_events_false
label: Disable Event Notifications
kind: action
command: "SubscribeEvents False"
params: []
- id: subscribe_events_filter
label: Subscribe to Specific Events
kind: action
command: "SubscribeEvents \"{event_list}\""
params:
- name: event_list
type: string
description: Comma-delimited list of event names (e.g. MetaData1,MetaData2)
- id: navigate_fm_radio
label: Navigate to FM Radio
kind: action
command: "Navigate FMRadio"
params: []
- id: navigate_internet_radio
label: Navigate to Internet Radio
kind: action
command: "Navigate InternetRadio"
params: []
- id: navigate_live_tv
label: Navigate to Live TV
kind: action
command: "Navigate LiveTV"
params: []
- id: navigate_more_programs
label: Navigate to More Programs
kind: action
command: "Navigate MorePrograms"
params: []
- id: navigate_music_albums
label: Navigate to Music Albums
kind: action
command: "Navigate MusicAlbums"
params: []
- id: navigate_music_artists
label: Navigate to Music Artists
kind: action
command: "Navigate MusicArtists"
params: []
- id: navigate_music_songs
label: Navigate to Music Songs
kind: action
command: "Navigate MusicSongs"
params: []
- id: navigate_my_music
label: Navigate to My Music
kind: action
command: "Navigate MyMusic"
params: []
- id: navigate_my_pictures
label: Navigate to My Pictures
kind: action
command: "Navigate MyPictures"
params: []
- id: navigate_my_tv
label: Navigate to My TV
kind: action
command: "Navigate MyTV"
params: []
- id: navigate_my_videos
label: Navigate to My Videos
kind: action
command: "Navigate MyVideos"
params: []
- id: navigate_recorded_tv
label: Navigate to Recorded TV
kind: action
command: "Navigate RecordedTV"
params: []
- id: navigate_recorder_storage_settings
label: Navigate to Recorder Storage Settings
kind: action
command: "Navigate RecorderStorageSettings"
params: []
- id: navigate_scheduled_tv_recordings
label: Navigate to Scheduled TV Recordings
kind: action
command: "Navigate ScheduledTVRecordings"
params: []
- id: navigate_slide_show
label: Navigate to Slide Show
kind: action
command: "Navigate SlideShow"
params: []
- id: navigate_start
label: Navigate to Start Page
kind: action
command: "Navigate Start"
params: []
- id: navigate_tv_guide
label: Navigate to TV Guide
kind: action
command: "Navigate TVGuide"
params: []
- id: navigate_visualizations
label: Navigate to Visualizations
kind: action
command: "Navigate Visualizations"
params: []
- id: navigate_photo_details
label: Navigate to Photo Details
kind: action
command: "Navigate PhotoDetails"
params: []
- id: navigate_slide_show_settings
label: Navigate to Slide Show Settings
kind: action
command: "Navigate SlideShowSettings"
params: []
- id: play
label: Play
kind: action
command: "Play"
params: []
- id: stop
label: Stop
kind: action
command: "Stop"
params: []
- id: pause
label: Pause
kind: action
command: "Pause"
params: []
- id: play_pause
label: Play/Pause Toggle
kind: action
command: "PlayPause"
params: []
- id: skip_next
label: Skip to Next Track
kind: action
command: "SkipNext"
params: []
- id: skip_previous
label: Skip to Previous Track
kind: action
command: "SkipPrevious"
params: []
- id: shuffle_on
label: Enable Shuffle
kind: action
command: "Shuffle true"
params: []
- id: shuffle_off
label: Disable Shuffle
kind: action
command: "Shuffle false"
params: []
- id: shuffle_toggle
label: Toggle Shuffle
kind: action
command: "Shuffle toggle"
params: []
- id: repeat_on
label: Enable Repeat
kind: action
command: "Repeat true"
params: []
- id: repeat_off
label: Disable Repeat
kind: action
command: "Repeat false"
params: []
- id: repeat_toggle
label: Toggle Repeat
kind: action
command: "Repeat toggle"
params: []
- id: browse_albums
label: Browse Albums
kind: query
command: "BrowseAlbums {start} {reqcount}"
params:
- name: start
type: integer
description: Start position (integer or letter for alpha index)
- name: reqcount
type: integer
description: Number of items to return
- id: browse_artists
label: Browse Artists
kind: query
command: "BrowseArtists {start} {reqcount}"
params:
- name: start
type: integer
description: Start position (integer or letter for alpha index)
- name: reqcount
type: integer
description: Number of items to return
- id: browse_genres
label: Browse Genres
kind: query
command: "BrowseGenres {start} {reqcount}"
params:
- name: start
type: integer
description: Start position (integer or letter for alpha index)
- name: reqcount
type: integer
description: Number of items to return
- id: browse_now_playing
label: Browse Now Playing Queue
kind: query
command: "BrowseNowPlaying {start} {reqcount}"
params:
- name: start
type: integer
description: Start position
- name: reqcount
type: integer
description: Number of items to return
- id: browse_playlists
label: Browse Playlists
kind: query
command: "BrowsePlaylists {start} {reqcount}"
params:
- name: start
type: integer
description: Start position
- name: reqcount
type: integer
description: Number of items to return
- id: browse_radio_genres
label: Browse Radio Genres
kind: query
command: "BrowseRadioGenres {start} {reqcount}"
params:
- name: start
type: integer
description: Start position
- name: reqcount
type: integer
description: Number of items to return
- id: browse_radio_stations
label: Browse Radio Stations
kind: query
command: "BrowseRadioStations {start} {reqcount}"
params:
- name: start
type: integer
description: Start position
- name: reqcount
type: integer
description: Number of items to return
- id: browse_radio_sources
label: Browse Radio Sources
kind: query
command: "BrowseRadioSources {start} {reqcount}"
params:
- name: start
type: integer
description: Start position
- name: reqcount
type: integer
description: Number of items to return
- id: browse_titles
label: Browse Titles
kind: query
command: "BrowseTitles {start} {reqcount}"
params:
- name: start
type: integer
description: Start position
- name: reqcount
type: integer
description: Number of items to return
- id: play_album
label: Play Album by GUID or Name
kind: action
command: "PlayAlbum {guid_or_name} {enqueue}"
params:
- name: guid_or_name
type: string
description: Album GUID or quoted album name
- name: enqueue
type: boolean
description: True to add to queue without interrupting; False to clear queue first
- id: play_artist
label: Play Artist by GUID or Name
kind: action
command: "PlayArtist {guid_or_name} {enqueue}"
params:
- name: guid_or_name
type: string
description: Artist GUID or quoted artist name
- name: enqueue
type: boolean
description: True to add to queue without interrupting; False to clear queue first
- id: play_genre
label: Play Genre by GUID or Name
kind: action
command: "PlayGenre {guid_or_name} {enqueue}"
params:
- name: guid_or_name
type: string
description: Genre GUID or quoted genre name
- name: enqueue
type: boolean
description: True to add to queue without interrupting; False to clear queue first
- id: play_playlist
label: Play Playlist by GUID or Name
kind: action
command: "PlayPlaylist {guid_or_name} {enqueue}"
params:
- name: guid_or_name
type: string
description: Playlist GUID or quoted playlist name
- name: enqueue
type: boolean
description: True to add to queue without interrupting; False to clear queue first
- id: play_title
label: Play Title by GUID or Name
kind: action
command: "PlayTitle {guid_or_name} {enqueue}"
params:
- name: guid_or_name
type: string
description: Title GUID or quoted song name
- name: enqueue
type: boolean
description: True to add to queue without interrupting; False to clear queue first
- id: jump_to_now_playing_item_guid
label: Jump to Now Playing Item by GUID
kind: action
command: "JumpToNowPlayingItem {guid}"
params:
- name: guid
type: string
description: GUID of the track from BrowseNowPlaying
- id: jump_to_now_playing_item_index
label: Jump to Now Playing Item by Index
kind: action
command: "JumpToNowPlayingItem {index}"
params:
- name: index
type: integer
description: 1-based index from top of queue
- id: remove_now_playing_item_guid
label: Remove Now Playing Item by GUID
kind: action
command: "RemoveNowPlayingItem {guid}"
params:
- name: guid
type: string
description: GUID of the track to remove from the now playing queue
- id: remove_now_playing_item_index
label: Remove Now Playing Item by Index
kind: action
command: "RemoveNowPlayingItem {index}"
params:
- name: index
type: integer
description: 1-based index of the track to remove from the now playing queue
- id: play_radio_station
label: Play Radio Station by GUID or Name
kind: action
command: "PlayRadioStation {guid_or_name}"
params:
- name: guid_or_name
type: string
description: Radio station GUID or quoted station name
- id: set_music_filter_tag_guid
label: Set Music Filter by Tag and GUID
kind: action
command: "SetMusicFilter {tag}={guid}"
params:
- name: tag
type: string
description: Filter tag (Artist, Album, Genre, Playlist, or Title)
- name: guid
type: string
description: GUID obtained from a Browse command
- id: set_music_filter_search
label: Set Music Filter by Search String
kind: action
command: "SetMusicFilter Search=\"{searchstring}\""
params:
- name: searchstring
type: string
description: Search string; wildcard * supported (e.g. *Diana*)
- id: set_music_filter_clear
label: Clear Music Filter
kind: action
command: "SetMusicFilter Clear"
params: []
- id: set_radio_filter_tag_guid
label: Set Radio Filter by Tag and GUID
kind: action
command: "SetRadioFilter {tag}={guid}"
params:
- name: tag
type: string
description: Filter tag (Source or Genre)
- name: guid
type: string
description: GUID obtained from a Browse command
- id: set_radio_filter_clear
label: Clear Radio Filter
kind: action
command: "SetRadioFilter Clear"
params: []
- id: ack_pick_item
label: Select a PickList Item
kind: action
command: "AckPickItem {guid}"
params:
- name: guid
type: string
description: GUID of the PickListItem to select
- id: set_pick_list_count
label: Set PickList Display Count
kind: action
command: "SetPickListCount {count}"
params:
- name: count
type: integer
description: Number of items the client displays in a PickList
- id: ack_button
label: Acknowledge MessageBox or InputBox Button
kind: action
command: "AckButton {guid} \"{button_text}\""
params:
- name: guid
type: string
description: GUID from the MessageBox or InputBox UI event
- name: button_text
type: string
description: Text of the button pressed or input value
- id: send_keys
label: Send IR Key Command (MCS Software Only)
kind: action
command: "SendKeys {irkey}"
params:
- name: irkey
type: string
description: "IR key name: Home, Up, Down, Left, Right, OK, Back, Details, Guide, Jump, MoreInfo, Play, Pause, Stop, Record, FastForward, Rewind, Skip, Replay, Volume+, Volume-, Chan/Page+, Chan/Page-, Mute, DVDMenu, Standby, 0-9, Clear, Enter"
Feedbacks
- id: fb_get_status
query_command: "GetStatus"
description: Returns all current state parameters as ReportState messages (TrackName, ArtistName, MediaName, MediaControl, Volume, Shuffle, Repeat, Running, SessionStart, TrackTime, TrackDuration, TotalTracks, TrackNumber, RepeatSet, CD)
- id: fb_state_changed_media_control
query_command: "SubscribeEvents True"
description: StateChanged <instance> MediaControl=<value> - transport state (Play, Stop, Pause, FF1, FF2, FF3, Rewind1, Rewind2, Rewind3, SkipNext, SkipPrev, SlowMotion1, SlowMotion2, SlowMotion3, NextFrame, PrevFrame)
- id: fb_state_changed_track_name
query_command: "SubscribeEvents True"
description: StateChanged <instance> TrackName=<value> - name of the currently playing track
- id: fb_state_changed_artist_name
query_command: "SubscribeEvents True"
description: StateChanged <instance> ArtistName=<value> - artist of the currently playing media
- id: fb_state_changed_media_name
query_command: "SubscribeEvents True"
description: StateChanged <instance> MediaName=<value> - name of the currently playing media (all media types)
- id: fb_state_changed_volume
query_command: "SubscribeEvents True"
description: StateChanged <instance> Volume=<value> - current master MCS volume level
- id: fb_state_changed_track_time
query_command: "SubscribeEvents True"
description: StateChanged <instance> TrackTime=<seconds> - current track playback progress in seconds
- id: fb_state_changed_track_duration
query_command: "SubscribeEvents True"
description: StateChanged <instance> TrackDuration=<seconds> - total duration of current track in seconds
- id: fb_state_changed_total_tracks
query_command: "SubscribeEvents True"
description: StateChanged <instance> TotalTracks=<value> - total tracks in current media set
- id: fb_state_changed_track_number
query_command: "SubscribeEvents True"
description: StateChanged <instance> TrackNumber=<value> - current track number
- id: fb_state_changed_shuffle
query_command: "SubscribeEvents True"
description: StateChanged <instance> Shuffle=<True|False> - shuffle mode status changed
- id: fb_state_changed_repeat_set
query_command: "SubscribeEvents True"
description: StateChanged <instance> RepeatSet=<True|False> - repeat mode status changed
- id: fb_state_changed_running
query_command: "SubscribeEvents True"
description: StateChanged <instance> Running=<True|False> - MCS shell running state
- id: fb_state_changed_navigation
query_command: "SubscribeEvents True"
description: StateChanged <instance> Navigation=<value> - navigation state (FS_Home, FS_DVD, FS_TV, Music, Photos, Radio, Videos, Guide, RecordedShows, Extensibility, Unknown)
- id: fb_state_changed_session_start
query_command: "SubscribeEvents True"
description: StateChanged <instance> SessionStart=<value> - MCS shell started with session type
- id: fb_state_changed_session_end
query_command: "SubscribeEvents True"
description: StateChanged <instance> SessionEnd - MCS shell ended
- id: fb_state_changed_radio_frequency
query_command: "SubscribeEvents True"
description: StateChanged <instance> RadioFrequency=<value> - current radio station frequency
- id: fb_state_changed_media_type
query_command: "SubscribeEvents True"
description: StateChanged <instance> MediaType=<value> - type of currently playing media
- id: fb_state_changed_media_time
query_command: "SubscribeEvents True"
description: StateChanged <instance> MediaTime=<value> - total duration of currently playing media (video, music, or TV)
Variables
[]
Events
[]
Macros
[]
Safety
confirmation_required_for: []
interlocks: []
Notes
- Transport: TCP/IP on port 5004 (default; configurable in MCS software only); album art served via HTTP on port 80 (Mirage) or 5005 (MCS software).
- Terminator: all commands and responses use CRLF (carriage return + line feed).
- Duplex: full-duplex asynchronous; server may interleave StateChanged event messages between list response items; clients must parse responses in any order.
Provenance
source_domains:
- autonomic-controls.com
- autonomic.atlassian.net
source_urls:
- http://www.autonomic-controls.com/documents/mcs30/mcs_3.0_IP_Control_Protocol.pdf
- https://autonomic.atlassian.net/wiki/spaces/ASKB/pages/1509556225/Autonomic+Media+Server+Control+Protocol
- https://autonomic.atlassian.net/wiki/spaces/ASKB/pages/1596620801/Control+Protocols
retrieved_at: 2026-05-19T21:55:40.422Z
last_checked_at: 2026-06-23T09:39:08.135Z
Verification Summary
verdict: verified
checked_at: 2026-06-23T09:39:08.135Z
matched_actions: 101
action_count: 101
confidence: medium
summary: "All 101 spec actions (82 Actions + 19 Feedbacks with query_command) have exact wire-literal matches; transport port 5004 and no-auth confirmed. (1 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "RS-232 is mentioned in the overview but no serial configuration (baud rate, data bits, parity, stop bits) is documented in the source. Only TCP/IP parameters are specified."
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0