项目简介

VLC媒体控制MCP服务器是一个基于Model Context Protocol (MCP) 构建的应用后端,它允许用户通过MCP客户端远程控制安装了VLC媒体播放器的服务器,实现视频播放、暂停、停止、音量调节、进度控制以及视频列表获取等功能。该服务器特别适用于需要通过LLM客户端(如智能助手)控制媒体播放的场景,例如智能家居、会议室等。

主要功能点

  • 视频播放控制: 提供播放、暂停、停止、调整音量、进度控制等VLC媒体播放器的常用控制功能。
  • 视频列表管理: 能够扫描指定目录下的视频文件,并可以通过自然语言处理(Anthropic API)对视频列表进行总结,方便用户快速了解可播放内容。
  • 字幕选择播放: 支持根据字幕语言代码选择视频字幕进行播放。
  • 远程控制: 通过MCP协议与客户端通信,实现远程控制视频播放。
  • 工具集成: 将VLC媒体播放器的控制功能封装为MCP工具,方便LLM客户端调用。

安装步骤

  1. 安装VLC, mediainfo 和 uv: 在基于Debian的Linux系统(如Ubuntu, Raspberry Pi OS)上,使用以下命令安装必要的软件:

    sudo apt-get install vlc mediainfo
    curl -LsSf https://astral.sh/uv/install.sh | sh
  2. 启动VLC HTTP服务器接口: 为了使MCP服务器能够控制VLC,需要先启动VLC的HTTP服务器接口。在终端中运行以下命令,并替换 'your_password' 为你自己的密码:

    export DISPLAY=:0 # 如果在服务器上远程运行需要设置
    vlc --extraintf=http --http-host=localhost --http-port=8081 --http-password=your_password

    注意: 请确保VLC HTTP服务器接口已成功启动,并且端口和密码与MCP服务器配置一致。

  3. 配置环境变量: MCP服务器需要以下环境变量才能正常运行。你可以将这些变量添加到你的 '.bashrc' 或 '.zshrc' 文件中,或者在运行服务器之前临时设置。

    • 'ANTHROPIC_API_KEY': 你的 Anthropic API 密钥,用于视频列表总结和视频标题匹配功能。
    • 'ROOT_VIDEO_FOLDER': 你的视频文件存放的根目录的路径。
    • 'VLC_HTTP_HOST': VLC HTTP 服务器的主机地址,默认为 'localhost'。
    • 'VLC_HTTP_PORT': VLC HTTP 服务器的端口号,默认为 '8081' (根据上面VLC启动命令设置)。
    • 'VLC_HTTP_PASSWORD': VLC HTTP 服务器的密码,默认为 'your_password' (根据上面VLC启动命令设置)。
  4. 运行MCP服务器: 你可以选择以下两种方式运行MCP服务器:

    方式一:直接运行

    如果你的MCP客户端和服务器在同一台机器上,或者你已经将仓库克隆到本地:

    uv run vlc_mcp_player/main.py

    方式二:作为可执行程序运行

    如果你希望将MCP服务器打包成一个独立的可执行程序,可以使用 'uv build' 命令构建,然后运行生成的可执行文件。具体步骤请参考仓库 'README.md' 中的 "Building with uv" 和 "Releasing a New Version" 部分。

服务器配置 (MCP客户端配置)

为了让MCP客户端连接到 'vlc-mcp-server',你需要在客户端的配置文件中添加以下服务器配置信息。这是一个JSON格式的配置示例,你需要根据你的实际情况进行调整。

{
    "name": "vlc-mcp-server",  // 服务器名称,可以自定义
    "command": "uv",         // 启动服务器的命令,这里使用 uv 运行 Python 脚本
    "args": [                // 启动命令的参数
        "run",
        "vlc_mcp_player/main.py" // MCP 服务器主程序路径
    ],
    "env": {                 // 环境变量,需要与服务器运行环境一致
        "ANTHROPIC_API_KEY": "your-key",          // 你的 Anthropic API 密钥,请替换为实际密钥
        "ROOT_VIDEO_FOLDER": "/path/to/your/video/folder", // 你的视频根目录,请替换为实际路径
        "VLC_HTTP_HOST": "localhost",             // VLC HTTP 服务器地址,如果VLC和MCP服务器在同一机器,保持默认
        "VLC_HTTP_PORT": "8081",                // VLC HTTP 服务器端口,与VLC启动命令一致
        "VLC_HTTP_PASSWORD": "your_password"      // VLC HTTP 服务器密码,与VLC启动命令一致
    }
}

注意:

  • 请将 'your-key' 替换为你的实际 Anthropic API 密钥。
  • 请将 '/path/to/your/video/folder' 替换为你实际的视频文件存放根目录。
  • 确保 'VLC_HTTP_PORT' 和 'VLC_HTTP_PASSWORD' 与你启动VLC HTTP服务器时设置的一致。
  • 如果你使用 'uv build' 构建了可执行程序,'command' 和 'args' 可能需要根据实际情况调整。

基本使用方法

  1. 确保VLC HTTP服务器和MCP服务器都已成功启动。

  2. 在你的MCP客户端中配置并连接到 'vlc-mcp-server'。

  3. 使用MCP客户端提供的界面或命令调用以下工具来控制VLC播放器:

    • 'get_available_videos()': 获取并总结视频列表,返回可播放的视频信息。
    • 'show_video(video_title: str, subtitle_language_code: str = "")': 根据视频标题播放视频。'video_title' 是要播放的视频标题,'subtitle_language_code' 是可选的字幕语言代码(例如 "en" 表示英文字幕)。
    • 'vlc_control(action: str)': 控制VLC播放器的播放状态。'action' 可以是 "play" (播放), "pause" (暂停), "stop" (停止)。
    • 'seek(value: str)': 调整视频播放进度。'value' 可以是时间值,例如 "30s" (跳转到30秒), "+1m" (快进1分钟), "-10s" (后退10秒)。
    • 'get_status()': 获取VLC播放器的当前状态,例如播放状态、当前时间和文件名等。

示例工具调用 (假设使用 'mcp-client-for-testing')

uvx mcp-client-for-testing \
    --config '[ { "name": "vlc-mcp-server", "command": "uv", "args": ["run", "vlc_mcp_player/main.py"], "env": { "ANTHROPIC_API_KEY": "your-key", "ROOT_VIDEO_FOLDER": "/path/to/your/video/folder", "VLC_HTTP_HOST": "localhost", "VLC_HTTP_PORT": "8081", "VLC_HTTP_PASSWORD": "your_password" } } ]' \
    --tool_call '{"name": "show_video", "arguments": {"video_title": "你的视频标题", "subtitle_language_code": "en"}}'

请根据你的MCP客户端的具体使用方法调用相应的工具。

信息

分类

桌面与硬件