moho-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MOHO_MCP_IPC_DIR | No | File IPC directory used by the Node bridge. The Moho plugin and bridge must use the same IPC directory. | <system temp>/moho-mcp |
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": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| document_getInfoA | Get information about the currently open MOHO document (name, path, dimensions, frame range, FPS) |
| document_getLayersA | Get a list of all top-level layers in the current MOHO document |
| layer_getPropertiesB | Get detailed properties of a specific layer (type, visibility, transform, etc.) |
| layer_getChildrenB | Get child layers of a group layer |
| layer_getBonesB | Get all bones in a bone layer |
| bone_getPropertiesA | Get detailed properties of a specific bone (position, angle, scale, parent, etc.) |
| animation_getKeyframesA | Get keyframe data for a specific animation channel on a layer |
| animation_getFrameStateA | Get the full animation state of a layer at a specific frame |
| mesh_getPointsB | Get all mesh points (vertices) in a vector layer |
| mesh_getShapesB | Get all shapes (filled regions) in a vector layer |
| bone_setTransformA | Set the transform (angle, position, scale) of a bone at a specific frame. Creates keyframes automatically. All transform params (angle, posX, posY, scale) are optional — only supplied values are changed. |
| bone_selectBoneA | Select a bone in the MOHO UI (deselects all others first) |
| animation_setKeyframeA | Set a keyframe value on an animation channel. For vec2 channels (translation, scale), pass value as {x, y}. For scalar channels (rotation, opacity, shear), pass a number. |
| animation_deleteKeyframeB | Delete a keyframe from an animation channel at a specific frame |
| animation_setInterpolationA | Set the interpolation/easing mode on an existing keyframe (linear, smooth, ease_in, ease_out, step) |
| document_setFrameA | Navigate to a specific frame on the MOHO timeline |
| layer_setTransformA | Set the transform (translation, rotation, scale) of a layer at a specific frame. All transform params are optional — only supplied values are changed. |
| layer_setVisibilityA | Show or hide a layer in the MOHO scene |
| layer_setOpacityA | Set the opacity/transparency of a layer at a specific frame (0.0 = fully transparent, 1.0 = fully opaque) |
| layer_setNameA | Rename a layer in the MOHO scene |
| layer_selectLayerB | Select a layer in the MOHO UI |
| document_screenshotA | Render the MOHO scene or capture the full application window and return as an image. Use mode "scene" (default) for a clean rendered frame, or "full" for the entire MOHO UI including timeline, layers panel, etc. |
| input_mouseClickA | Click at (x, y) coordinates relative to the MOHO window top-left. Use with document_screenshot(mode='full') to identify UI element positions, then click them. |
| input_mouseDragA | Drag from (startX, startY) to (endX, endY) relative to the MOHO window. Useful for dragging timeline playhead, sliders, or drawing operations. |
| input_sendKeysA | Send a keyboard shortcut to the MOHO window. Supports modifiers (ctrl, shift, alt) combined with keys. Examples: "ctrl+z" (undo), "ctrl+shift+z" (redo), "space" (play/pause), "delete", "ctrl+s" (save), "f5". |
| batch_executeA | Execute multiple MOHO operations in a single IPC round-trip (~300ms total) instead of one round-trip per call (~300ms each). PREFER THIS over individual calls whenever you have 2+ operations. Method names use DOT notation: "bone.setTransform", "layer.getProperties", "animation.setKeyframe", etc. Params match each tool's schema exactly. Supports all methods EXCEPT: document.screenshot (too slow), batch.execute (no nesting). Common patterns:
Returns { results: [{ success, index, result|error }], summary: { total, executed, succeeded, failed, stoppedEarly } }. Use stopOnError: true when later operations depend on earlier ones succeeding. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| shortcuts | Comprehensive Moho Pro 14 keyboard shortcuts organized by category |
| tools | All Moho Pro 14 tools organized by toolbar group with shortcuts and descriptions |
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/neosh11/moho-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server