Stickman Character MCP Server
スティックマン キャラクター MCP サーバー
あなたの Red Hat エンジの参照アートを、ポーズの設定ができるリグ付きキャラクターに変換します。MCP互換のコーディング・エージェン(Claude Code、Claude Desktop、Annotation 等)が直接制御できます — 関節の角を設し、表情を選び、単フレームや全アニメーション(GIF/MPG)を書だり出せます。すべてのフレームが同じのラメトリック SVG リグから生成されるるため、フレームごと画像を生成す方法と異り、キークターは動画全体でモデの通りの見た目を完全の保ち続けます。
モデの忠実な再現
リグは参照シートから近似にではない直接計測されているので、レンダリンは元のアートとほぼピクセル単位で位置します。
ジ長さは正面長の参照シート(1024pxソース、頭線外半径121px)から取り、400×520のキンバスに 0.546 倍の配置ました。脊髄215px、上腕/前腕108px/120px、の外周/周106/127px、身体105/下a 120/、手足のストノーク約19px、頭のセンターーは肩の分岐点のの上 133px。
Hmm "unsigned" is duplicated. Let me refine:
"* プロポーション — 正面参考図(1024px原画、頭の外半径121px)から取った値を 0.546 × して、400×520 のキンバスに配置ました。脊柱215px、上腕/前腕108px/76 →
Wait, original says "upper/fore arm 108/cm" 108/120. OK.
Let me properly state: "脊柱215px、上腕/前腕108/120px、大腿/下腿126/127px、体の線ストローク約19px、頭の中心は肩の分岐点よりも133px上。"
Hmm "limb stroke" — "手足の線". OK.
フェドラ — は手作規的似のではなく、参照帽のベクトル・トレース。正規化された SVG パス(
rig.pyのHAT_PATHS)というて用意されており、頭部半径単位で表さるれ、translate(head) scale(head_radius)で描画されます。これにより、どのようの傾けてのにもの頭に追従し、元のつばのカーブ、クラウンの時しみ、どめのバードを其のままに保てます。
パレットはアートからサンプリングは参考は以下の通りです:
#D51918の明るい赤、#A01513の中ぶ、#7E1212の影、#C2C355の顔の影、#D2D355の地面の影。顔は参照の約束に従っています — 無表情は黒をりのオベールの2つであり、口ません 白目と瞳孔の目は幸あ・隣している・びっくしの表情のみに使し、怒い鳴りは歯を食いし場った斜のェジを使用ます。参参照の状態シートとまったく同じです。
hat_color はまだ完全にパラメトリックです。任意の16進数を「渡」すると、それの中間トニーンとシャドウ・トニーンは、参照の既定の 1.0 / 0.742 / 0.592 のランプから導出されます。
含まれるもの
stickman_mcp/
rig.py - the skeleton: joints, forward kinematics, SVG renderer,
traced fedora paths, facial expressions, pose presets
animate.py - keyframe interpolation + export to PNG sequence / GIF / MP4
server.py - the MCP server itself (tools below)
pyproject.tomlインストール
cd stickman_mcp
python3 -m venv venv
source venv/bin/activate
pip install -e .これで mcp と cairosvg(SVG→PNG レンダリング)、pillow(GIF 書き出し)が導入されます。GIF/PNG シーケンスの書き出しには追加のシステムツールは不要です。MP4 の書き出しは ffmpeg が PATH にインストールされてい必要があります。
MCP サーバーとして登録する
Claude Desktop / Claude Code — MCP 設備設定を追加してください(macOS では ~/Library/Application Support/Claude/claude_desktop_config.json、アナログに Claude Code の構成にはその該当箇所):
{
"mcpServers": {
"stickman": {
"command": "/absolute/path/to/stickman_mcp/venv/bin/python",
"args": ["-m", "stickman_mcp.server"],
"cwd": "/absolute/path/to/stickman_mcp"
}
}
}そして其でグスタンドアローンで stdio で実行してテストすることもできます。
python -m stickman_mcp.server利用できるツール
ツール | 動作 |
| 標準ポーズとそのすべての定義を一覧表示します。ここでポーズをコピーして調整できます。 |
| 標準の表情リストを一覧表示します。 |
| 手動でポーズを書くために、制御できるすべての関節とその初期角度を一覧表示します。 |
| 1つのフレームを表示します — プリセット名や/または明示のジョイント・オーバーライド、組み合わせ、オプションの |
| キーフレーム・アニメーション(ポーズ + 表情 + ホールド・トランジション・タイミングでの)をGIF、MP4、またはPNGシーケンスに書画出します。 |
| わかりやすいもの:N 步のループ歩きサイクルを出力します。 |
| 手軽な:N 步のループ走りサイクルを出力します。 |
ジョイント(角度はすべで度、0 は真ため、+ は時計回り)
l_shoulder, l_elbow, r_shoulder, r_elbow, l_hip, l_knee,
r_hip, r_knee, neck(頭部の傾き),
body_lift (垂直, 负レー値 = 上).
Wait - I must include both neck and body_lift: In original: "neck, spine (に ..., ridge spine(トルソの傾き)、hip_shift(px, 水平)、spine...`。 Let me write:
l_shoulder, l_elbow, r_shoulder, r_elbow, l_hip, l_knee,
r_hip, r_knee, neck???????, spine(りソの傾け), hip_shift(px, 水平), body_lift(px, 垂直、マイナス は上).
"l_ はキャラクタから見て左、つまり見る側から見てになります。ミラー的なポーズは膝の角度を反対の符号にする必要があります(l_knee=86, r_knee=-86)— これでする膝とものかがまず曲りとぞ同じになります。
スタイルのキー(スタイルはポーズごとで使用され、アニーション内で補間されません — キーフレームで瞬間的に切り替わります)
hands—"blob"(デフォルト)、"open"、または"fist"。側ごとに指定する dict を受け取ることもできます:{"r": "open"}とすると片方の手を blob のままにできます。front_arm—"l"、"r"、または"both"—— 指定した腕を頭(フェドラ)の上に描画します。手が顔に触れるポーズ(facepalm、thinking_pose)の場合に必要です。フェドラのつばよ幅は頭の幅の約1.5倍あるため、通常は手を隠してしまうからです。prop— 現時点では"chair"。sitポーズ後ろ側に椅子を描きます。
ポーズ
idle, wave_right, wave_left, point_right, point_left,
explain_hands, explain_left_hand, thinking_pose, arms_up_happy,
arms_crossed, hands_on_hips, fists_up, walk_1, walk_2, run_1,
run_2, jump, crouch, sit, shrug, facepalm, bow, look_up,
look_down, celebrate, typing.
表情
neutral, happy, excited, sad, angry, surprised, thinking,
wink, talking, calm.
例: コーディング・エージェントが短いクリップを制作する
render_animation(
keyframes=[
{"pose": "idle", "expression": "neutral", "hold": 0.5},
{"pose": "wave_right", "expression": "happy", "hold": 1.0, "transition": 0.3},
{"pose": "explain_hands", "expression": "excited", "hold": 1.5, "transition": 0.3},
{"pose": "idle", "expression": "happy", "hold": 0.5, "transition": 0.3},
],
fps=12,
out_format="mp4",
)エージェントはプリセットを丸ごと利用せず、ポーズを直接ハンドメイドで作ることもできる:
render_pose(
joints={"r_shoulder": -90, "r_elbow": 20, "neck": -10},
expression="excited",
)トランジションはスムーズステップのイージングで行われるため、ポーズはキーフレーム間を線形的にスライドするのではなく、ゆっくりと入り、ゆっくりと抜けていく動きになります。
メモ / 今後のステップ
リグが対応しているのは、正面を向いた2Dポーズのみです (参照セットの大部分がそうだから)。左向き・右向きのプロフィール版 — 側面図やカメラ方向へ歩く参照図の用に — は自然な次の追加になります。既存の関骨格は対応していますが、頭部、顔、トレースしたフェドラにはそれぞれプロフィール用のバリエーションが必要です。
sitは現在、prop="chair"で簡単な木製椅子を描画します。他の小道具はrig.pyの_chair_svgのパターンにそのまま取入れるできます。render_animationのキーフレームは「キャラクターが画面を横切って歩く」ショットのためにプログラムで生成できます:hip_shiftとwalk_1/walk_2を交互に動かせばOKです。
Let me check the final answer - Now, I should double-check the table for render_pose - Source: "a preset name and/or explicit joint overrides, an expression, optional hands/prop" - Actually the source says "a preset name and/or explicit pose overrides..." Wait recompute: The actual source: "a preset name and/or explicit joint overrides" - Actually it's "a preset name and/or explicit joint — Hmm if I look: "Renders one frame — a preset name and/or explicit joint overrides, an expression, optional hands/prop." Let me re-read source: "a preset name and/or explicit pose overrides" - No.
In the user message: "a preset name and/or explicit pose overrides, an expression, optional hands/prop." Hmm, the exact line says: "a preset name and/or explicit pose overrides" - Let me scroll:
"| render_pose | Renders one frame — a preset name and/or explicit
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Generate, edit, and deploy immersive 3D/WebGL web projects from any MCP assistant.
OCR, transcription, file extraction, and image generation for AI agents via MCP.
Generate on-brand images from your AI agent: design, edit, and render templates over MCP.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/meAnkit18/stickman-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server