unity-doc-mcp-server

zabaglione/unity-doc-mcp-server

3.1

If you are the rightful owner of unity-doc-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

The Unity Documentation MCP Server provides Unity 6 official documentation through the Model Context Protocol, enabling AI assistants like Claude Code to access accurate documentation information during Unity development.

Tools
5
Resources
0
Prompts
0

Unity Documentation MCP Server

Unity 6公式ドキュメントとパッケージドキュメントをModel Context Protocol経由で提供するMCPサーバー。Claude Code等のAIアシスタントがUnity開発時に正確なドキュメント情報を参照できるようにします。

主な機能

  • Unity 6 (6000.x) 公式ドキュメントのダウンロード・解析・検索
  • Unity パッケージドキュメントのサポート(ECS、Input System、URP等)
  • SQLite FTS5による高速全文検索(特殊文字対応済み)
  • ページネーション対応で大きなドキュメントも完全取得可能
  • セクション分割機能でドキュメントを論理的に分割
  • 完全オフライン動作でネットワーク不要
  • 堅牢な文字列処理でHTMLエンティティやエスケープ文字に対応

必要条件

  • Node.js 18以上(推奨: v20.10.0、最大: v22.x)
    • ⚠️ 注意: Node.js v23以降は互換性問題があります
  • npm 8以上 または yarn
  • macOS, Linux, Windows(WSL2推奨)
  • 空きディスク容量: 約500MB(Unity ドキュメント + データベース)

クイックスタート

1. 自動セットアップ(推奨)

# 実行権限を付与
chmod +x setup.sh

# セットアップスクリプトを実行
./setup.sh

2. 完全セットアップ手順

# 1. 依存関係のインストール
npm install

# 2. ビルド
npm run build

# 3. データベース初期化
npm run init-db

# 4. Unity ドキュメントのダウンロード(約400MB)
npm run download-docs 6000.1

# 5. ドキュメントのインデックス作成(約4000件、数分かかります)
npm run index-docs

# 6. サーバー起動テスト
npm run dev  # Ctrl+Cで終了

# 7. (オプション)パッケージドキュメントのセットアップ
npm run download-package-docs com.unity.entities  # ECSドキュメントをダウンロード
npm run index-package-docs com.unity.entities      # インデックス作成

MCPツール

バージョン情報の確認

get_unity_version_info: 現在利用可能なUnity ドキュメントのバージョン情報を取得

  • パラメータ: なし
  • 戻り値: Unity バージョン、リリース日、ドキュメント数、データベースサイズなど
# 使用例
get_unity_version_info

基本検索

search_unity_docs: Unity ドキュメントを検索

  • query: 検索クエリ(例: "Rigidbody", "Input System")
  • limit: 結果数(デフォルト: 10)
  • type: "all" | "manual" | "script-reference" | "package-docs"
# 使用例
search_unity_docs query="Animator component" limit=5
search_unity_docs query="Unity 6000 ECS" type="manual"  # ドット文字も対応
search_unity_docs query="Input System" type="script-reference"
search_unity_docs query="EntityManager" type="package-docs"  # パッケージドキュメント検索

パッケージドキュメント管理

list_unity_packages: 利用可能なUnityパッケージドキュメントの一覧表示

  • パラメータ: なし

download_unity_package_docs: Unityパッケージドキュメントをダウンロード

  • packageName: パッケージ名(例: "com.unity.entities")
# 使用例
list_unity_packages  # 利用可能なパッケージ一覧を表示
download_unity_package_docs packageName="com.unity.entities"  # ECSドキュメントをダウンロード

ドキュメント読み取り

read_unity_doc: 特定のドキュメントを読む(ページネーション対応)

  • path: ドキュメントパス(例: "Manual/RigidbodiesOverview.html")
  • offset: 開始位置(デフォルト: 0)
  • limit: 最大文字数(デフォルト: 2000)
# 使用例
read_unity_doc path="Manual/class-Animator.html" offset=0 limit=2000

セクション分割

list_unity_doc_sections: ドキュメントのセクション一覧を取得

  • path: ドキュメントパス

read_unity_doc_section: 特定のセクションを読む

  • path: ドキュメントパス
  • section_id: セクションID(list_unity_doc_sectionsから取得)
# 使用例
list_unity_doc_sections path="Manual/class-Animator.html"
read_unity_doc_section path="Manual/class-Animator.html" section_id="section-2"

大きなドキュメントの効率的な取得

Unity ドキュメントには長いページが含まれているため、以下の2つのアプローチで効率的にコンテンツを取得できます:

1. ページネーション(推奨)

# 最初の2000文字を取得
read_unity_doc path="Manual/class-Animator.html" offset=0 limit=2000

# 次の2000文字を取得
read_unity_doc path="Manual/class-Animator.html" offset=2000 limit=2000

2. セクション分割

# セクション一覧を取得
list_unity_doc_sections path="Manual/class-Animator.html"

# 特定のセクションを読む
read_unity_doc_section path="Manual/class-Animator.html" section_id="section-2"

HTMLの見出し構造に基づいて論理的なセクションに分割します。

MCP設定

Claude Desktopなどで使用する場合は、以下の設定を ~/Library/Application Support/Claude/claude_desktop_config.json に追加してください:

{
  "mcpServers": {
    "unity-docs": {
      "command": "node",
      "args": ["dist/server.js"],
      "cwd": "/path/to/unity-doc-mcp-server"
    }
  }
}

設定例

{
  "mcpServers": {
    "unity-docs": {
      "command": "node",
      "args": ["dist/server.js"],
      "cwd": "/Users/username/unity-doc-mcp-server"
    }
  }
}

注意: cwd にはプロジェクトの絶対パスを指定してください。

最新の改善点

v0.2.0の主な改善

  1. Unityパッケージドキュメントのサポート

    • Unity ECS (Entities)、Input System、URPなどのパッケージドキュメントに対応
    • パッケージドキュメントのダウンロード・インデックス・検索機能を追加
    • 新しいMCPツール: list_unity_packagesdownload_unity_package_docs
    • データベーススキーマをv2に更新(パッケージ情報のサポート)
  2. 検索機能の拡張

    • type="package-docs" オプションでパッケージドキュメントのみを検索可能
    • パッケージ名とバージョンでのフィルタリング機能

v0.1.1の主な改善

  1. バージョン情報の明確化

    • 新しいツール get_unity_version_info を追加
    • 全ての検索結果とドキュメント表示にUnityバージョンを表示
    • データベースにバージョンメタデータを保存
  2. FTS5検索の修正

    • ドット(.)文字を含むクエリで発生していた構文エラーを修正
    • 「Unity 6.0」「6000.1」などの検索が正常に動作
  3. 文字列処理の改善

    • HTMLエンティティ(&、<など)の適切なデコード
    • エスケープ文字の正規化
  4. クロスプラットフォーム対応

    • Windows/macOS/Linux でのファイルパス処理を改善
    • 一時ディレクトリの作成をプラットフォーム別に最適化
  5. 安全性の向上

    • 特殊文字を含む検索クエリの安全な処理
    • 不正な文字列の適切なサニタイゼーション

トラブルシューティング

Node.jsバージョンエラー

Node.js v23以降を使用している場合、以下のようなエラーが発生する可能性があります:

Error [ERR_MODULE_NOT_FOUND]: Cannot find module

解決方法:

  1. Node.js v20またはv22を使用する(推奨)
  2. nvm/fnmなどのバージョン管理ツールを使用:
    nvm install 20
    nvm use 20
    

download-docsスクリプトエラー

npm run download-docs実行時にファイルが見つからないエラーが出る場合:

解決方法:

# スクリプトディレクトリを作成
mkdir -p src/scripts

# セットアップスクリプトを実行してスクリプトを生成
./setup.sh

検索でドットを含むクエリが動作しない

「Unity 6.0」「Input System 2.0」などの検索でエラーが発生する場合:

解決方法:

  1. 最新版に更新してください(v0.1.0以降で修正済み)
  2. データベースを再作成:
    npm run clean
    npm run setup
    

MCPサーバー接続エラー

Claude Desktopでサーバーが認識されない場合:

  1. 絶対パス確認: args のパスが正しいか確認
  2. ビルド確認: npm run build が完了しているか確認
  3. ログ確認: ~/Library/Logs/Claude/mcp-server-unity-docs.log を確認
  4. 権限確認: 実行ファイルの権限が正しいか確認

開発

テスト実行

npm test                # 単体テスト実行
npm run test:watch      # ウォッチモード
npm run test:coverage   # カバレッジレポート生成

ビルド

npm run build          # TypeScriptのビルド
npm run typecheck      # 型チェックのみ
npm run lint           # ESLintの実行

プロジェクト構成

unity-doc-mcp-server/
├── src/
│   ├── server.ts         # MCPサーバーメイン
│   ├── parser/           # HTMLパーサー(エンティティデコード対応)
│   ├── search/           # 検索エンジン(クエリサニタイゼーション)
│   ├── database/         # SQLiteデータベース
│   ├── utils/            # ユーティリティ(クロスプラットフォーム対応)
│   ├── zip/              # ZIPハンドラー
│   ├── http/             # HTTPダウンローダー
│   └── scripts/          # セットアップスクリプト
├── data/
│   ├── unity-zips/       # ダウンロードしたZIP
│   ├── extracted/        # 展開したHTML
│   └── unity.db         # SQLiteデータベース
├── dist/                 # ビルド結果
└── tests/                # テストファイル(90+テスト)

技術詳細

  • 検索エンジン: SQLite FTS5(Full-Text Search)
    • 特殊文字(ドット、括弧など)の安全な処理
    • クエリサニタイゼーション機能
  • データベース: SQLite3 with better-sqlite3
  • HTMLパーサー: Cheerio
    • HTMLエンティティの適切なデコード
    • 安全な文字列処理
  • プロトコル: Model Context Protocol (MCP)
  • 通信: JSON-RPC over stdio
  • クロスプラットフォーム: Windows/macOS/Linux対応

ライセンス

MIT License


Unity Documentation MCP Server - Unity 6公式ドキュメントをAIアシスタントに提供