blender-2d-mcp
AI-driven 2D drawing and animation for Blender 5.x via Grease Pencil, including scene setup, drawing tools, keyframes, materials, modifiers, and rendering.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@blender-2d-mcpcreate a 2D character waving and animate it with 24 keyframes"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Blender 2D MCP
AI-driven 2D drawing and animation for Blender 5.x via the Model Context Protocol. Lets MCP clients (Claude Desktop, Cursor, VS Code Copilot agent mode, …) create Grease Pencil drawings, keyframes, materials, and renders directly inside a running Blender instance.
Built on Blender's GPv3 API (bpy.ops.grease_pencil.*, GreasePencilDrawing).
flowchart LR
A[MCP Client<br/>Claude / Cursor / VS Code] <-->|stdio / JSON-RPC| B[blender-2d-mcp<br/>FastMCP server]
B <-->|TCP JSON<br/>localhost:9876| C[blender_2d_addon.py<br/>socket server in Blender]
C -->|main thread| D[Grease Pencil API<br/>GPv3]blender_2d_addon.py— Blender addon embedding a TCP JSON command server. Commands are queued and executed on Blender's main thread viabpy.app.timers.src/blender_2d_mcp/server.py— FastMCP stdio server exposing the addon's commands as MCP tools.
Requirements
Blender 5.2 LTS only (the addon refuses to enable on older builds; the GPv3 API surface it uses is 5.2-specific)
Python ≥ 3.10 with
mcp[cli](installed automatically)
Related MCP server: Blender MCP Bridge
Installation
1. Install the addon into Blender
In Blender: Edit > Preferences > Add-ons > Install…
Select
blender_2d_addon.pyfrom this repository.Enable Interface: Blender 2D MCP.
Open the sidebar (View > Sidebar, or press N) → Blender2DMCP tab.
Click Connect to MCP Client (default port
9876). Keep Blender running.
Tip:
blender-2d-mcp --install-addoncopiesblender_2d_addon.pyto your Downloads folder and prints these steps.
2. Connect an MCP client
The server binds to localhost only — no auth token is needed for local use.
Option A — uvx (no install):
uvx --from "g:\My Projects\blender-2d-mcp" blender-2d-mcpOption B — editable install:
cd "g:\My Projects\blender-2d-mcp"
pip install -e .
blender-2d-mcp # runs the stdio MCP serverClaude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"blender-2d-mcp": {
"command": "uvx",
"args": ["--from", "g:\\My Projects\\blender-2d-mcp", "blender-2d-mcp"]
}
}
}Cursor (.cursor/mcp.json) or generic stdio clients:
{
"mcpServers": {
"blender-2d-mcp": {
"command": "C:\\Path\\To\\Python\\Scripts\\blender-2d-mcp.exe",
"args": []
}
}
}VS Code / GitHub Copilot Chat (.vscode/mcp.json — already included in this repo):
{
"servers": {
"blender-2d-mcp": {
"type": "stdio",
"command": "uvx",
"args": ["--from", "g:\\My Projects\\blender-2d-mcp", "blender-2d-mcp"],
"env": {}
}
}
}Alternatively, if
blender_2d_mcpis pip-installed in some environment, use that environment's Python:"command": "C:\\Path\\To\\Python\\python.exe", "args": ["-m", "blender_2d_mcp.server"].
To use it: open Copilot Chat, switch the mode dropdown to Agent, and the
Blender tools become available (#blender-2d-mcp). Start/stop/restart the
server from the Command Palette with MCP: List Servers. Reload the VS Code
window after editing mcp.json.
The 2D canvas
With setup_2d_scene the viewport is set to a front orthographic view, so the drawing plane is world XZ:
2D point you send | World position | Meaning |
|
| x = screen right, y = screen up |
|
| used as-is |
Units are meters (Blender default); a 1920×1080 HD frame at default camera zoom spans roughly ±5 units horizontally.
Tool catalog
Tool | Purpose |
| List GP objects, layers, keyframes, stroke counts |
| General scene/object introspection |
| Addon/protocol/Blender version + compatibility status |
| White background, front ortho view, HD resolution |
| New GP object with a layer + black stroke material |
| Layer management |
| Layer stack editing |
| Opacity, blend mode, hide, lock |
| GPv3 layer masking (cut-out effects) |
| Idempotent blank keyframe creation |
| Keyframe manipulation ( |
| Freeform stroke; per-point radius/opacity profiles for tapering |
| Batch-draw many strokes in one call |
|
|
| Stroke inspection & editing (move/scale/rotate/smooth) |
| Stroke + fill colors |
| Named color palettes (persist with the .blend file) |
| Recolor a layer (or all layers with |
| Named drawing styles: pencil, ink, brush, marker, thin_detail |
| Skeletons for cut-out character animation (bones on the XZ canvas plane) |
| Bind a GP object to one bone via an ARMATURE modifier |
| Rotate/translate/scale bones with keyframes; read back rig state |
| One-call motions: bounce, float, blink (objects); wave, swing (bones) |
| Platform presets: youtube 16:9, shorts/reels/tiktok 9:16, square 1:1 (any custom size still allowed) |
| Background music/voiceover via VSE; embedded as AAC in mp4 renders |
| Titles, hooks, captions on the canvas plane with pop/slide entrances |
| Timeline markers for shot sequencing |
| Dump all keyframes/f-curves/markers to reason about timing |
| Generate in-betweens between two keyframes (easing control) |
| Keyframe object location/rotation/scale |
| Ghost previous/next frames |
| GP modifiers: Noise wobble, Smooth, Thickness, Time offset… |
| Playhead, fps, frame range, render engine, film transparency |
| Ortho front camera fitted to the canvas |
| Background image empty for tracing |
| Non-blocking renders incl. mp4 video output |
| Walk back AI-driven edits |
| Viewport capture returned as an image |
| Escape hatch: any |
| Arbitrary |
Typical workflow
Ask first: when a user requests an animation, the AI confirms target platform/aspect (YouTube 16:9, Shorts/Reels 9:16, square), duration, fps, and audio/text needs before drawing anything. The MCP itself stays orientation-neutral — every tool accepts explicit parameters.
get_gp_scene_info+get_viewport_screenshot— see what exists.setup_platform_scene("reels")(or any customsetup_2d_scene(resolution=[w,h])) →create_gp_objectif starting fresh.Style first:
gp_apply_style_presetper layer andgp_create_palettefor named colors (gp_apply_palette_colorapplies them;layer_name='*'restyles everything).Draw with
gp_draw_shape/gp_draw_stroke; passframe_numberto place strokes on key poses (frames are created automatically). Usegp_draw_strokesto batch detailed drawings.Filled shapes: create a material with
fill_alpha > 0, thenfill=True+fill_material.Characters: one GP object per body part →
create_armature(parented bone chains on the XZ plane) →parent_gp_to_boneeach part → animate withpose_boneor one-callapply_motion_preset(bounce/float/blink/wave/swing).Animate 'on twos' (key poses every 2 frames at 24 fps): copy poses with
gp_copy_frame, tweak withgp_transform_stroke, thengp_interpolatefor in-betweens. Add a NOISE modifier for hand-drawn wobble. Check timing withget_animation_summary.Social polish: hook text in the first second (
add_text_object+animate_text_in), keep action inside the central ~80% (platform UI covers edges), add music (add_audio_strip).Render with
render_animation(use_video=True)and pollget_render_status— output is H264 mp4 with AAC audio, ready to upload.Always screenshot after changes to verify visually. Mistakes are undoable via
undo.
Skill for AI agents
This repository ships an agent skill at
.github/skills/blender-2d-animation/SKILL.md that teaches AI agents
how to combine the tools: workflow ordering, step-by-step recipes (loop animation, cut-out character rig,
explainer video with audio), batching rules, common pitfalls, and the screenshot-verify loop.
VS Code / GitHub Copilot agent mode: picked up automatically from
.github/skills/in the workspace.Claude Code / other clients: copy or symlink the folder to their skills location, e.g.
# Claude Code (project scope)
mkdir -p .claude/skills
cp -r .github/skills/blender-2d-animation .claude/skills/The skill is documentation only — it doesn't change server behavior. Clients without skill support still get the
essential guidance via the MCP server's built-in instructions field.
Development
pip install -e ".[dev]"
python -m pytest tests/ -vThe test suite runs the addon's TCP transport outside Blender by AST-lifting the server class against a fake bpy — no Blender install needed. Handler logic that touches real Grease Pencil data must be verified inside Blender.
Troubleshooting
Symptom | Fix |
MCP client can't connect | Start the server in Blender's sidebar panel first; check the port matches (default 9876) |
Port already in use | Change the port in the sidebar panel and add |
Firewall prompt on startup | Allow Blender on private networks (server binds localhost only) |
Screenshot is black | Click into the Blender window once (compositor issue), or ensure a 3D viewport is visible; the tool falls back from offscreen GPU capture to window grab automatically |
| It needs a visible 3D viewport in Blender and keyframes at both boundary frames; open one |
Modal operators (pen, brush strokes) don't work | Not supported over MCP — use |
| No longer used — restart the MCP server and make sure both the addon and |
Renders seem to hang | They're non-blocking now — poll |
Addon won't enable | This project requires Blender 5.2 LTS exactly (GPv3 API only); older builds are refused by design |
License
MIT
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 Servers
- AlicenseNot gradedqualityCmaintenanceTransforms Blender into an MCP server with 50+ tools for AI-driven 3D workflows, enabling complete control over objects, materials, animations, physics simulations, and rendering through natural language commands.45MIT
- AlicenseAqualityCmaintenanceEnables remote control of Blender via the Model Context Protocol, allowing users to execute Python scripts, query scene data, and generate 3D models from images. It provides a bridge for AI clients to interact directly with Blender's internal environment and automate 3D content creation.36MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI clients to control Blender's 3D workflow via an embedded MCP server.25MIT
- AlicenseNot gradedqualityCmaintenanceEnables natural language control of Blender 3D through MCP clients, allowing creation, modification, and manipulation of 3D models, animations, and scenes.299MIT
Related MCP Connectors
MCP server for NanoBanana AI image generation and editing
MCP server for Flux AI image generation
MCP server for Wan AI video generation
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/Praveen16-V/blender-2d-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server