Skip to main content
Glama
meAnkit18

Stickman Character MCP Server

by meAnkit18

Use "riggesteuerte" with "rig" + "gesteuerte" -> "riggesteuerte". Okay.

I will now write output# Stickman Character MCP Server

Verwandelt deine Stickman-Referenzgrafik im Stil eines Red-Hat-Ingenieurs in eine posierbare, riggesteuerte Figur, die jeder MCP-kompatible Coding-Agent (Claude Code, Claude Desktop, Cursor, usw.) direkt steuern kann – Gelenkwinkel setzen, einen Gesichtsausdruck wählen und einzelne Frames oder komplette Animationen (GIF/MP4) rendern. Da jedes Bild aus demselben parametrischen SVG-Rig erzeugt wird, bleibt die Figur über ein ganzes Video hinweg perfekt modelltreu, statt so abzudriften, wie es bei der Bild-für-Bild-Generierung passiert.

Modelltreue

Das Rig wird direkt am Referenzblatt vermessen und nicht bloß angenähert, sodass ein Render fast pixelgenau mit der Quellgrafik übereinstimmt:

  • Proportionen stammen aus der Vorderansicht-Referenz (1024-px-Quelle, äußerer Kopfradius 121 px) und wurden mit 0.546 auf die 400x520-Leinwand skaliert – Spine 215 px, Ober-/Unterarm 108/120, Ober-/Unterschenkel 126/127, Gliedmaßenstrich ~19 px, Kopfzentrum 133 px über der Schultergabel.

  • Der Filzhut ist eine Vektor-Nachzeichnung des Referenzhutes, keine handgebaute Näherung. Er wird als normalisierte SVG-Pfade (HAT_PATHS in rig.py) ausgeliefert, die in Kopfradius-Einheiten ausgedrückt und über translate(head) scale(head_radius) gezeichnet werden – dadurch sitzt er bei jeder Neigung auf dem Kopf und behält exakt den Krempenschwung, die Kronen-Pinch und das Hutband des Originals.

  • Palette ist aus der Grafik abgetastet: #D51918 helle Rot, #A01513 Mitteltön, #7E1212 Schatten, #C2C3C5 Gesichtsschattierung, #D2D3D5 Bodenschatten.

  • Das Gesicht folgt den Referenzkonventionen: Das neutrale Gesicht besteht aus zwei schwarzen Ovalflächen und keinem Mund. Augen mit weißem Augapfel und Pupille werden nur für happy/excited/surprised verwendet, und wütend nutzt schräg gestellte Keilformen mit zusammengebissenen Zähnen – genau wie in den Referenzausdruckstafeln.

hat_color bleibt vollständig parametrisch: Übergibst du eine beliebiges Hex, werden die Mittel- und Schattentöne über die eigene 1.0 / 0.742 / 0.592-Rampe der Referenz daraus abgeleitet.

Related MCP server: Minecraft MCP Server Pro

Was ist enthalten

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

Installation

cd stickman_mcp
python3 -m venv venv
source venv/bin/activate
pip install -e .

Das ziseht mcp, cairosvg (SVG→PNG-Rendering) und pillow (GIF-Export) ein. Für den Export als GIF/PNG-Sequenz sind keine zusätzliche Systembibliotheken erforderlich; MP4-Export erfordert ffmpeg und dass es installiert und auf deinem PATH liegt.

Als MCP-Server registrieren

Claude Desktop / Claude Code – füge es deiner MCP-Config hinzu (~/Library/Application Support/Claude/claude_desktop_config.json unter macOS bzw. der entsprechenden Claude-Code-Config):

{
  "mcpServers": {
    "stickman": {
      "command": "/absolute/path/to/stickman_mcp/venv/bin/python",
      "args": ["-m", "stickman_mcp.server"],
      "cwd": "/absolute/path/to/stickman_mcp"
    }
  }
}

Oder startest du es eigenständig über stdio, um es zu testen.

python -m stickman_mcp.server

Verfügbare Tools

Tool

Was es tut

list_pose_presets

Listetene eingebaute Posen und ihre vollständigen Definitionen, sodass eine Pose kopiert und angepasst werden kann.

list_expressions

Listet die eingebauten Gesichtsausdrücke auf.

list_joints

Listet jedes steuerbare Gelenk und dessen Standardwinkel für handgeschriebene Posen.

render_pose

Rendert einen Frame – einen Presetnamen und/oder explizite Gelenküberschreibungen, einen Ausdruck, optional hands/prop. Liefert ein PNG (oder rohes SVG).

render_animation

Rendert eine komplette Keyframe-Animation (Posen + Ausdrücke + Hal-/Übergangszeiten) in GIF, MP4 oder eine PNG-Sequenz.

render_walk_cycle

Komfortfunktion: Endlos-Gehzyklus mit N Schritten.

render_run_cycle

Komfortfunktion: Endlos-Laufzyklus mit N Schritten.

Gelenke (alle Winkel in Grad, 0 = gerade nach unten, + = im Uhrzeigersinn)

l_shoulder, l_elbow, r_shoulder, r_elbow, l_hip, l_knee, r_hip, r_knee, neck (Kopfneigung), spine (Rumpfneigung), hip_shift (px, horizontal), body_lift (px, vertikal, negativ = nach oben).

Das l_ ist die linke Seite der Figur, aus Sicht des Betrachters also rechts. Gespiegelte Posen benötigen entgegengesetzte Vorzeichen bei den Kniezsh („Grill pose: l_lnee=86, r_knee=-86), damit beide unten.

Stil-Keys (je Pose, nicht interpoliert – sie springen am Every-Frame):

  • hands (German "blob" (Standard), "open" or "fist") – auch corresponds to a dict for per .n yes side: {"r": "open"} works in the other hand Python blob. *: front_arm – "l", "r" or "both", draws this arm over the head. Required always if a hand sits face facepalm, thinking_pose) Since the hat brim ~face is 1.5× as wide and would otherwise einfach cover it.

  • sock" – recently a "chair", appears behind the character when sit` is used.

Posen

bee, 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.

Expressions

neutral, happy, excited, sad, angry, surprised, thinking, wink, talking, calm.

Beispiel: Ein Coding-Agent erstellt einen kurzen Clip

ein $GXP5

Ein Agent can also the Presets completely geflow: and with the hand a Pose beginnen:

render_pose(
  joints={"r_shoulder": -90, "r_elbow": 20, "neck": -10},
  expression="excited",
)

Ü alternative use Smoothstep-Easing, in so poses we.

, out between. Rather than Linear. Interpolating.

Achtung: Table? We need not mention.

Hinweise / nächste Schritte

  • Der Rig deckt currently indisc Christ? etc...

Ein!

Let's write final final absolutely clean# Stickman Character MCP Server

Verwandelt deine Stickman-Referenzgrafik im Stil eines Red-Hat-Ingenieurs in eine posierbare, riggesteuerte Figur, die jeder MCP-kompatible Coding-Agent (Claude Code, Claude Desktop, Cursor, usw.) direkt steuern kann – Gelenkwinkel setzen, einen Gesichtsausdruck wählen und einzelne Frames oder komplette Animationen (GIF/MP4) rendern. Da jedes Bild aus demselben parametrischen SVG-Rig erzeugt wird, bleibt die Figur über das gesamte Video perfekt modelltreu, statt so abzudriften, wie es bei der Bild-für-Bild-Generierung passiert.

Modelltreue

Das Rig ist direkt am Referenzblatt vermessen und nicht nur grob geschätzt, sodass ein Rendering fast pixelgenau mit der Quellgrafik übereinstimmt:

  • Designwerte: aus der Frontansicht-Referenz (1024-px-Quelle, äußerer Kopfradius 121 px) und mit dem Faktor 0.546 auf die 400×520-Leinwand skaliert – Spine 215 px, Ober‑/Unter‑arm 108/129, Oberschenkel/Unterschenkel 126/127, Gliedmaßenstrich ≈19 px, Kopfzentrum 133 px über der Schulergabel.

  • Der Filzhut ist eine Vektor-Nachzeichnung des Referenzhuts, keine handgebaute Näherung. Er wird als normalisierte SVG-Pfade (HAT_PATHS in rig.py) geliefert, die in Kopfradius-Einheiten geschrieben sind und via translate(head) scale(head_radius) gezeichnet werden. So folgt er jedem Kopfneigen und bleibt exakt im Schwung der Krempen, Einbehaltung der Crown‑Pinch und Hutband des Originals.

  • Palette ist aus der Vorlage ent‑nommen: #D51918 helles Rot, #A01513 Mittelton, #7E1212 Schatten, #C2C3C5 Gesichtsschatten, #D2D3D5 Bodenschatten.

  • Gesicht folgt den Referenzmustern: Die neutrale Mimik ist zwei schwarze Ovale und kein Mund. Augen mit weißem Augapfel und Pupille nutzen nur für happy/excited/surprised; wütend (meint angry) verwendet schräger Mond mit zusammengesetzten Zähnen, genau wie auf den Referenz‑Expression‑Sheets.

hat_color bleibt dabei voll parametrisch: eine Hex‑Farbe angeben, die Mittel‑ und Schatten‑Ton aus der Referenz‑eigenen 0‑Ehrenreihe 1.0/0.742/0.592 abgeleitet.

Inhalt

WIP1

Installation

cd stickman_mcp
python3 -m venv venv
source venv/bin/activate
pip install -e .

Das holt mcp, cairosvg (SVG→PNG‑Rendering) und pillow (GIF‑Export). GIF/PNG‑Sequenz‑Export benötigt keine zusätzlichen Systembibliotheken; MP4‑Export benötigt ffnpeg – es muss installiert sein und in deinem PATH liegen.

Als MCP‑Server registrieren

Claude Desktop / Claude Code – zu deiner MCP‑Config hinzufügen (~/Library/Application Support/Claude/claude_desktop_config.json unter macOS, oder die entsprechende Claude‑Code‑Config):

{
  "mcpServers": {
    "stickman": {
      "command": "/absolute/path/to/stickman_mcp/venv/bin/python",
      "args": ["-m", "stickman_mcp.server"],
      "cwd": "/absolute/path/to/stickman_mcp"
    }
  }
}

Oder separat über stdio starten und testen:

python -m stickman_mcp.server

Verfügbare Tools

Tool

Beschreibung

list_pose_presets

Listet eingebaute Posen und ihre vollständigen Definitionen, damit eine Pose kopiert und modifiziert werden kann.

list_expressions

Listet eingebaute Gesichtsausdruck / Mimik.

list_joints

Listet alle steuerbaren Gelenke und deren Grund‑Defaults für handgebaute Posen.

render_pose

Rendert genau einen Frame – ein Preset und/oder manuelle Gelenk‑Override, ein Ausdruck, optional hands/prop. Gibt ein PNG (oder SVG‑Rohform) zurück.

render_animation

Rendert eine komplette Keyframe‑Animation (Posen + Ausdrücke + Heil‑/Bind/Transition‑Tempo) in GIF, MP4 oder eine PNG‑Loop

.

render_walk_cycle

Praktisch: N‑Stufiger Ghe cycle, Endlosschleife

render_run_cycle

Praktisch: N‑stufiger Lauf‑cycle, Endlos

Gelenke (alle Winkel in Grad, 0= vertikal nach unten, += im Uhrzeugersinn)

l_should, l_flambrain, r_shoulder, rift, l_hip, l_knee, r_hip, r_knee, neck (Kopfnaigung), spine (Oberkörperneigenbodies), hip_shift (px, horizontal), body_lift (px vertikal, negative = weiter).

l_ ist die linke Seite der Chars/Figur, d.h. die rechte Seite des Betrachters. Gespiegelte Posen brauchen entgegengesetzt gepolte Knie‑Werte (l_knee=10, r_knee=-10 etc.) damit beide Schienbeine in dieselbe Richtung flektieren.

Styles (per Pose, nicht interpoliert; sie setzen beim Keyframe):

  • hands – "blob" (ständard), "open" oder "fist". Auch ein Objekt pro Seite möglich: {"r": "open"} – die linke Hand bleibt Blob.

  • front_arm – "left", "right" oder "both" zeichnet diese Arm(e) über den Kopf. Notwendig, wenn die Hand auf dem Gesicht liegt (hands, thinking_pose), da Hutkontur ~1,5× so brett ist wie der Kopf und sie sonst überdeckt.

  • prop – zurzeit "chair", hinter der Figur gezeichnet (für sit).

Poses

hole, 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, shurg, facepalm, bow, look_up, look_down, celebrate, typing.

Mimik

neutral, happy, excited, sad, angry, surprised, thinking, wink, talking, calm.

Beispiel: Ein Coding‑Agent erstellt ‑kurzer Clip

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",
)

Ein Agent kann presets überspringen und komplett eigene Posen manuell schreiben:

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables MCP clients such as AstrBot, Claude, Cursor, or custom scripts to control a Minecraft bot over SSE through 49 tools covering perception, movement, building, gathering, crafting, combat, farming, memory, social interaction, and autonomous skills. It supports multi-client body control, emotion and event context, and survival/companion behaviors.
    MIT