mcpField
P
Philips TV (JointSpace + ADB)

Philips TV (JointSpace + ADB)

ローカル
github.comゲーム・エンタメ02 週間前に更新

Philips TV (JointSpace + ADB) について

Philips Android TVを操作するサーバーです。JointSpaceとADBを使い、電源やAmbilight、アプリ、入力切替、YouTube再生を制御します。

主な機能

  1. 01電源・画面・音量の操作
  2. 02Ambilightのモードと色の設定
  3. 03テレビアプリの一覧表示と起動
  4. 04指定したYouTube動画の再生
  5. 05テレビ状態と起動中アプリの取得
  6. 06入力切替とリモコンキー送信

活用シーン

  1. 01AIクライアントからテレビ設定を調整
  2. 02指定したYouTube動画を再生
  3. 03操作前にテレビの状態を確認

MCP 対応

電源、音量、Ambilight、アプリ起動、YouTube再生、状態取得、リモコンキー送信などのテレビ操作ツールをMCPクライアントに公開します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"amineutron-pylips": {
"command": "uvx",
"args": [
"pylips-mcp"
],
"env": {
"TV_HOST": "<TV_HOST>",
"TV_USER": "<TV_USER>",
"TV_PASS": "<TV_PASS>",
"DENON_HOST": "<DENON_HOST>",
"DENON_PORT": "<DENON_PORT>",
"PYLIPS_TLS_FINGERPRINT": "<PYLIPS_TLS_FINGERPRINT>"
}
}
}
}
起動コマンドuvx pylips-mcp
設定が必要な環境変数
TV_HOSTIP address of the Philips TV
TV_USERJointSpace pairing username (from pylips pairing)
TV_PASSシークレットJointSpace pairing password
DENON_HOSTOptional Denon AVR IP: volume and mute are redirected to the amplifier (HDMI ARC)
DENON_PORTDenon telnet port
PYLIPS_TLS_FINGERPRINTOptional SHA-256 fingerprint to pin the TV certificate

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypipylips-mcp0.4.0

ツール

17

掲載時のツール一覧 · 2 週間前に更新

このツールにパラメーターはありません。

詳細

pylips-mcp

tests License: MIT Python 3.10+

JointSpace APIとADBを使用してPhilips Android TVを操作するMCP サーバーです。

電源、音量、Ambilight、アプリの起動、YouTubeの再生をカバーする14個のツールを提供します。 TP VisionのSHA1証明書チェーンを透過的に処理します。

デモ

MCP クライアント:16個のツールを表示した後、実際のテレビで get_state を実行

実際のテレビでdocs/demo/record.shを使って録画しました。最小限のMCP クライアント(docs/demo/mcp_demo.py)が、環境変数TV_HOST/TV_USER/TV_PASSを設定してstdio経由でサーバーを起動し、ツールの一覧を表示してget_stateを呼び出します(読み取り専用)。認証情報が画面に表示されることはありません。

ツール

ツール役割
power_onPhilips TVの電源を入れます
power_offPhilips TVの電源を切ります(スタンバイ)
screen_off音声を再生したままTV画面を消します(音楽モード)。注:主にHDMI/TVソースで動作し、Androidモードでは制限があります。
screen_onscreen_offの後にTV画面を再度点灯させます
volume_upTVの音量を上げます(デフォルトは+5)
volume_downTVの音量を下げます(デフォルトは-5)
volume_setTVの音量を指定したレベルに設定します
muteTVの音声をミュートまたはミュート解除します
ambilight_onTVのAmbilightを有効にします
ambilight_offTVのAmbilightを無効にします
ambilight_modeAmbilightのモードを変更します
ambilight_colorAmbilightを単色(RGB 0~255)に設定します。明るさは任意です
list_appsTVで利用可能なアプリを一覧表示します
launch_appTVでアプリを起動します
youtube_video指定した動画(YouTubeのURLまたは動画ID)でYouTubeを起動します
get_stateTVの現在の状態を返します:powerstate(On/Standby)、音量、ミュート状態、ambilight_on、ambilight_mode
current_appTVに表示中の内容を返します:kind(app、input=HDMIまたはアンテナ入力、home、other)、app(launch_app用の名前)、package
set_sourceTVを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-agentsMCP:KVM 仮想マシンとバックアップ
mcp-trackingMCP + API + 長時間実行タスクのダッシュボード
neutroncoreホームラボの PWA ハブ
hue-mcpPhilips Hue 用 MCP(ThomasRohde/hue-mcp のフォーク)
pylips-mcpPhilips TV 用 MCP
denon-mcpDenon アンプ用 MCP
catt-mcpChromecast および DLNA 用 MCP

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。