D3D12LookDevPTとの連携例

August 7, 2026 · View on GitHub

このページでは、LocalMCPChatClientのローカルGemmaから、別アプリのD3D12LookDevPTへMCP接続し、レンダラーの状態確認や設定変更を日本語チャットで行う例を説明します。

4枚目のスクリーンショットは接続先のMCPサーバーアプリです。D3D12LookDevPTはこのリポジトリやLocalMCPChatClientのReleaseには含まれません。

flowchart LR
    User["利用者"] --> Chat["LocalMCPChatClient\nWPFチャット"]
    Chat --> Gemma["ローカルGemma 4"]
    Gemma --> Client["MCPクライアント\nTool Call検証・承認"]
    Client -->|"Streamable HTTP\n127.0.0.1:8777/mcp"| Server["D3D12LookDevPT\nMCP Server"]
    Server --> Renderer["Direct3D 12 / DXRレンダラー"]

1. 事前準備

  • LocalMCPChatClientでGemma 4 E2BまたはE4Bと推論ランタイムを準備しておく
  • D3D12LookDevPTを同リポジトリの日本語READMEに従ってビルド・起動する
  • D3D12LookDevPT側で、確認に使うシーンまたはプロジェクトを開く

D3D12LookDevPTはWindows 11 x64、DXR Tier対応GPU、Visual StudioのC++開発環境を対象としています。詳細な対応環境とアセットの準備方法は接続先リポジトリの文書を正としてください。

2. D3D12LookDevPTのMCPサーバーを起動する

Bistro Interiorを表示し、MCP Serverパネルを開いたD3D12LookDevPT

  1. 画面下部の「MCP Server」パネルを開く
  2. Portを8777にする
  3. Request Timeoutを120秒にする
  4. Access Modeを選択する
  5. 「Copy Token」でBearerトークンを取得する
  6. 「Start Server」を選択する

Access Modeの違いは次の通りです。

モード動作
read_only状態参照だけを許可し、設定変更を拒否する
confirm_mutations設定変更をD3D12LookDevPTのMCPパネルで承認・拒否する
allow_mutationsサーバー側の追加承認なしで設定変更を実行する

初回確認ではconfirm_mutationsを推奨します。この場合、LocalMCPChatClientのTool Call承認に加え、D3D12LookDevPT側でもmutationのApproveが必要です。どちらかで拒否した操作は実行されません。

サーバーは127.0.0.1だけで待ち受けます。Bearerトークンは秘密情報です。画像、Markdown保存した会話、Issue、README、Git管理ファイルへ含めないでください。

3. LocalMCPChatClientへ接続を登録する

D3D12LookDevPTリポジトリのconfig/LocalMCPChatClient.mcp.jsonを「設定」→「MCP接続」→「JSONからインポート」で読み込むのが最短です。手動で追加する場合は「+ HTTP」を選び、次を入力します。

UI項目
表示名D3D12LookDevPT
有効オン
Streamable HTTP URLhttp://127.0.0.1:8777/mcp
standalone GETオフ
Content-Lengthオフのままで可
Bearerトークンの環境変数名D3D12LOOKDEVPT_MCP_TOKEN
HTTPヘッダー追加なし
接続開始タイムアウト10
ツール実行タイムアウト120

MCP-Protocol-Versionは追加ヘッダーへ設定しません。LocalMCPChatClientが使用するMCP C# SDK 2.1.0とD3D12LookDevPTは2026-07-28のstateless方式を自動交渉します。サーバーは旧クライアント向けに2025-11-25 / 2025-06-18も保持していますが、通常は固定する必要がありません。

Windowsのユーザー環境変数D3D12LOOKDEVPT_MCP_TOKENへ、D3D12LookDevPTでコピーしたトークンだけを設定します。環境変数を追加・変更した後は、LocalMCPChatClientを完全に終了してから起動し直してください。

環境変数の代わりにWindows Credential Managerを使う場合は、環境変数名を空にし、「秘密のHTTPヘッダー」へ次を入力します。

Authorization=Bearer <D3D12LookDevPTでコピーしたトークン>

環境変数方式と秘密ヘッダー方式は同時に設定しません。「接続テスト」で成功を確認してから「保存」を選びます。

Note

D3D12LookDevPTはHTTP POSTによるStreamable HTTP形式を実装しています。「standalone GET」はオフにしてください。最新方式のresource subscriptionはPOST subscriptions/listenのSSE responseであり、LocalMCPChatClient 0.1.2が使用するTools接続にstandalone GETは不要です。

4. 利用可能な機能を会話で確認する

接続済みMCPツールの概要をGemmaが説明しているLocalMCPChatClient

メイン画面右上のMCP表示で接続数とTool数を確認し、例えば次のように送信します。

このツールではMCPで何ができますか?

Gemmaは接続時に取得したTool定義を基に、シーン、カメラ、ライティング、マテリアル、パストレーシング、デノイズなどの操作を説明します。回答はモデル生成なので、正確な引数と対応機能は接続時のtools/list結果を優先してください。

5. 露出を変更する

次のように送信します。

露出を1.0にして

Gemmaがlookdevpt.set_color_managementに対応する名前空間化Toolを選ぶと、LocalMCPChatClientが引数を検証して承認画面を表示します。「今回のみ許可」または「常に許可」を選ぶとMCPサーバーへ要求を送ります。

confirm_mutationsを使用している場合は、続けてD3D12LookDevPTのMCP Serverパネルで要求をApproveします。完了後、LocalMCPChatClientにはTool Callカードと最終回答が表示されます。

露出1.0のTool Call引数、サーバー結果、Gemmaの最終回答

D3D12LookDevPTのViewport設定でもExposureが1になっていることを確認できます。変更直後の状態参照はレンダラーのスナップショット更新よりわずかに早い場合があるため、必要ならもう一度状態を質問してください。

6. 通常の会話を続ける

MCP接続中でも、すべての質問でToolを実行するわけではありません。次の例ではトーンマッパーの選択肢を確認し、続けてACESについて質問しています。

トーンマッパーの選択肢とACESについて会話している画面

トーンマッパーの種類は?
ACESとはどんなトーンマッパーですか?

説明だけで回答できる場合、Gemmaは通常のチャット応答を返します。実際の値を変更したい場合は「トーンマッパーをACESにして」のように、対象と変更内容を明示します。

対応範囲

D3D12LookDevPTのMCPサーバーはToolsに加えてResources、Prompts、resource subscriptionも公開しますが、LocalMCPChatClient 0.1.2はTools中心の初期版です。本アプリから利用できるのは接続時にToolsとして列挙された機能です。

サーバーの完全なTool一覧、スキーマ、Resources、PromptsはD3D12LookDevPTのMCPサーバー文書を参照してください。

接続できない場合

  • 401 Unauthorized: トークンをコピーし直し、環境変数または秘密ヘッダーを更新して再接続する
  • GET /mcp405: 「standalone GET」をオフにする。同サーバーでは想定された応答
  • Protocol Versionエラー: 追加ヘッダーのMCP-Protocol-Versionを削除し、両アプリを最新ビルドへ更新する
  • mutationが完了しない: D3D12LookDevPTのMCP Serverパネルに承認待ちがないか確認する
  • タイムアウトする: 両アプリのタイムアウトを確認し、D3D12LookDevPT側の要求を時間内にApproveする
  • Tool一覧が更新されない: LocalMCPChatClientで接続し直す

一般的な確認項目はトラブルシューティングも参照してください。