VLC MCP Server について
VLC MCP Serverは、MCPクライアントからVLCの動画再生を操作するサーバーです。プロジェクター接続PCなどでの利用を想定し、UbuntuやDebian系Linux向けの導入手順を説明しています。
主な機能
- 01VLC動画再生のリモート操作
- 02MCPクライアントとの連携
- 03動画フォルダーの設定
- 04Linux向け導入手順
活用シーン
- 01プロジェクター接続PCで映画を再生する
- 02MCPクライアントからVLCを遠隔操作する
MCP 対応
MCPクライアントからVLCを遠隔操作できます。クライアントのMCP設定にサーバーを追加して接続します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
VLC MCP サーバー
VLC メディアプレーヤーを使って動画を再生・操作するための MCP(Model Context Protocol)サーバーです。 任意の MCP クライアントを使って、動画をリモートで再生できます(例:awesome-mcp-clients)。
私は、プロジェクターに接続した古いノートパソコンで signal-mcp-client を実行しています。 これにより、Signal メッセージを送信して動画を再生できます。 使い方の例を以下のスクリーンショットに示します。
使い方
このインストール方法は、Ubuntu または Raspberry Pi OS のような Debian ベースのシステムを実行する Linux システム向けです。 いくつか変更を加えれば、ほかのシステムでも動作するはずです。 ほかのシステムで動作させることができた場合は、プルリクエストをお寄せください。
-
VLC、mediainfo、uv をインストールします。
sudo apt-get install vlc mediainfo curl -LsSf https://astral.sh/uv/install.sh | sh -
VLC の HTTP サーバーを起動します。
export DISPLAY=:0 # サーバー上でリモート実行する場合に必要です vlc --extraintf=http --http-host=localhost --http-port=8081 --http-password=your_password -
クライアント(signal-mcp-client や awesome-mcp-clients など)の 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-client-for-testing を使い、ローカルパスを使用する 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 を使ってパッケージをビルドします。
uv build
新しいバージョンのリリース
パッケージの新しいバージョンを PyPI にリリースするには、新しい Git タグを作成してプッシュします。
-
main ブランチをチェックアウトし、現在のバージョンを確認します。
git checkout main git pull origin main git describe --tags -
新しい Git タグを作成してプッシュします。
git tag v0.2.0 git push origin v0.2.0
新しいタグがプッシュされると、GitHub Actions のワークフローによってパッケージが自動的にビルドされ、PyPI に公開されます。 Python パッケージのバージョン番号は、Git タグから直接取得されます。
Systemd サービスとして実行する
VLC の HTTP インターフェースが起動時に自動的に実行され、障害時に再起動するようにするには(Linux システムの場合)、systemd ユーザーサービスとして設定できます。 ユーザーサービスは、特定のユーザーアカウントで実行されます。
この設定では、セットアップ手順が完了していることを前提としています。
-
ユーザーのログアウト後もユーザーセッションをアクティブに保つため、ユーザーのリンギングを有効にします。
sudo loginctl enable-linger $USER -
Systemd サービスディレクトリを作成します
mkdir -p /home/$USER/.config/systemd/user/ -
VLC HTTP サーバーのサービスファイルを作成します。 apt を使用して vlc をインストールしていることを確認してください。snap を使用している場合は、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 -
サービスを有効にして起動します
systemctl --user daemon-reload systemctl --user enable vlc-http.service systemctl --user start vlc-http.service -
サービスのステータスとログを確認します
systemctl --user status vlc-http.service journalctl --user -u vlc-http.service -f
ライセンス
このプロジェクトは MIT License の下でライセンスされています。詳細は LICENSE ファイルをご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。