vlc-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| VLC_HTTP_HOST | No | Host where VLC is listening. Defaults to `localhost`. | |
| VLC_HTTP_PORT | No | Port VLC's HTTP interface listens on. Defaults to `8085`. | |
| ROOT_VIDEO_FOLDER | Yes | Folder that holds your videos. Tool paths are relative to it. | |
| VLC_HTTP_PASSWORD | Yes | Password for VLC's HTTP interface. The fallback `your_password` will fail VLC's login. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_statusB | Get the current status of VLC playback. |
| seekA | Seek to a specific position in the video. + or - seek relative to the current position and otherwise absolute. Allowed values are of the form: [+ or -][:][:][] or [+ or -]% Examples: -10s -> seek 10 seconds backward +1h:2m:3s -> seek 1 hour, 2 minutes and 3 seconds forward 30s -> seek to the 30th second 50% -> seek to the middle -10% -> seek 10% back |
| vlc_controlA | Control VLC playback. Actions: play - resume playback if paused (does nothing if already playing) pause - pause playback (does nothing if already paused) toggle - toggle pause; if stopped, plays the current or first playlist item stop - stop playback next - jump to the next playlist item previous - jump to the previous playlist item fullscreen - toggle fullscreen |
| set_playback_rateB | Set the playback speed. 1.0 is normal speed, 2.0 is double, 0.5 is half. Must be greater than 0. |
| set_aspect_ratioB | Set the video aspect ratio. Args: ratio: One of 1:1, 4:3, 5:4, 16:9, 16:10, 221:100, 235:100, 239:100, or "default" to reset. |
| set_sync_delayA | Set the audio or subtitle delay to fix out-of-sync playback. Args: stream: "audio" or "subtitle" seconds: Delay in seconds (can be negative or fractional, e.g. -0.5). 0 resets it. |
| set_volumeB | Set the volume level of VLC (0-200, where 100 is normal volume). Args: volume_level: An integer between 0 and 200 representing the volume percentage |
| get_volumeA | Get the current volume level of VLC (as a percentage). |
| adjust_volumeB | Increase or decrease the volume by a specified percentage. Args: change: An integer representing the percentage to change the volume by. Positive values increase volume, negative values decrease it. |
| get_tracksA | List the streams (audio, video, subtitle) of the current item, plus titles and chapters. Use the stream numbers shown here with select_track. |
| select_trackA | Select a title, chapter, audio track, video track or subtitle track. Args: kind: One of title, chapter, audio, video, subtitle track_id: The stream number from get_tracks (or the title/chapter number). Use -1 for subtitle to disable it. |
| add_subtitleA | Load an external subtitle file into the currently playing video. Args: subtitle_path: Path relative to the video folder (or an absolute path) of a subtitle file such as .srt |
| get_playlistA | List the items in the VLC playlist with their ids. The current item is marked with *. |
| enqueue_videoA | Add a video to the end of the playlist without starting it. Args: video_path: Path relative to the video folder, as returned by get_available_videos |
| play_playlist_itemA | Play a playlist item by its id (from get_playlist). If item_id is omitted, plays the last active item. |
| remove_playlist_itemB | Remove an item from the playlist by its id. VLC marks this command as unsupported, so it may not work. |
| clear_playlistA | Remove every item from the playlist. |
| sort_playlistB | Sort the playlist. Args: mode: One of id, name, author, random, track_number reverse: True to sort in reverse order |
| toggle_playlist_modeA | Toggle a playlist mode on or off and report its new state. Args: mode: "random" (shuffle), "loop" (repeat whole playlist) or "repeat" (repeat current item) |
| get_equalizerA | Show the equalizer state: preamp, band gains and the available presets. |
| set_equalizerA | Change the equalizer. Only the arguments you pass are applied. Args: enabled: True to enable, False to disable the equalizer preset_id: Preset id from get_equalizer preamp_db: Preamp level, -20 to 20 dB band: Band 0-9 (0: 60 Hz, 1: 170 Hz, 2: 310 Hz, 3: 600 Hz, 4: 1 kHz, 5: 3 kHz, 6: 6 kHz, 7: 12 kHz, 8: 14 kHz, 9: 16 kHz). Requires gain_db. gain_db: Gain for the band, -20 to 20 dB |
| get_available_videosB | Get all available videos with their path. |
| browse_folderB | List the files and folders VLC sees in a folder, via VLC's own file browser. Args: folder: Path relative to the video folder (empty for the video folder itself), or an absolute path |
| get_album_artB | Get the album art / cover image for the current item, or for a playlist item id from get_playlist. |
| show_videoC | Show the video using the the video path and the subtitle language code. If the subtitle language code is an empty string, the video will play with no subtitle. |
| vlmA | Run a VLM (VideoLAN Manager) command, or list VLM elements when command is empty. Args: command: A VLM command such as "show", "new mybroadcast broadcast enabled", "control mybroadcast play". Leave empty to list all VLM elements. Returns VLC's raw XML response. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 26 tools
Most tools target a clearly distinct resource or action (volume, tracks, equalizer, playlist, subtitles, seeking), so an agent can pick correctly. There is mild overlap around playback start paths—show_video vs enqueue_video + play_playlist_item vs vlc_control(play/toggle)—and vlm is a catch-all escape hatch that partially duplicates other controls.
The set is overwhelmingly consistent snake_case verb_noun (get_volume, set_equalizer, play_playlist_item, toggle_playlist_mode, clear_playlist). A few outliers break the pattern: bare 'vlm', bare 'seek', and noun-first 'vlc_control', though they remain readable.
26 tools is at/just over the heavy end for a media-player controller. Each maps to a real VLC capability, but the surface could be trimmed (e.g. vlm overlaps other tools, volume get/set/adjust could collapse), making it borderline rather than well-scoped.
Coverage is broad: playback, volume, tracks/titles/chapters, subtitles, playlist management, equalizer, aspect ratio, A/V sync, seek, rate, file browsing, album art, and VLM. Only minor gaps remain (e.g. screenshot/snapshot, audio output device selection, recording), which agents can mostly work around via vlm.