Philips TV (JointSpace + ADB) について
Philips Android TVを操作するサーバーです。JointSpaceとADBを使い、電源やAmbilight、アプリ、入力切替、YouTube再生を制御します。
主な機能
- 01電源・画面・音量の操作
- 02Ambilightのモードと色の設定
- 03テレビアプリの一覧表示と起動
- 04指定したYouTube動画の再生
- 05テレビ状態と起動中アプリの取得
- 06入力切替とリモコンキー送信
活用シーン
- 01AIクライアントからテレビ設定を調整
- 02指定したYouTube動画を再生
- 03操作前にテレビの状態を確認
MCP 対応
電源、音量、Ambilight、アプリ起動、YouTube再生、状態取得、リモコンキー送信などのテレビ操作ツールをMCPクライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx pylips-mcpTV_HOSTIP address of the Philips TVTV_USERJointSpace pairing username (from pylips pairing)TV_PASSシークレットJointSpace pairing passwordDENON_HOSTOptional Denon AVR IP: volume and mute are redirected to the amplifier (HDMI ARC)DENON_PORTDenon telnet portPYLIPS_TLS_FINGERPRINTOptional SHA-256 fingerprint to pin the TV certificateローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
17掲載時のツール一覧 · 2 週間前に更新
このツールにパラメーターはありません。
詳細
pylips-mcp
JointSpace APIとADBを使用してPhilips Android TVを操作するMCP サーバーです。
電源、音量、Ambilight、アプリの起動、YouTubeの再生をカバーする14個のツールを提供します。 TP VisionのSHA1証明書チェーンを透過的に処理します。
デモ

実際のテレビでdocs/demo/record.shを使って録画しました。最小限のMCP クライアント(docs/demo/mcp_demo.py)が、環境変数TV_HOST/TV_USER/TV_PASSを設定してstdio経由でサーバーを起動し、ツールの一覧を表示してget_stateを呼び出します(読み取り専用)。認証情報が画面に表示されることはありません。
ツール
| ツール | 役割 |
|---|---|
power_on | Philips TVの電源を入れます |
power_off | Philips TVの電源を切ります(スタンバイ) |
screen_off | 音声を再生したままTV画面を消します(音楽モード)。注:主にHDMI/TVソースで動作し、Androidモードでは制限があります。 |
screen_on | screen_offの後にTV画面を再度点灯させます |
volume_up | TVの音量を上げます(デフォルトは+5) |
volume_down | TVの音量を下げます(デフォルトは-5) |
volume_set | TVの音量を指定したレベルに設定します |
mute | TVの音声をミュートまたはミュート解除します |
ambilight_on | TVのAmbilightを有効にします |
ambilight_off | TVのAmbilightを無効にします |
ambilight_mode | Ambilightのモードを変更します |
ambilight_color | Ambilightを単色(RGB 0~255)に設定します。明るさは任意です |
list_apps | TVで利用可能なアプリを一覧表示します |
launch_app | TVでアプリを起動します |
youtube_video | 指定した動画(YouTubeのURLまたは動画ID)でYouTubeを起動します |
get_state | TVの現在の状態を返します:powerstate(On/Standby)、音量、ミュート状態、ambilight_on、ambilight_mode |
current_app | TVに表示中の内容を返します:kind(app、input=HDMIまたはアンテナ入力、home、other)、app(launch_app用の名前)、package |
set_source | TVをHDMI入力(hdmi1~hdmi4)に切り替えるか、ホームメニュー(home)に戻します |
send_key | リモコンのキーを送信します |
YouTube IDの抽出
extract_video_idはcatt-mcp内でも意図的に重複して実装されています(cast_youtube、開始位置指定およびデュアルスクリーン同期対応のChromecast)。どちらのサーバーも個別にインストールでき、それぞれ同じテストケース一覧(tests/test_youtube_id.py)で独自の実装をテストします。この判断は2026-09-20に記録されました。
要件
- Python 3.10+
- JointSpaceの認証情報(ユーザー名とパスワード)。TVとの初回ペアリングで取得します(「セットアップ」を参照)。サーバー自体はTV APIに直接接続するため、実行時にpylipsは必要ありません
- JointSpace APIが有効なPhilips Android TV(2016年以降のモデル)
- TVでADBが有効になっていること(YouTubeのディープリンク用)
- Pythonパッケージ
wakeonlan(任意。Wake-on-LAN用)
1行でインストール
uvx pylips-mcp # depuis PyPI ; avant publication : uvx --from git+https://github.com/amineutron/pylips-mcp pylips-mcp
Claude Desktop/Claude Codeの設定(mcpServers):
{ "pylips": { "command": "uvx", "args": ["pylips-mcp"], "env": { "TV_HOST": "192.0.2.10", "TV_USER": "...", "TV_PASS": "..." } } }
セットアップ
1. TVとペアリングする
ペアリングは一度だけ行い、JointSpaceのユーザー名とパスワードを取得します。
eslavnov/pylipsのリポジトリをクローンし、そのリポジトリにあるペアリングツールを使用して、TVのIPアドレスを指定のうえREADMEに従ってください(PyPIのpylipsパッケージは無関係のプロジェクトです。pip install pylipsは実行しないでください)。
以降、pylips-mcpにpylipsは必要ありません。
ペアリングで取得したユーザー名とパスワードは保管してください。config.yaml(手順3)またはTV_USER/TV_PASSに設定します。
2. 依存関係をインストールする
pip install pylips-mcp # or: uvx pylips-mcp
3. 設定する
config.example.yamlをconfig.yamlにコピーし、TVの認証情報を入力します。
tv:
host: "192.168.0.XX"
user: "your_user"
pass: "your_password"
4. 実行
pylips-mcp # installed (pip, uvx) ; `pylips-mcp --help` lists the settings
python -m pylips_mcp # same thing, from any environment where the package is installed
python server.py # from a clone, without installing (thin launcher, code in pylips_mcp/)
または、環境変数で設定します。
TV_HOST=192.168.0.XX TV_USER=xxx TV_PASS=xxx pylips-mcp
コードは pylips_mcp パッケージ(TP Vision の証明書を含む)に格納されているため、モジュール名が競合することなく、ほかの MCP サーバーと一緒にインストールできます。
Claude Desktop の設定
{
"mcpServers": {
"philips-tv": {
"command": "python3",
"args": ["/path/to/pylips-mcp/server.py"],
"env": {
"TV_HOST": "192.168.0.XX",
"TV_USER": "your_user",
"TV_PASS": "your_password"
}
}
}
}
SSL に関する注意事項
Philips TV は、SHA1 で署名された 2015 年の TP Vision 証明書チェーンを提示します。
最新の OpenSSL と Fedora/RHEL の暗号化ポリシーでは SHA1 署名が拒否されるため、同梱のチェーンを使用し、SECLEVEL=0 を指定しても、従来の CA 検証は不可能です。
このサーバーが代わりに行う処理は、次のとおりです。
- CA 検証は無効です(成功しないためです)。
- TV が提示する証明書の SHA-256 フィンガープリントが、
tpvision_ca.pemに含まれるリーフ証明書と一致する必要があります(一致確認は TLS ハンドシェイク後に urllib3 が行うため、秘密鍵がなければ中間者が TV になりすますことはできません)。実機の 55OLED705(JointSpace 6、ポート 1926)で検証済みです。 PYLIPS_TLS_FINGERPRINT=<sha256 hex>を指定すると別の TV のフィンガープリントを固定でき、PYLIPS_TLS_PIN=0を指定すると固定が無効になり、警告がログに記録されます。
tpvision_ca.pem は公開されている TP Vision 証明書チェーン(リーフ証明書 restfultv.tpvision.com、中間証明書 ca.tpvision.com、ルート証明書 www.tpvision.com、有効期限 2042 年)です。openssl s_client -showcerts を使用して TV から抽出しました。秘密情報は含まれていません。
ライセンス
MIT
HDMI ARC 接続時の音量
TV を HDMI ARC でアンプに接続すると、音声は TV から出力されません。そのため、TV の音量を操作しても音は変わりません。設定で denon.host が指定されている場合、volume_up、volume_down、volume_set、mute は Denon アンプに転送されます。指定されていない場合は、TV の API を使用します。
アンプを直接操作する場合(入力切り替え、電源オフ、状態確認)は、 denon-mcp を使用してください。
Lyra エコシステムの一部
| リポジトリ | 役割 |
|---|---|
| lyra | デフォルトでローカル動作する音声対応 DevOps アシスタント(AGPL-3.0) |
| fedora-agents | MCP:KVM 仮想マシンとバックアップ |
| mcp-tracking | MCP + API + 長時間実行タスクのダッシュボード |
| neutroncore | ホームラボの PWA ハブ |
| hue-mcp | Philips Hue 用 MCP(ThomasRohde/hue-mcp のフォーク) |
| pylips-mcp | Philips TV 用 MCP |
| denon-mcp | Denon アンプ用 MCP |
| catt-mcp | Chromecast および DLNA 用 MCP |
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。