ArmorPaint MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| app | Yes | Path to the ArmorPaint application (e.g., /Applications/ArmorPaint MCP.app) | |
| launch | No | Set to "true" to launch ArmorPaint automatically | |
| timeout | No | Server operation timeout in seconds (e.g., "180") | |
| workspace | Yes | Workspace folder for meshes, references, projects, and exports | |
| bridge_dir | Yes | Directory used for bridge communication, preferences, and logs | |
| allow_scripts | No | Set to "true" to enable armorpaint_run_script; requires ARMORPAINT_MCP_ALLOW_SCRIPTS=1 | |
| ARMORPAINT_MCP_ALLOW_SCRIPTS | No | Environment variable required when scripting is enabled; set to "1" |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| armorpaint_statusA | Check the local connection and supported bridge version without changing the project. |
| armorpaint_get_stateA | Inspect objects, triangle counts, materials, layers, assets, current selection, and project path. |
| armorpaint_list_node_typesA | List material node types with socket and button schemas, and installed export presets. Query this before building node graphs. |
| armorpaint_new_projectA | Create a new project. Save the current project before discarding it. |
| armorpaint_open_projectA | Open an existing .arm project. Save the current project first. |
| armorpaint_save_projectA | Save the project to an absolute .arm path, optionally packing imported assets. Existing files require overwrite=true. |
| armorpaint_import_meshA | Import a UV-mapped OBJ or supported Blender mesh. Replacement can clear the current layers; use append mode to preserve geometry. |
| armorpaint_import_textureA | Import an image into the project's texture assets. Returns the updated asset list. |
| armorpaint_set_resolutionA | Resize the project's texture maps. Larger maps increase GPU memory use. |
| armorpaint_select_objectA | Select a mesh by the zero-based index returned by get_state. |
| armorpaint_set_objectB | Rename or show/hide a mesh object. |
| armorpaint_create_materialA | Create and select a named PBR material. |
| armorpaint_select_materialB | Select a material by its stable ID. |
| armorpaint_delete_materialA | Delete a material. The final material cannot be deleted. |
| armorpaint_set_material_pbrA | Set constant PBR channel values, disconnecting existing links to those channels. Color uses RGBA values in the ArmorPaint material UI. |
| armorpaint_get_material_graphA | Read a material's nodes, socket values, buttons, and connections. material_id=-1 uses the current material. |
| armorpaint_add_nodeB | Add a material node using a type returned by list_node_types. Returns the graph including the new node ID. |
| armorpaint_disconnect_nodesB | Disconnect the incoming link to a material node input socket. |
| armorpaint_import_materialB | Import an ArmorPaint .arm material library into the current project. |
| armorpaint_remove_nodeA | Remove a material node and its links. The PBR output node is protected. |
| armorpaint_connect_nodesB | Connect an output socket to an input socket, replacing any previous connection to that input. |
| armorpaint_set_node_valueB | Set a node input, output, or button value. The numeric array must have the length reported by get_material_graph. |
| armorpaint_create_layerA | Create a paint layer, material fill, mask, or group. Masks require a parent layer ID. UV modes: 0=UV map, 1=triplanar, 2=projection. |
| armorpaint_bakeA | Bake a mesh map to PNG using ArmorPaint. Types: 0=curvature, 1=tangent normal, 2=object normal, 3=height, 4=derivative, 5=position, 6=UV, 7=material ID, 8=object ID, 9=vertex color, 10=AO, 11=lightmap, 12=bent normal, 13=thickness. Types 1/3/4 require a high-poly object index; 10–13 require ray tracing. Use a regular paint layer. Import the exported image for persistent reuse. |
| armorpaint_set_layer_channelsC | Enable or disable individual PBR channels on a paint or fill layer. |
| armorpaint_select_layerC | Select a layer by stable ID. |
| armorpaint_set_layerC | Edit a layer. object_mask=0 affects all objects; index+1 restricts it to one object. Opacity ranges from zero to one. |
| armorpaint_layer_actionB | Duplicate, delete, merge, reorder, or convert a layer; apply or invert masks. Save a checkpoint before merging or deleting. |
| armorpaint_clear_layerB | Replace a paint layer's pixels with uniform color and packed PBR values. RGBA components range from zero to one. |
| armorpaint_fill_layerC | Paint the selected material over an entire paint layer, respecting object masks. |
| armorpaint_paint_strokeA | Paint one continuous stroke. Screen points use normalized viewport coordinates; world points use XYZ and are projected through the current camera. Hidden surfaces require another camera view. |
| armorpaint_import_maskA | Import a grayscale image as a mask for a paint or fill layer. White reveals the layer; black hides it. |
| armorpaint_set_cameraB | Orbit the camera by yaw/pitch radians, move forward by zoom units, or reset its view. projection: 0=perspective, 1=orthographic. |
| armorpaint_set_viewportA | Set viewport channel: 0=lit, 1=base color, 2=normal, 3=AO, 4=roughness, 5=metallic, 6=opacity, 7=height, 8=emission, 10=UV, 14=mask, 15=path traced. |
| armorpaint_capture_viewportA | Capture the rendered 3D viewport as a PNG and return it as an MCP image for visual inspection. |
| armorpaint_export_layerA | Export one layer's base color/mask, normal, or packed occlusion-roughness-metallic texture to a PNG file. |
| armorpaint_export_texturesA | Export the visible layer stack as PNG PBR maps using an installed preset. Get exact preset names from list_node_types. |
| armorpaint_export_meshB | Export the current mesh to an OBJ file. |
| armorpaint_export_materialC | Export a material as an ArmorPaint material file. |
| armorpaint_undoA | Undo the most recent operation recorded by ArmorPaint history. Not every operation is covered; checkpoints protect whole workflows. |
| armorpaint_redoA | Redo the most recently undone operation. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| project_resource | Current project state |
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/gprethesh/armorpaint-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server