视频播放控制服务器

一个基于VLC媒体播放器的MCP服务器,用于远程播放和控制视频。

  • by piebro
  • Python
  • 本地部署
  • 14 星标
  • 更新于
在 GitHub 查看 piebro/vlc-mcp-server

使用说明

VLC MCP服务器

MCP(模型上下文协议)服务器,用于使用VLC媒体播放器播放和控制电影。 使用任何MCP客户端远程控制播放视频(例如。 很棒的mcp客户)

我用我的 信号mcp客户端 在一台连接着我的投影仪的旧笔记本电脑上跑步。 这样我就可以通过发送信号消息来播放电影。 下面的屏幕截图显示了如何使用它的示例。

用法

此安装适用于运行Ubuntu或类似基于Debian的系统(如Raspberry Pi OS)的Linux系统。 经过一些修改,它也应该适用于其他系统。 如果你让它在另一个系统上工作,可以随意创建拉取请求。

  1. 安装VLC、mediainfo和uv。

    sudo apt-get install vlc mediainfo
    curl -LsSf https://astral.sh/uv/install.sh | sh
    
  2. 启动VLC http服务器:

    export DISPLAY=:0 # needed when running it remotely on a server
    vlc --extraintf=http --http-host=localhost --http-port=8081 --http-password=your_password
    
  3. 将服务器添加到客户端的MCP配置文件中(如 信号mcp客户端 或 很棒的mcp客户)

    {
        "name": "vlc-mcp-server",
        "command": "uvx",
        "args": [
            "vlc-mcp-server"
        ],
        "env": {
            "ROOT_VIDEO_FOLDER": "path/to/your/video/folder",
            "VLC_HTTP_HOST": "localhost",
            "VLC_HTTP_PORT": "8081",
            "VLC_HTTP_PASSWORD": "your_password"
        }
    }
    

    或克隆仓库并使用 uv 使用目录:

    {
        "name": "vlc-mcp-server",
        "command": "uv",
        "args": [
            "--directory",
            "path/to/root/dir/",
            "run",
            "vlc_mcp_player/main.py"
        ],
        "env": {
            "the same as above"
        }
    }
    

贡献

欢迎为这个项目捐款。您可以随时报告错误、提出想法或创建合并请求。

发展

克隆仓库并安装依赖项:

git clone https://github.com/piebro/vlc-mcp-server.git
uv venv
uv sync --extra dev
uv run pre-commit install

测试

使用 用于测试的mcp客户端 使用本地路径使用json配置测试服务器的工具。

uvx mcp-client-for-testing \
    --config '
    [
        "the json config from above"
    ]
    ' \
    --client_log_level "INFO" \
	--server_log_level "INFO" \
    --tool_call '{"name": "show_video", "arguments": {"video_title": "David Lynch - Dune", "subtitle_language_code": "en"}}'

格式化和装订

代码被格式化并用ruff过梁:

uv run ruff format
uv run ruff check --fix

紫外线建筑

使用uv构建包:

uv build

发布新版本

要将包的新版本发布到PyPI,请创建并推送一个新的Git标签:

  1. 检查主分支并获取当前版本:

    git checkout main
    git pull origin main
    git describe --tags
    
  2. 创建并推送一个新的Git标签:

    git tag v0.2.0
    git push origin v0.2.0
    

当推送新标签时,GitHub Actions工作流将自动构建包并将其发布到PyPI。 python包版本号将直接从Git标签中导出。

作为系统服务运行

为了确保VLC HTTP接口在启动时自动运行,并在失败时重新启动(在Linux系统上),您可以将其设置为systemd用户服务。 用户服务在您的特定用户帐户下运行。

此设置假定您已完成设置步骤。

  1. 启用“用户逗留”以在注销后保持用户会话活动。

    sudo loginctl enable-linger $USER
    
  2. 创建系统服务目录

    mkdir -p /home/$USER/.config/systemd/user/
    
  3. 为VLC HTTP服务器创建服务文件。 确保使用apt而不是snap安装vlc,或者更改vlc二进制文件的路径。

    cat << EOF > "/home/$USER/.config/systemd/user/vlc-http.service"
    [Unit]
    Description=VLC Media Player with HTTP Interface
    After=network.target sound.target
    
    [Service]
    Restart=on-failure
    RestartSec=30
    SyslogIdentifier=vlc-http
    Environment="DISPLAY=:0"
    
    ExecStart=/usr/bin/vlc --extraintf=http --http-host=localhost --http-port=8081 --http-password=your_password
    
    ExecStop=/usr/bin/pkill -f '/usr/bin/vlc --extraintf=http --http-host=localhost --http-port=8080'
    
    [Install]
    WantedBy=default.target
    EOF
    
  4. 启用并启动服务

    systemctl --user daemon-reload
    systemctl --user enable vlc-http.service
    systemctl --user start vlc-http.service
    
  5. 检查服务状态和日志

    systemctl --user status vlc-http.service
    journalctl --user -u vlc-http.service -f
    

许可证

该项目根据MIT许可证获得许可。请参阅 许可证 文件以获取详细信息。