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/main.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.2.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.2-py3-none-any.whl (7.4 kB view details)

Uploaded Python 3

File details

Details for the file vlc_mcp_server-0.1.2.tar.gz.

File metadata

  • Download URL: vlc_mcp_server-0.1.2.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.2.tar.gz
Algorithm Hash digest
SHA256 36f8c2c8da7488b568a65fafa8e509be7f34397d045901d0edf3253d723b4f4a
MD5 3f8abed26132b230c1aa90dabbf68982
BLAKE2b-256 33686d0b5bc3182a8061c6ec9cf3b44afc8e8228ac42162607b3f8ff67ced9ed

See more details on using hashes here.

Provenance

The following attestation bundles were made for vlc_mcp_server-0.1.2.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.2-py3-none-any.whl.

File metadata

  • Download URL: vlc_mcp_server-0.1.2-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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 95373d7cb1c81aedd330593a5dad53312e89872b183f4e2532c5e0006b4714cc
MD5 17efbedf04cddb6b5cfdc8810fc27961
BLAKE2b-256 33b47385994b1c97a49751dac418bdbf220cb081a470dbfb16af5755d18d7287

See more details on using hashes here.

Provenance

The following attestation bundles were made for vlc_mcp_server-0.1.2-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