Embeds an HTTP MCP server directly inside Cocos Creator 3.8+ so Claude and other AI assistants can inspect and manipulate your running game project. The core workflow is execute_javascript with two contexts: "scene" runs code in your active Cocos scene runtime, "editor" runs it in the browser editor environment. You can ask your AI to build UI hierarchies, attach components, query the scene graph, and capture screenshots for validation. Ships with 34 focused tools in core mode or 89 in full, plus cocos:// resource URIs for project inspection and a one-click config generator for Claude Desktop, Cursor, VS Code, and others. Install it as a Cocos extension, start the server from the Funplay menu, and point your client at localhost:8765.
An Embedded MCP Server for Cocos Creator Editor
中文 | English
If this project helps your Cocos workflow, please consider giving it a Star. It helps more developers discover the project and supports ongoing development.
Funplay MCP for Cocos is an MIT-licensed Cocos Creator extension that embeds an HTTP MCP server directly inside the editor. It lets AI assistants such as Claude Code, Cursor, Codex, VS Code Copilot, Trae, and Kiro inspect and operate your running Cocos project.
The package follows the same product direction as Funplay MCP for Unity: keep the default tool surface focused, provide a one-click client configuration window, and make one high-flexibility execution tool the primary workflow.
For Cocos, the primary tool is execute_javascript:
context: "scene" runs JavaScript in the active Cocos scene/runtime contextcontext: "editor" runs JavaScript in the Cocos editor/browser context"Create a login page UI with account/password fields and a main login button."
Your AI assistant can call
execute_javascript, build the UI hierarchy under the active Canvas, attach Cocos components, inspect the result, and capture a screenshot for validation.
If you just want to connect quickly, do these three things:
Funplay > MCP ServerRecommended install: use the official Cocos Store page and install the extension into your target Cocos Creator project.
For local development or unreleased builds, clone or copy this repository into your Cocos project extension directory:
cd /path/to/your-cocos-project
mkdir -p extensions
git clone https://github.com/FunplayAI/funplay-cocos-mcp.git extensions/funplay-cocos-mcp
Then restart Cocos Creator or reload extensions from the editor.
For a non-git install, download Funplay.CocosMcp.v<version>.zip from the GitHub Releases page, unzip it, and move the extracted funplay-cocos-mcp folder into your project extensions/ directory.
You can also install it globally by copying the folder into your Cocos Creator user extensions directory.
Open the editor menu:
Funplay > MCP Server
The server runs on http://127.0.0.1:8765/ by default.
If the configured port is already occupied, the extension first checks whether the existing listener belongs to the same Cocos project. Same-project listeners are reused safely; unrelated listeners trigger automatic fallback to the next available local port.
The panel is intentionally small:
core, full, and customcurl commands for /health and /toolsUse the built-in MCP Client Config section in the Funplay > MCP Server panel first.
Select your target client, click One-Click Configure, and the extension writes the recommended MCP config entry for you.
The MCP server name written to clients is:
funplay_cocos
If you prefer to edit config files manually, use the examples below as fallback references.
{
"mcpServers": {
"funplay_cocos": {
"type": "http",
"url": "http://127.0.0.1:8765/"
}
}
}
{
"mcpServers": {
"funplay_cocos": {
"url": "http://127.0.0.1:8765/"
}
}
}
{
"servers": {
"funplay_cocos": {
"type": "http",
"url": "http://127.0.0.1:8765/"
}
}
}
{
"mcpServers": {
"funplay_cocos": {
"url": "http://127.0.0.1:8765/"
}
}
}
{
"mcpServers": {
"funplay_cocos": {
"type": "http",
"url": "http://127.0.0.1:8765/"
}
}
}
[mcp_servers.funplay_cocos]
url = "http://127.0.0.1:8765/"
If your MCP client prefers a local stdio command, install the npm wrapper after starting the Cocos editor server:
npm install -g funplay-cocos-mcp
Example MCP client entry:
{
"mcpServers": {
"funplay_cocos": {
"command": "funplay-cocos-mcp",
"env": {
"FUNPLAY_COCOS_MCP_URL": "http://127.0.0.1:8765/"
}
}
}
}
The wrapper bridges stdio MCP traffic to the embedded Cocos HTTP endpoint. You can also run it with npx funplay-cocos-mcp --url http://127.0.0.1:8765/.
Open your AI client and try a few safe requests first:
get_project_info and summarize the current Cocos project."cocos://project/context and tell me the editor status."execute_javascript with context: \"scene\" to return the active scene name."execute_javascript with context: \"editor\" to return the project path."If these work, the MCP server, resources, prompts, and primary execution tool are connected correctly.
For local transport debugging, the panel can copy these commands, or you can run them directly:
curl http://127.0.0.1:8765/health
curl http://127.0.0.1:8765/tools
Try a higher-level prompt in your AI client:
Create a login page UI in the current Cocos scene with account/password fields, a login button, and a guest-login button. Use
execute_javascriptfirst, inspect the hierarchy, then capture a screenshot.
http://127.0.0.1:8765/ by default.GET /health and GET /tools are read-only debug endpoints for quick local checks outside an MCP client.core profile exposes 37 high-signal tools. Switch to full for all 101 tools, or use custom to include/exclude tool categories and individual tools.Accept, MCP-Protocol-Version, JSON-RPC notifications/responses, and optional Mcp-Session-Id sessions.outputSchema and annotations; structured tool results use a standard envelope with ok, tool, callId, summary, data, and follow-up refs.execute_javascript safety checks are enabled by default. They block obvious risky filesystem and shell patterns such as delete/truncate calls, raw writable streams, path traversal, user/system absolute paths, and child_process. This is a guardrail, not a full sandbox; a call can explicitly pass safety_checks: false when you have reviewed the risk.cocos://asset/path/... resources are restricted to the active Cocos project root.execute_javascript first, then focused helper tools for screenshots, diagnostics, assets, and inspection.execute_javascript First — One high-flexibility JavaScript tool can orchestrate scene/runtime work and editor-side automation without flooding AI clients with too many narrow tool callscore reduces tool-list noise; full exposes every available tool; custom plus saved profiles lets you tune and restore tool exposure by category or toolexecute_javascript supports both scene and editor contextsFunplay > MCP Server panel for service management, update checks, tool exposure, recent activity, logs, curl diagnostics, and MCP client setupFunplay MCP for Cocos follows the same design principles as Funplay MCP for Unity, adapted to Cocos Creator's JavaScript/TypeScript editor environment.
| Area | Funplay MCP for Cocos | Funplay MCP for Unity |
|---|---|---|
| Editor integration | Cocos Creator extension | Unity Editor package |
| Embedded server | Built-in HTTP MCP server | Built-in HTTP MCP server |
| Primary execution tool | execute_javascript | execute_code |
| Primary language | JavaScript in scene/editor contexts | C# in Unity editor/runtime contexts |
| Default profile | core with 37 tools | core focused tool profile |
| Full profile | 101 tools plus custom exposure | 79 tools |
| Client setup | One-click config panel | One-click config window |
The current package exposes four capability layers:
core, 101 tools in full, plus custom include/exclude rules and saved tool profilesexecute_javascript for scene/runtime and editor/browser automationfix_script_errors, create_playable_prototype, scene_validation, and auto_wire_sceneFor the generated tool reference, including categories, profiles, and read/mutation hints, see docs/TOOLS.md.
The default core set is intentionally small: execute_javascript, execute_scene_script, execute_editor_script, get_editor_state, get_tool_catalog, check_for_updates, get_selection, list_project_instructions, read_project_instruction, set_selection, get_project_info, get_build_status, get_scene_info, get_hierarchy, list_scenes, open_scene, inspect_prefab, validate_prefab_references, inspect_prefab_instance, list_assets, inspect_asset, inspect_asset_dependencies, validate_asset_dependencies, open_asset, select_asset, run_script_diagnostics, get_recent_logs, search_project_logs, clear_logs, validate_scene, get_performance_snapshot, get_script_diagnostic_context, get_runtime_state, capture_editor_screenshot, capture_scene_screenshot, capture_preview_screenshot, and list_editor_windows.
| Resource | Description |
|---|---|
cocos://project/context | Full project and editor context |
cocos://project/summary | Short project summary |
cocos://scene/active | Active scene snapshot |
cocos://scene/current | Alias for the current scene |
cocos://selection/current | Current editor selection |
cocos://selection/asset | Current selected asset |
cocos://errors/scripts | Script diagnostics |
cocos://logs/editor | Recent MCP runtime logs and tool interactions |
cocos://logs/project | Recent tails from common project log files |
cocos://mcp/interactions | Recent MCP interaction history |
Funplay MCP for Cocos currently ships with 101 tool functions in the full profile:
| Category | Tools |
|---|---|
| Script Execution | execute_javascript, execute_scene_script, execute_editor_script |
| Editor State | get_editor_state, get_tool_catalog, check_for_updates, get_selection, set_selection, get_editor_selection |
| Project Instructions | list_project_instructions, read_project_instruction, write_project_instruction, create_project_skill, create_cocos_mcp_project_skill |
| Project & Scene | get_project_info, get_scene_info, get_hierarchy, find_nodes, inspect_node, list_scenes, open_scene, run_scene_asset |
| Node Editing | create_node, delete_node, set_node_transform |
| Assets & Prefabs | list_assets, inspect_asset, inspect_asset_dependencies, validate_asset_dependencies, open_asset, select_asset, delete_asset, list_prefabs, inspect_prefab, validate_prefab_references, duplicate_prefab, edit_prefab_json, create_prefab_instance, inspect_prefab_instance, apply_prefab_instance, revert_prefab_instance, instantiate_prefab |
| Components | list_components, inspect_component, add_component, remove_component, set_component_property, reset_component_property |
| UI | create_canvas, create_label, create_button, create_sprite |
| Camera | list_cameras, create_camera, set_camera_properties |
| Animation | list_animations, add_animation_clip, play_animation, stop_animation |
| Files | read_file, get_file_snippet, write_file, replace_in_file, search_files, list_directory, exists, refresh_assets |
| Diagnostics & Logs | run_script_diagnostics, get_script_diagnostic_context, get_recent_logs, search_project_logs, clear_logs, validate_scene, get_performance_snapshot |
| Build & Editor | get_build_status, open_build_panel, run_project_preview, save_current_scene, get_editor_preference, set_editor_preference, broadcast_editor_message |
| Runtime | get_runtime_state, pause_runtime, resume_runtime, set_time_scale |
| Interaction & Events | emit_node_event, simulate_button_click, list_button_click_events, bind_button_click_event, invoke_component_method, simulate_mouse_click, simulate_mouse_drag, simulate_key_press, simulate_key_combo, simulate_preview_input |
| Screenshots & Windows | capture_desktop_screenshot, capture_editor_screenshot, capture_scene_screenshot, capture_game_screenshot, capture_preview_screenshot, list_editor_windows |
{
"context": "scene",
"code": "return { sceneName: scene.name, rootCount: scene.children.length };",
"args": {}
}
{
"context": "editor",
"code": "return { projectPath: context.projectPath, toolCount: helpers.listTools().length };",
"args": {}
}
Editor-context scripts receive Editor, fs, path, os, require, context, args, and helper functions such as helpers.getStatus(), helpers.listTools(), helpers.readResource(uri), helpers.callTool(name, args), and helpers.configureClient(targetId).
Place funplay-cocos-mcp.config.json in the Cocos project root:
{
"host": "127.0.0.1",
"port": 8765,
"toolProfile": "core",
"enabledToolCategories": [],
"disabledToolCategories": [],
"enabledTools": [],
"disabledTools": [],
"enableSessions": false,
"executeJavascriptSafetyChecks": true,
"autostart": true,
"maxInteractionLogEntries": 50,
"activeToolProfileName": "",
"savedToolProfiles": []
}
Environment variables are also supported:
COCOS_MCP_HOSTCOCOS_MCP_PORTCOCOS_MCP_PROFILEtoolProfile: "custom" starts from the core set, then adds enabledToolCategories / enabledTools and removes disabledToolCategories / disabledTools. The panel can save these exposure settings as named savedToolProfiles for quick restore or sharing. enableSessions is off by default because this server does not need cross-request client state for normal editor automation.
Cocos Creator Extension
├─ browser.js
│ ├─ Embedded HTTP MCP Server
│ ├─ Tool Registry
│ ├─ Resource Provider
│ ├─ Prompt Provider
│ └─ One-Click Client Configuration
├─ scene.js
│ └─ Scene/runtime execution bridge
├─ panel/index.js
│ └─ Minimal MCP Server panel
└─ lib/
├─ assets, diagnostics, screenshots, input
├─ tool-profiles, javascript-safety
├─ tools/
│ ├─ files
│ ├─ assets-advanced
│ ├─ cocos-project
│ └─ scene-events
└─ server, resources, prompts, tool registry
The server speaks MCP-style HTTP JSON-RPC 2.0 and supports tools, resources, resource templates, prompts, health checks, and a read-only /tools debug endpoint.
Run checks before publishing changes:
npm run check
npm test
npm run docs:check
npm run release:check
npm run pack:dry-run
Regenerate the tool reference after changing lib/tool-registry.js:
npm run docs:generate
To generate a GitHub Release-ready extension package:
npm run release:package
The package is written to releases/<version>/ with a zip, manifest, checksum file, and release README. See RELEASE_WORKFLOW.md and RELEASE_CHECKLIST.md for the full process.
Validate MCP Registry metadata before publishing:
npm run registry:validate
MIT License. See LICENSE.
FUNPLAY_COCOS_MCP_URLOptional local Cocos MCP HTTP endpoint. Defaults to http://127.0.0.1:8765/.
FUNPLAY_COCOS_MCP_TIMEOUT_SECONDSOptional HTTP timeout per request in seconds. Defaults to 120.