Skip to main content
Glama

game-asset-mcp

AIエージェントが参照画像・メッシュ・PBRテクスチャ・来歴(プロvenance)まで、ゲーム対応の3Dアセットをエンドツーエンドで生成できるMCPサーバーです。また、すでに所有しているメッシュのリテクスチャも行えます。

ほとんどのアセット生成ツールは「プロンプトを入力してメッシュを得る」ところで止まります。それは簡単な半分です。実際にプロジェクトを妨げるのは、すでに持っているメッシュです。先週モデリングしたキットバッシュ、マテリアルがアートディレクションに合わないマーケットプレイスのプロップ、金曜日までに腐食した鋼鉄のように見せなければならないグレーボックス。texture_existing_asset は、あなたが提供したメッシュを受け取り、すでに承認したジオメトリを再生成することなく、新しいPBRマテリアルを与えます。

すべてが記録されます。各ジョブは、プロンプト、シード、プロバイダーのモデルバージョン、プロバイダーのタスクID、ダウンロードしたすべてのバイトのSHA-256を保持します。これにより、6か月後でも「このファイルは何が生成したのか?」に答えられます。

このサーバーは設計上、プロバイダーに依存しません。現在は3D用にTripo、参照画像と効果音用にLeonardo.Aiを、3つの小さなインターフェース(ImageProviderModel3DProviderAudioProvider)の背後で駆動します。プロバイダーを追加してもツールの表面は変わりません。このように構築された理由については、docs/architecture.mdを参照してください。


要件

  • Node.js >= 18.17 — サーバーはグローバルな fetchFormDataBlobAbortController を使用します。

  • ネイティブモジュール、ビルドツールチェーン、データベースは不要です。Nodeが動作する場所ならどこでも動作します。

  • 任意: ローカルのBlender 4.x+ インストールがあると、normalize_meshbatch_prepare_meshes の修復部分が有効になります。他のすべてのツールはそれなしで動作します。ツールは存在しない場合、指示とともに拒否します。macOSではBlenderは PATH にないため、BLENDER_PATH を設定するか、バンドルされている /Applications/Blender.app のデフォルトに依存してください。

  • 少なくとも1つのプロバイダーAPIキー(設定を参照)。1つで十分です。遅延検証されます。


Related MCP server: Context3D MCP Server

インストール

GitHubから直接インストールします。どちらの形式もインストール中にTypeScriptをビルドするため、どちらでも実行可能な game-asset-mcp バイナリが得られます。

# run it without installing anything permanently
npx github:theisegoria/game-asset-mcp

# or add it to a project
npm install github:theisegoria/game-asset-mcp

# pin a specific version — recommended for anything you depend on
npm install github:theisegoria/game-asset-mcp#v0.3.8

バージョンを固定してください。 #vX.Y.Z サフィックスがない場合、両方の形式はその時点の main に解決され、安定した依存関係ではありません。すべてのリリースにはタグが付けられているため、#v0.3.8 で正確にそのツリーが得られます。リリースは github.com/theisegoria/game-asset-mcp/releases に一覧表示され、各リリースにはそのリリースで修正された欠陥が記載されています。

v0.3.0、v0.3.1、v0.3.2 を固定しないでください。 後のレビューで、これらのバージョンには渡したメッシュを破壊して成功を報告するライブパスがあることが判明しました。履歴を完全にするためにのみタグ付けされています。リリースページにもその旨が記載されています。

または、クローンから作業することもできます。これは何かを変更する予定がある場合に適しています。

git clone https://github.com/theisegoria/game-asset-mcp.git
cd game-asset-mcp
npm install
npm run build     # emits dist/
node dist/server.js

npmにはありません。 npm install @theisegoria/game-asset-mcp は存在しません。パッケージはGitHubからのみ配布されます。それ以外のことを示すものはすべて古い情報です。

サーバーは stdio 上でMCPを話します。ターミナルで直接起動すると、クライアントが話しかけるまで単に待機します。これはハングではなく正しい動作です。ログはstderrに出力されます。stdoutはプロトコル用です。


設定

MCPクライアントの env ブロックでこれらを設定します。以下のスニペットを参照してください。.env の読み込みはありません。サーバーは process.env のみを読み取り、それ以外は読み取りません。したがって、ディスク上の .env ファイルは、シェルまたはクライアントが最初にエクスポートしない限り何も行いません。

変数

必須

デフォルト

目的

TRIPO_API_KEY

3Dツール用

Tripo APIキー。platform.tripo3d.ai で作成します。

LEONARDO_API_KEY

画像・音声ツール用

APIアクセスが有効なLeonardo.Aiキー。1つのキーで参照画像と効果音の両方をカバーします。

LEONARDO_MODEL_ID

いいえ

組み込みデフォルト

デフォルトのLeonardo画像モデルを上書きします。呼び出しごとの modelId も存在します。

ASSET_OUTPUT_DIR

いいえ

./assets/generated

アセットとジョブレコードが書き込まれる場所。サーバーの作業ディレクトリからの相対パス。

ASSET_MAX_DOWNLOAD_BYTES

いいえ

268435456 (256 MiB)

単一ダウンロードのハード上限。ストリーミング中に強制されます。また、提供するローカルファイルにも適用され、大きすぎるメッシュは DOWNLOAD_TOO_LARGE で拒否されます。

ASSET_HTTP_TIMEOUT_MS

いいえ

60000

リクエストごとのHTTPタイムアウト。

ASSET_LOG_LEVEL

いいえ

info

silent | error | warn | info | debug

BLENDER_PATH

いいえ

自動検出

normalize_meshbatch_prepare_meshes 用のBlender実行可能ファイル。検出を上書きします。

TRIPO_BASE_URL

いいえ

Tripo v3エンドポイント

3Dプロバイダーを再ターゲットします。https:// である必要があります。http:// の値は、プロバイダーが最初に使用されたときに拒否されます。起動時ではありません。プロバイダーは遅延構築されるためです。

LEONARDO_BASE_URL

いいえ

Leonardoエンドポイント

画像/音声プロバイダーを再ターゲットします。https:// である必要があり、最初の使用時に拒否されます。同じ理由です。

ASSET_SPEND_LIMIT_CENTS

いいえ

無制限

セッションの支出上限(米セント単位)。クレジットを消費するツールは、プロバイダーに連絡する前に上限に達すると拒否します。

⚠️ Tripo APIクレジットはTripo Studioサブスクリプションとは別に請求されます

これはほぼ全員が引っかかります。Tripo StudioのWebサブスクリプションはAPI呼び出しに資金を提供しません。 これらは2つの異なる製品で、残高も異なります。Studio Webアプリでモデルを快適に生成していて、最初の create_3d_asset 呼び出しがクレジット不足で拒否された場合、設定を誤ったわけではありません。開発者プラットフォームでAPIクレジットが必要です。platform.tripo3d.ai で購入してください。Studioアプリではありません。

支出の上限

ASSET_SPEND_LIMIT_CENTS を設定すると、すべてのクレジット消費ツールがプロバイダーに連絡する前にチェックします。メッシュや参照画像のアップロード前も含みます。残高を指定して拒否し、超過しません。上限は米セント単位です。2つのプロバイダーが異なる単位で請求するためです。Tripoは$0.01クレジット、LeonardoはUSDです。それらを混在させた制限は意味がありません。

プロバイダーが呼び出しごとの価格を公開している場合はそれを使用します。公開していない場合、ガードは意図的に悲観的なプレースホルダーを使用し、get_spend_report はどの数値がどれであるかを示します。これはガードであり、請求書ではありません。実際の請求は推定値以下になるはずで、上回ることはありません。

1つのプロバイダーで十分

資格情報は遅延検証されます。ツールが必要とする瞬間に、起動時ではありません。TRIPO_API_KEY のみを設定した場合、サーバーは正常に起動し、すべての3Dツールが動作します。画像ツールは、欠落している変数を指定する明確な CONFIG_MISSING エラーを返します。逆も同様です。パイプラインの半分だけを使用するために、不要なアカウントを保持することを強制されることはありません。


MCPクライアントのセットアップ

Claude Code / Claude Desktop

MCP設定に追加します(claude_desktop_config.json、またはClaude Codeのプロジェクト内の .mcp.json):

{
  "mcpServers": {
    "game-asset": {
      "command": "node",
      "args": ["/absolute/path/to/game-asset-mcp/dist/server.js"],
      "env": {
        "TRIPO_API_KEY": "tsk_...",
        "LEONARDO_API_KEY": "...",
        "ASSET_OUTPUT_DIR": "/absolute/path/to/your/project/assets/generated",
        "ASSET_LOG_LEVEL": "info"
      }
    }
  }
}

argsASSET_OUTPUT_DIR には絶対パスを使用してください。MCPクライアントの作業ディレクトリはあなたが思っているものとは異なり、相対出力ディレクトリはアセットを予期しない場所に散らばらせます。

その他のMCPクライアント

同じサーバーを汎用的に記述します。stdio子プロセスです:

{
  "name": "game-asset",
  "transport": "stdio",
  "command": "npx",
  "args": ["-y", "github:theisegoria/game-asset-mcp"],
  "env": {
    "TRIPO_API_KEY": "tsk_...",
    "LEONARDO_API_KEY": "...",
    "ASSET_OUTPUT_DIR": "/absolute/path/to/assets/generated"
  }
}

利用可能なツール

ツール

クレジット消費

機能

preview_asset_prompt

なし

ドライラン。スペックが生成する正確なプロンプトとネガティブプロンプトを表示するため、料金が発生する前にアートディレクションを修正できる。

generate_asset_reference

あり

アセットスペックを再構築用に設計されたリファレンス画像に変換する — 被写体を分離し、シルエット全体を捉え、フラットな照明、無地の背景。アセットジョブを作成する。

generate_reference_variations

あり

オブジェクトのアイデンティティを固定したまま、1つの軸(シルエット、マテリアル処理、ディテール、ウェア、プロポーション、機能コンポーネント)を探索する。

select_reference

なし

3Dステップが再構築するリファレンス候補をマークする。ローカルな記録のみ。

create_3d_asset

あり

選択したリファレンスからPBRテクスチャ付きメッシュを再構築する — リファレンスが存在しない場合はテキストから直接。ポーリング用のジョブを即座に返す。

texture_existing_asset

あり

既に所有しているメッシュ(GLB/GLTF/FBX/OBJ/STL)または以前に生成したメッシュに新しいPBRマテリアルを適用する。ジオメトリは変更されない。

get_asset_job

なし

ジョブをポーリングする。プロバイダーのステータス語彙を1つの正規化されたライフサイクルにマッピングし、生のステータスも併せて保持する。

download_asset

なし

プロバイダーのモデル、テクスチャ、プレビューレンダーをワークスペースに取得し、各ファイルをハッシュ化して記録する。

inspect_asset

なし

ダウンロードしたglTF/GLBを読み取り、実際に含まれる内容 — メッシュ、マテリアル、テクスチャチャンネル、サイズ — を報告する。

extract_pbr_trio

なし

glTFマテリアルを独立したアルベド、ノーマル、ラフネス画像に分割し、metallicRoughnessをデパックする(ラフネス = 緑、メタリック = 青)。リニアライトとデータチャンネルで色を平均化しながら、正確なサイズにリサンプリングする。

normalize_mesh

なし

メッシュを使用可能な状態に修復する:UVを持たないオブジェクト(メッシュにテクスチャを貼れない一般的な理由)にUVを生成し、一致する頂点を溶接し、縮退三角形を除去し、すべてのマテリアルに名前を付け、不透明ブレンドを強制する。オプションでBlender依存。

generate_sound_effect

あり

説明文から短いゲームサウンドエフェクトを生成する — インパクト、武器の発射音、UIブリップ、またはシームレスなアンビエンスループ。インラインでポーリングしてダウンロードする。

create_game_prop

あり — 画像のみ

意図に沿ったエントリーポイント:平易な言葉でのリクエストを入力すると、アセットスペックとリファレンス候補を出力する。3D費用が発生する前に意図的に停止し、人間またはエージェントが先にリファレンスを選択できるようにする。

list_asset_jobs

なし

既知のジョブを新しい順に、コンパクトなサマリーとして一覧表示する。

rig_asset

あり

生成したアセットにアニメーションを付けられるよう、スケルトンとスキンウェイトを構築する。

animate_asset

あり

プリセットアニメーションを、既にリギング済みのアセットにリターゲットする。リギングされていないソースには課金せずに拒否する。

retopologize_asset

あり

トポロジを再構築する。デフォルトではクアッド — クアッドは、ジェネレーターの三角形スープよりも、後続の編集やメッシュ認定で大幅に優れた耐久性を持つ。

validate_game_asset

なし

メッシュを出荷ポリシーに照らして判定し、チェック項目ごとの理由付きで合格/不合格を返す — UV、ノーマル、タンジェント、三角形予算、マテリアル、テクスチャ解像度、バウンディングボックスの妥当性。すべてのしきい値は上書き可能。

batch_prepare_meshes

なし

.glb/.gltfパスのリスト(最大500件)に対して validate → normalize → validate を実行し、項目ごとの判定を返す。既に合格しているメッシュはそのまま残され、1つの不良ファイルは自身の項目として報告され、実行を停止することはない。

get_spend_report

なし

このワークスペースがツール別に消費した金額と残りの余裕 — 各数値が公開価格か、控えめなプレースホルダーかを示す。

料金が発生するツールは9つだけで、それぞれの説明に呼び出し前に明記されている。


無料のローカル側(APIキー不要、ネットワーク不要)

20のツールのうち11はクレジットを一切消費せず、その11のうちネットワークを使用するのは2つだけget_asset_jobはポーリング、download_assetは取得。どちらも無料だがネットワーク呼び出しである。残りの9つはオフラインで動作する。以下の5つはメッシュパイプラインであり、既にメッシュを持っているならこれらが製品のすべてである。

ツール

回答する内容

inspect_asset

このglTFの中身は実際には何か? メッシュ、マテリアル、テクスチャチャンネル、サイズ、境界。

validate_game_asset

出荷可能か? チェック項目ごとの理由付きで合格/不合格、すべてのしきい値は上書き可能。

normalize_mesh

修復する:UVを持たないオブジェクトにUVを生成し、一致する頂点を溶接し、縮退三角形を除去し、マテリアルに名前を付ける。

batch_prepare_meshes

同じ処理を.glb/.gltfパスのリストに対して、項目ごとの判定付きで実行する。失敗した項目でもファイルが書き込まれている場合がある — 正規化は成功したが結果がポリシーを満たさない場合、メッシュは検査用に保持される。ファイル数を予測するにはpreparedではなくoutputsWrittenを使用する。

extract_pbr_trio

マテリアルをアルベド / ノーマル / ラフネス画像に分割し、metallicRoughnessを正しくデパックする。

通常のループはvalidate → normalize → validateであり、修復が推測ではなく証明される:

validate_game_asset  modelPath=/art/crate.glb
   → fails: uvs_present   ("nothing can texture this")
normalize_mesh       modelPath=/art/crate.glb  outputDir=/art/out
   → objectsUnwrapped=2, triangles 3183 → 1750
validate_game_asset  modelPath=/art/out/crate_normalized.glb
   → passes

batch_prepare_meshesはそのループをリストに対して実行し、各項目を個別に報告する。既に合格しているメッシュは書き換えられずそのまま残され、1つの不良ファイルが実行を停止することはなく、同じベース名を共有する2つのソースは互いに上書きせず別々の出力を得る。

UV欠落は知っておくべき欠陥である。 UV座標のないメッシュは、何によってもテクスチャを貼ることができない — このツールでも、プロバイダーでも、手作業でも。ジェネレーターやマーケットプレイスのアセットは日常的にUVなしで出荷される。validate_game_assetがその理由で最初にそれを指摘する。

正規化にはBlender(4.x以降)が必要。 それがなければツールは検証と報告は行うが、修復はできない。macOSではBlenderはPATHにないため、BLENDER_PATHを設定するか、バンドルされている/Applications/Blender.appのデフォルトに依存する。


ワークフロー例

フルパイプライン:アイデアから検査済みアセットまで

1. generate_asset_reference   → spends image credits, returns assetJobId + N candidates
2. (inspect the images)       → look at the returned reference images and choose one
3. select_reference           → free; records which candidate wins
4. create_3d_asset            → spends 3D credits, returns a task to poll
5. get_asset_job              → free; poll until status is "ready" (or "failed")
6. download_asset             → free; pulls model + textures + previews into the workspace
7. inspect_asset              → free; confirms what actually landed on disk

ステップ2は飾りではない。3Dクレジットを消費する前にリファレンスを選ぶことが、パイプラインがここで分割されている理由そのものである:悪いリファレンスは溶けたメッシュを生み、その発見は再構築の費用を支払った後にしかできない。

リテクスチャ:より短く、より安く、ほとんどのツールが持たないフロー

メッシュは既に持っている。リファレンスも、選択も、再構築も必要ない:

1. texture_existing_asset     → spends texturing credits on a mesh you supply
2. get_asset_job              → free; poll until ready
3. download_asset             → free
4. inspect_asset              → free

有料呼び出しは2回ではなく1回で、既に承認済みのジオメトリは変更されずに戻ってくる。


コストと副作用

プロバイダークレジットを消費する呼び出し: generate_asset_referencegenerate_reference_variationscreate_3d_assettexture_existing_assetgenerate_sound_effectrig_assetanimate_assetretopologize_asset、およびcreate_game_prop内の画像生成ステップ。このサーバーで課金される可能性があるのはこれ以外にない。

無料の呼び出し: select_referenceget_asset_jobdownload_assetinspect_assetlist_asset_jobspreview_asset_promptextract_pbr_trionormalize_meshvalidate_game_assetbatch_prepare_meshesget_spend_report。ポーリング、検査、分割、ダウンロードは好きなだけ行える。

クレジットを消費するPOSTは、自動的に再試行されることは決してありません。 これは意図的で、重要な役割を担うルールであり、各呼び出しサイトではなくHTTPレイヤーに存在します。生成タスクを作成するリクエストが失敗した場合(タイムアウト、ソケットリセット、502)、クライアントは接続が切断される前にプロバイダーがそれを受け入れたかどうかを知ることはできません。再試行は無料かもしれませんが、受け取ることのないメッシュに対して二重に課金される可能性もあります。そのため、再試行は行われず、エラーはそのまま返され、再試行するかどうかの判断はあなたに委ねられます。冪等な読み取り(ステータスポーリング、ファイルダウンロード)は、繰り返してもコストがかからないため、バックオフ付きで自由に再試行されます。

知っておく価値のあるその他の副作用:

  • ファイルはディスクに書き込まれます。 ダウンロードされたアセットはASSET_OUTPUT_DIRの下に置かれ、ワークスペースルートから外れるダウンロードパスは拒否されます。3つのツールは異なり、意図的にそうなっています:extract_pbr_trionormalize_meshbatch_prepare_meshesは、あなたが指定した場所に書き込みます。ワークスペースの外であっても同様です。なぜなら、これらはあなたがすでに所有しているメッシュを操作するものであり、それらはアセット生成ディレクトリには存在しないからです。意図した宛先を指定してください。

  • download_assetgenerate_sound_effectdestinationを受け付けます。これはその1回の呼び出しに限りASSET_OUTPUT_DIRを上書きします。それでも制限はあります:指定されたルートから外れるパスは拒否されます。

  • ASSET_OUTPUT_DIRは絶対パスであるべきです。 相対値はサーバーの作業ディレクトリに対して解決されます。これはあなたのMCPクライアントが選択するもので、いくつかは/から起動されます。サーバーは、解決されたパスとその由来となった作業ディレクトリを名指しするメッセージとともに起動を拒否します。この診断は、現実的に発生し得る8つのerrno(ENOENT、EACCES、EPERM、EROFS、ENOTDIR、ELOOP、ENAMETOOLONG、ENOSPC)をカバーし、ASSET_OUTPUT_DIRがディレクトリではなくファイルを指している場合も含みます。それ以外のものはすべてそのまま伝播します。

  • 何も黙って上書きされません。 派生した出力名には数値サフィックス(cratecrate_2、…)が付き、すでにレビュー済みの結果を破壊することはありません。また、名前は排他的作成によって確保されるため、1つのバッチ内の2つのアイテムがその名前を競合することはありません。明示的なoutputPathは、ファイルがすでに存在する場合はoverwrite: trueを渡さない限り完全に拒否されます。また、入力メッシュに解決される場合は、オプトアウトなしで無条件に拒否されます。この解決は、シンボリックリンク、ハードリンク、大文字小文字を区別しないボリューム、およびエクスポーターが拡張子を書き換える習慣を考慮に入れています。なぜなら、これらのすべてがここでソースメッシュを破壊したことがあるからです。

  • ダウンロードはASSET_MAX_DOWNLOAD_BYTESで上限が設定され、その上限はContent-Lengthヘッダーではなくストリーミング中に強制されます。サイズについて嘘をつくサーバーでもメモリを枯渇させることはできません。

  • HTTPSのみ。 HTTPS以外のURLは、プロバイダーのレスポンス内に含まれるものも含め、完全に拒否されます。

  • APIキーはログから中央で編集されるため、個々のログ呼び出しサイトがキーを漏洩させることはありません。


ワークスペースのレイアウト

すべてのアセットは自己完結型のディレクトリを取得します。6か月後にファイルブラウザで開いても、それ自体が説明になっています:

assets/generated/
├── .jobs/                          job records, one JSON file per job
│   └── asset_<uuid>.json
└── <asset_name>/
    ├── asset.json                  complete provenance: spec, prompt, seed,
    │                               model version, provider ids, file hashes
    ├── source/                     the reference image(s) the mesh was built from
    ├── model/                      the mesh (GLB by default)
    ├── textures/                   extracted PBR maps
    ├── previews/                   provider-rendered turnarounds

<asset_name>はあなたのスペックの名前をサニタイズしたものです:小文字化され、非英数字はアンダースコアに変換されます。.jobsディレクトリは意図的にドットディレクトリになっています。アセットワークスペースを閲覧するとき、帳簿ではなくアセットが表示されるべきだからです。


トラブルシューティング

すべてのエラーは、クラスを名指しする機械可読なerrorフィールドと、retryableフラグを保持しているため、エージェントは散文を解析することなく次に何をすべきかを判断できます。以下の名前は、そのerrorフィールドの値です。

サーバーが起動してすぐに終了する — クライアントは「接続が閉じられました」とだけ言う。 既知の原因は3つあり、サーバーは現在、最初の2つを黙って死ぬのではなく自ら名指しします。

  • 相対的なASSET_OUTPUT_DIR これはサーバーの作業ディレクトリに対して解決されます。これはあなたのMCPクライアントが選択するもので、いくつかは/から起動され、assets/generated/assetsになり、作成できません。絶対パスを使用してください。 拒否は、解決されたパスとその由来となった作業ディレクトリを名指しします。

  • プロセスが書き込めないワークスペース。 同じ拒否、異なるerrno。

  • 古いビルド。 dist/がエントリポイントの変更より古い場合は、再ビルドしてください。npm run verifyはビルドしてから実際のMCPハンドシェイクを完了します。これは、壊れたサーバーと壊れたクライアント設定を区別する最も速い方法です。

normalize_meshまたはbatch_prepare_meshesが「Blender not found」で拒否する。 PATHにローカルのBlenderがありません。macOSでは、BlenderがインストールされていてもアプリバンドルはPATHにありません。BLENDER_PATHをバンドル内の実行可能ファイルに設定してください。batch_prepare_meshesは失敗するのではなく劣化します:すべてのメッシュを検証し、修復が必要なものを報告します。

CONFIG_MISSING — 認証情報がありません。 呼び出したツールが、設定していないプロバイダーを必要としています。メッセージは正確な環境変数を名指しします。MCPクライアントのenvブロックに設定し、クライアントを再起動してください。.envファイルは決して読み取られません:dotenv依存関係はないため、変数はサーバーを起動するものによってエクスポートされる必要があります。

PROVIDER_HTTP、ステータス401/403 — APIキーが無効です。 キーが間違っているか、失効しているか、別のプロバイダーのものです。2つの特定の落とし穴:LeonardoキーはアカウントでAPIアクセスを有効にする必要があります(Webログインだけでは付与されません)。また、APIクレジット残高がないTripoキーは、キー自体は有効でも最初の有料呼び出しで失敗する可能性があります。上記のクレジット警告を参照してください。

RATE_LIMITED — HTTP 429。 再試行可能とマークされています。ポーリングはバックオフして自動的に再試行します(400 ms、800 ms、1600 ms、8秒で上限)。ダウンロードは再試行しませんdownload_assetは1回の試行でストリーミングされるため、自分で再発行してください。プロバイダーのURLは期限切れになるため、古いURLを再試行するのではなく、最初にget_asset_jobで再ポーリングしてください。生成リクエストも、意図的に、コストがかかるため再試行しません。ダウンロード中の429は、RATE_LIMITEDではなく、ステータス429のPROVIDER_HTTPとして表面化します。

PROVIDER_TASK_FAILED — タスクがプロバイダー側で失敗しました。 HTTP呼び出しは成功し、生成は成功しませんでした。プロバイダー自身のメッセージはエラー詳細に保持されます。モデレーション拒否もここに該当します:プロンプトを変更せずに再試行するのではなく、書き直してください。Tripoのレスポンスは、HTTP 200と非ゼロのエンベロープcodeを伴う場合があることに注意してください。それは失敗であり、このサーバーは幻の成功を報告するのではなく、それを失敗として扱います。

ダウンロードがPROVIDER_HTTP 403/404で失敗する — URLが期限切れです。 これは最も一般的な驚きです。プロバイダーのモデルおよびプレビューURLは短命です。 署名付きで、期限切れになり、20分前に機能したURLは現在は無効です。修正方法は同じURLを再試行することではありません — get_asset_jobを再度呼び出してプロバイダーから新しいURLを再ポーリングし、すぐにdownload_assetを実行してください。習慣として:長いセッションの終わりではなく、ジョブがreadyを報告したらすぐにダウンロードしてください。

INVALID_INPUT — サポートされていない画像形式です。 参照画像は標準的なWebセーフなラスター形式(PNG、JPEG、WebP)であるべきです。HDR、EXR、レイヤー化されたPSD、SVG、マルチページTIFFは再構築可能な入力ではありません。texture_existing_assetの場合、メッシュはGLB、GLTF、FBX、OBJ、STLである必要があります。最初に変換してください。プロバイダーは代わりに変換してくれません。

PROVIDER_MALFORMED_RESPONSE — プロバイダーが予期しないものを返しました。 非JSONボディ、空のエンベロープ、データのない成功、またはファイルトークンを返さないアップロード。通常はプロバイダー側のインシデントまたはAPIバージョンのずれを意味します。ASSET_LOG_LEVEL=debugを設定してリクエストの形状を確認し(キーは編集されます)、バグがローカルにあると想定する前にプロバイダーのステータスページを確認してください。

DOWNLOAD_TOO_LARGE ファイルがASSET_MAX_DOWNLOAD_BYTESを超えました。高品質のPBR GLBは大きくなる可能性があります。本当にそのファイルが必要な場合は制限を引き上げてください。

PATH_ESCAPE プロバイダー提供のファイル名がワークスペースの外に解決されようとしました。書き込みは拒否されました。通常の操作では発生しないはずです — 発生した場合はissueを開いてください。


ステータス

これは初期のソフトウェアであり、ずれる可能性が最も高い部分は、静かに想定されるのではなく、そのようにマークされています。

Tripoのv3エンドポイントパスは、正確に1つのモジュールsrc/providers/model3d/tripo.ts)に固定され、その先頭のコメントに文書化されています。Tripoの公開ドキュメントはv3サーフェスを2つの異なる方法で説明しています — 汎用タスクエンドポイントと操作ごとのパス — そして両方が現在のドキュメントに存在します。このクライアントはタスク形式を実装しています。これは、すべての生成がポーリングするtask_idを返すという観察可能な動作と一致し、コードを編集せずに再ターゲットできるようにTRIPO_BASE_URLを公開しています。それらが間違っている場合、不正なAPIキーとまったく同じように見える404が表示されるため、キーよりも先にパスを確認してください。

ライブのプロバイダーAPIへの呼び出しは一度も行われていません。 これはここで最も重要な注意事項であるため、埋もれさせるのではなく明確に述べられています。394のテストはすべて、モックまたはローカルファイルシステムに対して実行されます。それらは、プロンプト構築、ステータスマッピング、パス安全性、ジョブストア、HTTPレイヤーの再試行とリダイレクトルール、および実ファイルに対するglTF検査をカバーしています — しかし、グリーンなスイートは、LeonardoとTripoがこのクライアントが想定するように動作するかどうかについては何も語っていません。

具体的には、以下は未検証のままです:

  • 上記で説明したTripo v3エンドポイントパス。

  • texture_modelアップロードされたメッシュ(file_token)を受け入れるか、それとも以前のTripoタスク(original_model_task_id)によって生成されたメッシュのみを受け入れるか。これは、すでに所有しているモデルを再テクスチャリングできるかどうかを決定します。これはこのサーバーが存在する目的の機能です。解決にはHDテクスチャ呼び出しが1回かかります。

  • サウンドエフェクト生成は未検証です。 LeonardoはSound Effects v2のリクエストコントラクト(modelpromptduration 1〜22秒、prompt_influenceloopquantity)を文書化していますが、そのレスポンス形状や完成したオーディオの取得方法は文書化していません。クライアントは、いくつかの妥当な形状から生成IDとオーディオURLを読み取り、どれも一致しない場合は、空の成功を報告するのではなく、レスポンスのトップレベルのキー名(ボディではなく、大きいか署名付きURLを運ぶ可能性があるため)を添付してスローします。最初の実際の呼び出しで修正が必要になると予想し、見たペイロード形状でissueを開いてください。

  • src/providers/image/leonardo.tsのLeonardoモデルID。公開されたドキュメントから転記されたものです。GET /platformModelsと照合してください。古いIDは、不正なリクエストボディのように読めるHTTP 400として失敗します。LEONARDO_MODEL_IDと呼び出しごとのmodelIdの両方がエスケープハッチとして存在します。

あなたが実際のキーでこれを実行する最初の人物である場合、エンドポイントパスを修正することになると予想し、見つけた内容でissueを開いてください。

検証されているもの: npm run verifyはサーバーをビルドし、実際のMCPクライアントでstdio上で起動し、ハンドシェイクを完了し、20のツールすべてが登録されることをアサートします。これはプロトコルのラウンドトリップであり、バージョン文字列ではありません — ツールの登録に失敗するサーバーでも、まったく問題なく起動します。

ローカルパイプラインの一部 — inspect_assetextract_pbr_trionormalize_meshvalidate_game_asset — は、フィクスチャではなく実際の出荷済みゲームアセットに対して追加でチェックされます。合成フィクスチャとそれを読み取るパーサーは同じ間違いを共有し、両方がグリーンに見える可能性があるためです。ここで実際に起こりました:間違ったglTFマジック定数が完全な合成スイートを生き延び、実際のファイルによってのみ捕捉されました。それらが使用するUVなしメッシュは、兄弟チェックアウトから読み取るのではなく、ここにコミットされています。以前はゲームリポジトリからライブで読み取られており、そのメッシュが修復されたとき、これらのテストは完全に正しい変更に対して赤くなりました — このプロジェクトが制御しないファイルの事実を固定するアサーションです。テストは、所有していないコンテンツに依存してはなりません。

1つのテストは、シンボリックリンクされたbinnode_modules/.binが実際に含むもの)を通じてビルド済みサーバーを起動し、それに対してMCPで通信します。エントリーポイントのガードが失敗したのはそこだからです。サーバーはインストールのたびに即座に終了し、他のすべてのテストは通過していました。これはインストールではなくシンボリックリンクを使うため、filesprepareのパッケージング回帰を検出できません。GitHubからの実際のnpm installは今でも手動チェックです。

テスト数が重要ではない理由

0.3.4では、前回リリースの5つの主要な修正を1つずつ元に戻してスイートを再実行しました。5つすべてが生き残りました——すべてのミュータントが完全にグリーンでした。 修正は本物でした。スイート内の何もそれらを支えていませんでした。原因は1つの共通した前提でした。スタブ化されたすべてのBlenderが終了コード0で終了し、正確に1つのレシートを出力したため、サブプロセスプロトコルの強化はどのテストからも観測できなかったのです。

これはREADMEに記載する価値があります。なぜなら、それがこのテスト数を含むあらゆるテスト数の正直な読み方だからです。スイートは作者の前提を証明するものであり、前提の内部に存在する欠陥は、その前提の下で書かれたすべてのテストからは見えません。変わったのは規律であって、数ではありません。修正は現在、元に戻したコードに対して実行され、失敗することが観測されたテストによって固定されており、共有フィクスチャはインフラではなく容疑者として扱われます。

同じチェックが、1回の作業で悪い証明を2回検出しました。溶接閾値の修正を証明するために書かれた2つの連続したフィクスチャが、コードが正しい場合と壊れている場合の両方で同一の三角形数を報告し、どちらも証拠として出荷されるところでした。フィクスチャは、修正されたコードと壊れたコードの両方で実行され、2つの数値が出力されるまで証明にはなりません。


コントリビューション

Issueとプルリクエストを歓迎します。プロバイダーを追加する場合は、ImageProviderまたはModel3DProviderを実装し、それ以外は変更しないでください。新しいプロバイダーがツールサーフェスの変更を強制する場合、抽象化が間違っており、それが最初に議論すべきバグです。

ライセンス

MIT © 2026 Ben Haire。LICENSEを参照してください。

A
license - permissive license
A
quality
A
maintenance

Maintenance

Maintainers
Response time
0dRelease cycle
15Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • Generate game assets with AI: sprites, 3D models, animations, sound effects, music, and voices.

  • Build, validate, and deploy multi-agent AI solutions from any AI environment.

  • AI visual generation agent: multi-pipeline rendering, prompt crafting, and image composition.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/theisegoria/game-development-studio'

If you have feedback or need assistance with the MCP directory API, please join our Discord server