Skip to main content

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:

  1. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vlc_mcp_server-0.1.0.tar.gz (34.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

vlc_mcp_server-0.1.0-py3-none-any.whl (7.4 kB view details)

Uploaded Python 3

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

Hashes for vlc_mcp_server-0.1.0.tar.gz
Algorithm Hash digest
SHA256 71dfc54c4ca287564064fa02993b8761ef0d1c50c7a3ea65bbef30d54041c390
MD5 60138c8db8ac2907a326531f35677bed
BLAKE2b-256 fc4525b680c1682cc13710ac0946215e52e9587d6015627310b8ed9b335a8c74

See more details on using hashes here.

Provenance

The following attestation bundles were made for vlc_mcp_server-0.1.0.tar.gz:

Publisher: publish.yml on piebro/vlc-mcp-server

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for vlc_mcp_server-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b81cfc1b64f241a3a6f51690977084cf4ecd43d3a6f1cc032eb5a06b7a20fa01
MD5 fb911742a44dc8b3f0e8bf33b310eebb
BLAKE2b-256 edeeb71371aabccd2dc2a561d55a951bac012b466cdf746773e05eef71489f2e

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page