コンテンツにスキップ

MCP エコシステム

Model Context Protocol(MCP)は、AI にツールを提供するための標準規格。

MCP とは何か

graph LR
    AI["AI (Claude)"] <-->|MCP| Server["MCP サーバー"]
    Server <-->|WebSocket| App["Unity / ブラウザ等"]

従来: AI はテキストの入出力しかできない
MCP: AI が「ツール」を呼び出して外部システムを操作できる

身近な例え

概念 人間の世界 MCP の世界
ツール ハンマー、ドライバー execute_editor_command, get_editor_state
リソース 設計図、マニュアル editor://state, editor://logs
サーバー 工具棚 unity-mcp-server

UnityMCP-VRC のアーキテクチャ

sequenceDiagram
    participant Claude as AI (Claude)
    participant Server as MCP Server (Node.js)
    participant Unity as Unity Editor (C#)

    Note over Claude,Unity: 1. 接続確立
    Unity->>Server: WebSocket 接続
    Server->>Claude: ツール一覧を公開

    Note over Claude,Unity: 2. AI がツールを使う
    Claude->>Server: execute_editor_command("CreateCube()")
    Server->>Unity: コマンド送信
    Unity->>Unity: C# コード実行
    Unity->>Server: 実行結果
    Server->>Claude: 結果返却

ディレクトリ構造

unity-mcp-server/src/
├── index.ts              # エントリポイント
├── communication/        # WebSocket 接続管理
├── tools/                # AI に公開するツール
│   ├── execute_editor_command.ts
│   ├── get_editor_state.ts
│   └── ...
└── resources/            # AI に公開するデータ
    ├── editor_state.ts
    ├── editor_logs.ts
    └── ...

ツールの定義パターン

{
  name: "execute_editor_command",
  description: "Unity Editor 内で C# コードを実行する",
  inputSchema: {
    type: "object",
    properties: {
      code: { type: "string", description: "実行する C# コード" }
    },
    required: ["code"]
  }
}

構造: 名前 + 説明 + 入力スキーマ。AI はこの情報だけでツールの使い方を判断する。

MCP の設計原則

ツール vs リソース

種類 性質
ツール 副作用あり(何かを変更する) コマンド実行、ファイル作成
リソース 読み取り専用 エディタ状態、ログ取得

良いツール設計

原則 OK NG
単一責任 create_cube() create_cube_and_set_color_and_add_script()
明確な命名 get_editor_state do_thing
型付き引数 code: string args: any

動的 C# 実行

Unity プラグインは受け取った C# コードをメモリ内でコンパイルして実行する。

public class EditorCommand
{
    public static object Execute()
    {
        GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
        cube.transform.position = new Vector3(0, 1, 0);
        return "Cube created at (0, 1, 0)";
    }
}

制約: EditorCommand クラスの static object Execute() メソッドが必須。
この「契約」により、AI が生成するコードの形式が統一される。

自分のプロジェクトで使われている MCP

プロジェクト MCP の用途
UnityMCP-VRC AI → Unity Editor の操作
DeepCode mcp_agent.config.yaml でのエージェント構成
全プロジェクト Claude Desktop / Gemini CLI からのツール利用

チェックリスト

  • [ ] MCP のツールとリソースの違いを説明できる
  • [ ] WebSocket と HTTP の使い分けを理解している
  • [ ] ツール定義に必要な3要素(名前、説明、スキーマ)を挙げられる
  • [ ] 動的コード実行のリスクと制約を説明できる