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 |
Capabilities
Features and capabilities supported by this server
| 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