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.1.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.1-py3-none-any.whl (7.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: vlc_mcp_server-0.1.1.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.1.tar.gz
Algorithm Hash digest
SHA256 c4af9cea4a5e351307715ee60f76f5ce68ecf20f1423b7c25947f9148972461d
MD5 0c896e894ebd3e254f559e2b355faed9
BLAKE2b-256 67c8b25934ffceeafa9a67ba799d0ea24c072abb8591471e1bfc81fcaa31d79a

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: vlc_mcp_server-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 7.3 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6e2cee417301cfe8432db9ae664cc14379ef887bc129ffeeca0b3f39c00efd27
MD5 220f49deb7da7c24dda234f3255db2a5
BLAKE2b-256 e01e5de51c4915e3f97814ff120fd5004ee0d8e48cf62a5ad15bf0ae623ecc19

See more details on using hashes here.

Provenance

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