LPC Character Generator について
LPC Character Generatorは、自然言語の依頼からLPCのピクセルアートキャラクターを組み立て、スプライトシートを生成するMCPサーバーです。ゲーム開発者向けに、アニメーションプレビューや不足チェック、Godot、Unity、Web向けの出力を提供します。
主な機能
- 01説明文からキャラクターを構成
- 02スプライトシートとアニメーションプレビューを生成
- 03アイテム検索とアニメーション不足の確認
- 04ランダムキャラクターの一括生成
- 05Godot、Unity、Web、サイト形式で出力
- 06アートクレジットとライセンス情報を作成
活用シーン
- 01ゲーム用ピクセルアートNPCの作成
- 02キャラクターの方向やアニメーションの確認
- 03ランダムな村人の一括生成
- 04スプライトシートのGodotやUnityへの取り込み
MCP 対応
ローカルのstdioで動作し、キャラクター生成、プレビュー、アイテム検索、出力のツールをクライアントに公開します。リモートサーバーのみを受け付けるクライアントでは動作しません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
LPC キャラクタージェネレーター — MCP
English · Português
LPC のピクセルアートキャラクターのスプライトシートを作成する MCP サーバーです。Universal LPC Spritesheet Character Generatorと同じパーツを使用し、 Godot、Unity、Web(Phaser/PixiJS)向けにそのまま使える形式で書き出します。
自然な言葉で「日焼けした肌の鍛冶屋を、革のエプロンとハンマー付きで作って」と頼むだけで、 アシスタントがキャラクターを組み立て、チャット内にアニメーションプレビューを表示し、ファイルを保存します。


上のキャラクターはすべてこの MCP で生成されています。テーマ付き(騎士、バイキング、魔法使い、 スケルトン、オーク、レギオナリー、海賊、王など)とランダム生成のキャラクターです。

チャット内のプレビュー(preview_character)はアニメーション GIF です。こちらはハンマーを振るう鍛冶屋です。

インストール

uv と Git が必要です。 uv が適切な Python とパッケージを自動で取得するため、クローンや依存関係のインストールは不要です。
- uv をインストールします(初回のみ)。
- Windows:
powershell -c "irm https://astral.sh/uv/install.ps1 | iex" - macOS/Linux:
curl -LsSf https://astral.sh/uv/install.sh | sh
- Windows:
- サーバーを準備します(アイテム定義をダウンロードします。約 10 秒、初回のみ)。
uvx lpc-character-mcp --setup - アシスタントに登録します(以下を参照)。コマンドは常に
uvx lpc-character-mcpです。
GitHub から最新のコードを直接実行するには、例にある uvx lpc-character-mcp を
uvx --from git+https://github.com/kyuza1/lpc-character-mcp lpc-character-mcp に置き換えてください。
キャラクターは ~/lpc-characters に保存されます(Windows の場合は C:\Users\<you>\lpc-characters)。
保存先を変更するには LPC_OUTPUT_DIR を設定します。たとえば、Godot/Unity のスプライトフォルダーを指定できます。
lpc-character-mcp --where を実行すると、使用中のすべてのフォルダーが表示されます。メッセージは英語です。
ポルトガル語にするには LPC_LANG=pt を設定してください。
Claude Code
claude mcp add lpc --scope user -- uvx lpc-character-mcp
Claude Desktop
ワンクリック: 最新リリースから lpc-character-mcp.mcpb をダウンロードして開きます
(または Settings → Extensions にドラッグします)。インストール中に保存先フォルダーと言語を選択できます。
または、Settings → Developer → Edit config(claude_desktop_config.json)で手動追加します。
{
"mcpServers": {
"lpc": { "command": "uvx", "args": ["lpc-character-mcp"] }
}
}
Codex (OpenAI)
codex mcp add lpc -- uvx lpc-character-mcp
または ~/.codex/config.toml を編集します(Windows の場合は %USERPROFILE%\.codex\config.toml)。
[mcp_servers.lpc]
command = "uvx"
args = ["lpc-character-mcp"]
startup_timeout_sec = 60
codex mcp list で確認してください。同じファイルが Codex VS Code 拡張機能でも使われます。
Antigravity (Google)
エージェントパネルで … → MCP Servers → Manage MCP Servers →
View raw config をクリックし、mcp_config.json(~/.gemini/config/mcp_config.json、
Windows の場合は %USERPROFILE%\.gemini\config\mcp_config.json)に追加します。
{
"mcpServers": {
"lpc": { "command": "uvx", "args": ["lpc-character-mcp"] }
}
}
保存し、MCP Servers ページで Refresh をクリックします。Antigravity CLI では /mcp を使用します。
ディレクトリ
Smithery、
Glama、および公式 MCP Registryに
io.github.kyuza1/lpc-character-mcpとして掲載されており、レジストリを読み取るクライアントやディレクトリに自動的に登録されます。
その他の MCP クライアント
stdio サーバーを実行できるクライアントなら、同じuvx lpc-character-mcpコマンドで利用できます。
uv を使わない場合(pip)
pip install lpc-character-mcp
lpc-character-mcp --setup
その後、引数なしのlpc-character-mcpコマンドをアシスタントに登録します。
ヒント
- ディスク容量を確保する:
lpc-character-mcp --clear-cacheでキャッシュされた画像を削除します(--clear-cache 30は30日間使用されていない画像のみを削除します)。 - 更新:
uvx lpc-character-mcp@latest --version - アプリが
uvxを見つけられない場合: フルパスを指定します(Windowsではwhere uvx、それ以外ではwhich uvx)。
リクエストの例
- 「革のエプロンを着けてハンマーを持った日焼けした鍛冶屋を作成し、Godot 用にエクスポートして」
- 「彼がハンマーを振るアニメーションのプレビューを表示して」
- 「シード 1 でランダムな村人を 10 人生成し、Unity 用ファイルも作成して」
- 「このリンクを開いてキャラクターを生成して:https://liberatedpixelcup.github.io/...#sex=male&body=...」
- 「男性の体型で待機アニメーションがあるエプロンはどれ?」
ツール
| ツール | 機能 |
|---|---|
generate_character(items, body_type, animations, filename, layout, split, export, prefer_complete, output_dir) | PNG、クレジット、アニメーションレポート、および(オプションで)エンジン用ファイルを生成します |
preview_character(items, body_type, animation, animated) | チャット内プレビュー:4方向のアニメーション GIF |
search_items(query, category, body_type, animation, type_name, complete_only) | フィルターを指定してアイテムを検索します。完全なアイテムを優先します |
get_item(item_id) | 色、バリエーション、複数色パーツ、および体型ごとに利用可能なアニメーションを表示します |
list_categories | アイテムのカテゴリを一覧表示します |
random_character(body_type, seed, fixed_items) | ランダムなキャラクターを生成します |
generate_batch(count, body_types, seed, prefix, fixed_items, ..., output_dir) | ランダムな NPC を一度にまとめて生成します |
from_site_url(url) / to_site_url(items, body_type) | ジェネレーターサイトのリンクを読み取る/作成します(旧リンクを含む)。from_site_urlはサイトの「Export to Clipboard (JSON)」も受け取ります |
update_definitions(clear_image_cache) | 公式リポジトリからアイテムとパレットを取得します |
clear_cache(older_than_days, dry_run) | キャッシュされた画像を削除します(または N 日間使用されていない画像のみを削除します) |
itemsの例:
[
{"id": "body/body", "color": "bronze"},
{"id": "head/heads/human/heads_human_male"},
{"id": "hair/short/hair_plain", "color": "dark_brown"},
{"id": "torso/shirts/longsleeve/torso_clothes_longsleeve", "color": "white"},
{"id": "torso/aprons/torso_aprons_overalls", "variant": "leather"},
{"id": "legs/pants/legs_cuffed", "color": "white"},
{"id": "feet/boots/feet_boots_basic", "color": "brown"},
{"id": "tools/tool_hammer", "color": ["steel", "walnut"]}
]
色
"color": "blonde"— 1 色(get_itemのcolorsを参照)。"color": ["steel", "walnut"]— 複数パーツのアイテム(頭部と柄、鎧とベルトなど)。 パーツはget_itemのcolor_partsに一覧表示されます。nullにすると、そのパーツのデフォルト色が維持されます。- 頭、耳、鼻など、色が指定されていない肌のアイテムは、体の色を継承します。
- サイトと同様、タイプごとにアイテムは 1 つです。同じタイプの髪型を 2 つ指定すると、最後のものが残り、その旨が
warningsに表示されます。
保存先
output_dirを指定すると、ゲームのスプライトフォルダーなど、指定したフォルダーに直接保存します。
例:「鍛冶屋をC:/my-game/art/npcsに生成して、Godot 用にエクスポートして」。指定しない場合、ファイルはLPC_OUTPUT_DIRまたは~/lpc-charactersに保存されます。
レイアウトとパーツ
layout: "standard"(デフォルト)— サイトと同じです。幅は832pxで、各アニメーションは常に同じ行に配置されます(歩行はy=512、斬撃はy=768など)。サイズの大きいアニメーションはy=3456より下に配置されます。layout: "compact"— リクエストされたアニメーションのみを積み重ねて配置します。split— パーツも保存します:"animation"(アニメーションごとにPNGを1つ)、"frame"(フレームごとにPNGを1つ。<name>_frames/<animation>/<direction>_NN.pngに保存)、および/または"item"(アイテムごとにシートを1つ。ゲーム内で衣装を切り替えるために使用)。リストも指定できます:["animation", "frame"]。
大型アニメーション
大型の武器や道具(剣、槍、ハンマー、斧、弓など)は、128px または 192px のフレームを使用します。ベースとなるアニメーションをリクエストすると、自動的に追加されます(ハンマーで slash をリクエストすると、tool_hammer も生成されます)。
アニメーションの完全性
すべての LPC アイテムに、15 種類すべてのアニメーションのアートがあるわけではありません(例:エプロンには idle、run、jump などがありません)。そうしたアニメーションでは、アイテムが単に表示されなくなります。予期しない結果を避けるため、次のようになっています。
- すべての結果に警告が表示されます。
generate_characterは常にanimation_checkを返します。
プレビュー、バッチ処理、ウェブデモでも警告が表示されます。"animation_check": { "complete": false, "incomplete_items": { "torso/aprons/torso_aprons_apron": { "missing": ["climb", "idle", "jump", "sit", "emote", "run", ...], "complete_alternatives": ["torso/aprons/torso_aprons_overalls", ...] } }, "summary": "ATENÇÃO: nem todas as animações ficaram completas: Apron não tem ..." } prefer_complete: trueを指定すると、アニメーションが不完全なアイテムが、すべてのアニメーションに対応する最も近いアイテムに置き換えられます。色は維持されます(例:エプロン → オーバーオール)。置き換え内容はreplacedに一覧表示されます。アシスタントは、先に確認するよう指示されます。- 検索結果では、完全なアイテムが先に表示されます。
search_itemsは完全なアイテムを先に一覧表示し、それ以外のアイテムについてはmissing_animationsを表示します。また、complete_only: trueも指定できます。get_itemは不足しているアニメーションを表示し、complete_alternativesを提案します。 - ランダムなキャラクターには、完全なアイテムのみが使用されます。
不足としてカウントされないもの:climb 中の顔、鼻、ひげ、メガネ、ネックレス(キャラクターが後ろ向きになるため)、hurt 中の表情、武器・道具・盾(性質上、それぞれ専用のアニメーションでしか表示されず、equipment_only_in に一覧表示されます)、および身体自体にないアニメーション(body_missing に一覧表示されます)。
ライセンス(Steam、App Store)
LPC アートには、複数のライセンスが適用されています。DRM のあるストア(Steam、App Store など)では、CC0 と OGA-BY のアートのみ安全に使用できます。search_items、random_character、generate_batch、generate_character に licenses: ["CC0", "OGA-BY"] を渡すと、それらのライセンスに限定できます。選択した身体のアートパーツはすべて、いずれかのライセンスに対応している必要があります(いずれかのパーツが対応していればアイテムを受け入れるサイトよりも厳しい条件です)。すべての結果には license_check も含まれます。
"license_check": {"drm_safe": true, "share_alike_required": false, "summary": "..."}
ゲームエンジンへのエクスポート
generate_character に export を渡します(複数指定可能です)。アニメーションは公式ジェネレーターと同じフレーム順で再生されます(walk は立ち姿のフレームをスキップし、idle/sit/emote はフレームを保持します)。また、サイト独自のアニメーションである 1h_slash(片手での斬撃)と watering(じょうろを使用)も含まれます。zip: true を指定すると、すべてのファイルが <name>.zip にまとめられます。
export | ファイル | 使い方 |
|---|---|---|
"godot" | <name>.tres (SpriteFrames) | プロジェクト内の output_dir を指定して生成します(res:// パスは自動入力されます)。または、<name>.png と <name>.tres を res://characters/ にコピーします。.tres を AnimatedSprite2D の Sprite Frames として使用します。アニメーション:walk_down、idle_left、tool_hammer_right など。Godot 4.6 でテスト済みです。 |
"unity" | <name>.png.meta、<name>.controller + <name>_unity_anims/*.anim | Assets/ 内の output_dir を指定して生成します(または、すべてのファイルをそこにコピーします)。スプライトはあらかじめ分割されています(Multiple、Point フィルター、圧縮なし)。.controller にはアニメーションごとに状態があり、idle_down から開始します。SpriteRenderer オブジェクトの Animator に配置し、animator.Play("walk_left") を呼び出します。Unity 6 でテスト済みです。 |
"web" | <name>.json (アトラス) + <name>_demo.html | TexturePacker 形式の(ハッシュ形式)アトラスで、animations を含みます。Phaser 3 では this.load.atlas(...)、PixiJS では Assets.load(...) を使用します。Phaser 3.80 と PixiJS 8.5 でテスト済みです。デモでは、矢印キー/WASD、Shift、Space でキャラクターを操作できます。ローカルサーバーから開いてください(python -m http.server)。 |
"site" | <name>_site.json | ジェネレーターサイトの Import from Clipboard (JSON) ボタンに貼り付けると、サイト上で編集を続けられます。 |
アートのクレジット
生成するたびに <name>_credits.txt と <name>_credits.csv が作成され、作者、ライセンス、リンクとともに、実際に使用したアートのみが記載されます。また、ゲームのクレジット画面にそのまま貼り付けられるテキスト(credits.statement)も含まれます。スプライトは LPC アート(CC-BY-SA 3.0、OGA-BY 3.0、GPL 3.0 など)です。ゲームをリリースする場合は、これらのクレジットを記載してください。
制限事項
- 完全なバージョンが存在しない種類もあります(マント、バックパック、ドレス、スカート)。
prefer_completeを指定しても変更されず、animation_checkでその旨が示されます。 - LPCの筋肉質、子ども、妊娠中の体型には、一部のアニメーションがありません(例:筋肉質の体型には
shootやclimbがありません)。animation_checkはこれらをbody_missingに報告します。 - Godot 3はサポートされていません(Godot 4のみ)。UnityはUnity 6でテスト済みです。
- ローカルで実行します(stdio)。リモートサーバーのみを受け付けるクライアントでは動作しません。
開発
git clone https://github.com/kyuza1/lpc-character-mcp.git
cd lpc-character-mcp
pip install -e ".[dev]"
python -m pytest -q
クローンした場合、定義、キャッシュ、出力はクローン内(lpc/、cache/、output/)に保存されます。テストは、プッシュのたび、および毎週月曜日に、GitHub ActionsでLinux、Windows、macOS上で実行されます(公式LPCリポジトリの変更を検出するためです)。GitHubリリースが作成されると、PyPIに自動でリリースが公開されます。CHANGELOG.mdを参照してください。
ライセンス
コードはMITライセンスです。ダウンロードしたアートはLPCアーティストに帰属し、それぞれのライセンスに従います(生成されたクレジットファイルを参照してください)。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。