An MCP (Model Contex Protocol) Server to play and control movies using VLC.
Project description
VLC MCP Server
An MCP (Model Contex Protocol) Server to play and control movies using VLC. I use this MCP server together with my signal-mcp-client on a Raspberry PI connected to my beamer. This way I can save video to a folder on my PI and I can send a signal message to play a movie.
The Anthropic API key is used to use claude-haiku to summarize all existing videos in your video folder.
Usage
The server uses the VLC http interface to play and control movies. Install VLC and start the http server with the following command:
vlc --extraintf=http --http-host=localhost --http-port=8080 --http-password=your_password
You also need to install mediainfo to get the subtitles:
Note: I don't know if this library is available on Mac and Windows. If you want to use it there, you can might need to disable using subtitles or find an alternative.
sudo apt-get install mediainfo
Then install uv and add the server to an MCP config using uvx:
{
"name": "vlc-mcp-server",
"command": "uvx",
"args": [
"vlc-mcp-server"
],
"env": {
"ANTHROPIC_API_KEY": "your-key",
"ROOT_VIDEO_FOLDER": "path/to/your/video/folder",
"VLC_HTTP_HOST": "localhost",
"VLC_HTTP_PORT": "8080",
"VLC_HTTP_PASSWORD": "your_password"
}
}
or clone the repo and use uv with a directory:
{
"name": "vlc-mcp-server",
"command": "uv",
"args": [
"--directory",
"path/to/root/dir/",
"run",
"vlc_mcp_player/server.py"
],
"env": {
"the same as above"
}
}
Development
Testing
Clone the repo and use mcp-client-for-testing to test the tools of the server.
uvx mcp-client-for-testing \
--config '
[
"the json config from above"
]
' \
--tool_call '{"name": "show_video", "arguments": {"video_title": "David Lynch - Dune", "subtitle_language_code": "en"}}'
Formatting and Linting
The code is formatted and linted with ruff:
uv run ruff format
uv run ruff check --fix
Building with uv
Build the package using uv:
uv build
Releasing a New Version
To release a new version of the package to PyPI:
- Create and push a new Git tag following semantic versioning:
git tag v0.2.0 git push origin v0.2.0
The GitHub Actions workflow will automatically build and publish the package to PyPI when a new tag is pushed. The version number will be derived directly from the Git tag.
License
This project is licensed under the MIT License. See the LICENSE file for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file vlc_mcp_server-0.1.0.tar.gz.
File metadata
- Download URL: vlc_mcp_server-0.1.0.tar.gz
- Upload date:
- Size: 34.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
71dfc54c4ca287564064fa02993b8761ef0d1c50c7a3ea65bbef30d54041c390
|
|
| MD5 |
60138c8db8ac2907a326531f35677bed
|
|
| BLAKE2b-256 |
fc4525b680c1682cc13710ac0946215e52e9587d6015627310b8ed9b335a8c74
|
Provenance
The following attestation bundles were made for vlc_mcp_server-0.1.0.tar.gz:
Publisher:
publish.yml on piebro/vlc-mcp-server
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
vlc_mcp_server-0.1.0.tar.gz -
Subject digest:
71dfc54c4ca287564064fa02993b8761ef0d1c50c7a3ea65bbef30d54041c390 - Sigstore transparency entry: 196921312
- Sigstore integration time:
-
Permalink:
piebro/vlc-mcp-server@d59e10f84106edda41cf13feb7ba785b2c389a6c -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/piebro
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@d59e10f84106edda41cf13feb7ba785b2c389a6c -
Trigger Event:
push
-
Statement type:
File details
Details for the file vlc_mcp_server-0.1.0-py3-none-any.whl.
File metadata
- Download URL: vlc_mcp_server-0.1.0-py3-none-any.whl
- Upload date:
- Size: 7.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b81cfc1b64f241a3a6f51690977084cf4ecd43d3a6f1cc032eb5a06b7a20fa01
|
|
| MD5 |
fb911742a44dc8b3f0e8bf33b310eebb
|
|
| BLAKE2b-256 |
edeeb71371aabccd2dc2a561d55a951bac012b466cdf746773e05eef71489f2e
|
Provenance
The following attestation bundles were made for vlc_mcp_server-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on piebro/vlc-mcp-server
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
vlc_mcp_server-0.1.0-py3-none-any.whl -
Subject digest:
b81cfc1b64f241a3a6f51690977084cf4ecd43d3a6f1cc032eb5a06b7a20fa01 - Sigstore transparency entry: 196921316
- Sigstore integration time:
-
Permalink:
piebro/vlc-mcp-server@d59e10f84106edda41cf13feb7ba785b2c389a6c -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/piebro
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@d59e10f84106edda41cf13feb7ba785b2c389a6c -
Trigger Event:
push
-
Statement type: