unity-mcp-workflow
Use Funplay Unity MCP to edit, import, compile, inspect, and test Unity projects safely.
Skill by FunplayAI
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/funplayai-unity-mcp-workflow
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: testing, writing, productivity, agent-building
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/unity-mcp-workflow
What's inside
- Skill name
unity-mcp-workflow- Description
- Use Funplay Unity MCP to edit, import, compile, inspect, and test Unity projects safely.
- License
- MIT
- Instructions
- 218 lines in SKILL.md · view on GitHub
Before installing
- Instructions call the network
Files (1)
- SKILL.md
SKILL.md (first lines)
# Unity MCP Workflow
Use this skill when an agent is working in a Unity project connected to Funplay MCP for Unity and needs to verify code, prefabs, UI, Play Mode behavior, screenshots, scene hierarchy, console logs, domain reloads, or MCP connection issues.
This tracks the default project workflow skill shipped by `FunplayAI/funplay-unity-mcp`.
## Operating Loop
1. Establish context.
- Confirm the Unity project root and active scene.
- Check that Unity MCP is reachable before assuming Editor state.
- Inspect hierarchy, prefab paths, selected objects, and relevant component references through MCP.
- If the user names an object, verify the real Unity object path before editing.
2. Choose the edit surface.
- Edit source files with normal repo tools, then trigger Unity recompilation.
- Edit scene objects through Unity APIs, mark the scene dirty, and save the scene.
- Edit prefab assets with `PrefabUtility.LoadPrefabContents`, `PrefabUtility.SaveAsPrefabAsset`, and `PrefabUtility.UnloadPrefabContents`.
- If the user is looking at an open scene instance, update the visible scene instance as well as the prefab asset when appropriate.
3. Execute changes.
- Prefer one well-guarded `execute_code` batch over many fragile UI clicks.
- Use null guards for every object lookup and return explicit missing-path messages.
- Return concise before/after values from snippets.
- Save only the assets or scenes intentionally modified.
4. Validate.
- Read back the changed objects through MCP.
- For file edits, call `request_recompile`, then `wait_for_compilation`, then inspect console or compilation errors.
- For runtime behavior, enter Play Mode or inspect live objects when needed.
- Report exactly what was verified and what still requires device, store, network, or manual validation.
## Structured Results
- Tool returns are structured JSON: `{success, message, data}` for success and `{success: false, code, error, data}` for errors.
- Branch on `code` values such as `OBJECT_NOT_FOUND` instead of matching free-form text.
- Prefer `instanceId`, `componentInstanceId`, and `fileID` values returned by tools for follow-up calls. Treat them as strings because newer Unity versions may return EntityId text instead of numeric InstanceIDs.
- Pass object identity back with `find_method=by_id` when available. Auto-detect usually treats integers as IDs, slashed strings as paths, and other strings as names, but explicit `find_method` is clearer when the target matters.
- When a GameObject has multiple components of the same type, target the desired component with `component_instance_id`.
## Editor Tools First
- Read editor state through dedicated tools before writing snippets: `get_editor_state`, `get_selection`, `set_selection`, `get_prefab_stage`, `get_tags`, `get_layers`, and `get_build_settings`.
- Use `find_game_objects`, `list_components`, `get_component_properties`, `set_component_property`, and `set_component_properties` for object/component work when exposed.
- `set_component_property` and `set_component_properties` write through `SerializedObject`, so `[SerializeField] private` fields are reachable. Pass object references as `{"fileID": "<instanceId>"}` or `{"assetPath": "Assets/..."}`.
- When no specialized tool covers an editor action, try `execute_menu_item` before falling back to ad-hoc `execute_code`.
## Tool Exposure
- With the default `core` profile, rely on focused workflow tools: `execute_code`, recompilation, Play Mode control, hierarchy, console logs, screenshots, input simulation, performance inspection, editor state reads, object/component inspection, component setters, and `execute_menu_item`.
- With the default `full` profile, prefer specific MCP tools for simple scene, asset, GameObject, component, prefab, camera, UI, package, animation, file, or visual-feedback operations.
- If Tool Exposure is customized and a named tool is unavailable, adapt to the exposed tool list and report which expected tool is missing.
## MCP Call Pattern
Prefer native MCP tools when the client exposes them directly. If native tools are hidden or stale, probe the local HTTP endpoint:
```bash
curl -sS -m 1 -X POST http://127.0.0.1:8765/mcp \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
```
For multi-line `execute_code` calls over `curl`, generate JSON with a real encoder instead of hand-escaping C#.
Prefer the `IFunplayCommand` template for new snippets so object creation, modification, deletion, and logging flow through the MCP execution context:
```bash
node - <<'NODE'
const code = String.raw`
using UnityEngine;
using Funplay.Editor.Tools.Scripting;
public class InspectSomething : IFunplayCommand
{
public string Execute(ExecutionContext ctx)
{
var obj = GameObject.Find("PracticeInGameUiRoot");
if (obj != null)
{
ctx.RegisterObjectModification(obj, "Inspect UI root");
ctx.Log("Found " + obj.name);
}
return obj != null ? obj.name : "not found";
}
}
`;
const payload = {
jsonrpc: "2.0",
id: 1,
method: "tools/call",
params: { name: "execute_code", arguments: { code } }
};
process.stdout.write(JSON.stringify(payload));
NODE
```
## Unity C# Patterns
Use fully qualified types if the snippet environment or injected project code makes `using` statements unreliable:
```csharp
var root = UnityEngine.GameObject.Find("PracticeInGameUiRoot");
var rect = root.GetComponent<UnityEngine.RectTransform>();
```
Use Unity null semantics for `UnityEngine.Object` references:
```csharp
if (image == null)
{
return "Image missing";
}
```
For prefab edits:
```csharp
var path = "Assets/MyGame/UI/Prefabs/PF_PracticeInGameUiRoot.prefab";
var prefab = UnityEditor.PrefabUtility.LoadPrefabContents(path);
try
{From FunplayAI/funplay-skill, MIT.
More from FunplayAI/funplay-skill
- 0.545score
commercial-unity-game
FunplayAI
Use this when designing, building, or auditing a commercial-grade Unity mobile/F2P game beyond prototype scope, including architecture, save data, data-driven…
SkillCFreshness: C★ 10Claude Code +9 - 0.542score
canvas-page-popup-removal
FunplayAI
Check blockers and safely remove existing Cocos page or popup canvas nodes without silently deleting prefab, script, or runtime assets.
SkillCFreshness: C★ 10Claude Code +9 - 0.542score
cocos-ui-node-retrofit
FunplayAI
Classify and plan safe Cocos UI node retrofits such as text changes, SpriteFrame swaps, or converting a label-only control into an image-backed button with…
SkillCFreshness: C★ 10Claude Code +9 - 0.542score
game-concept-brief
FunplayAI
Turn an early game idea or creative inspiration into a compact GDD-lite concept brief with creative north star, MDA framing, MVP scope, and first-playable…
SkillCFreshness: C★ 10Claude Code +9 - 0.542score
game-ui-asset-brief
FunplayAI
Build a compact game UI asset brief with generation prompts, asset roles, cutout requirements, and validation checks for backgrounds, buttons, panels, icons…
SkillCFreshness: C★ 10Claude Code +9 - 0.542score
minigame-subpackage-rules
FunplayAI
Validate and explain Cocos WeChat/Douyin minigame subpackage rules, keeping project-owned rule authority in profiles/v2/packages/project.json rather than…
SkillCFreshness: C★ 10Claude Code +9 - 0.542score
workbench-asset-replace
FunplayAI
Plan safe replacement of an existing Cocos or Studio visual with a Workbench image, preserving source asset identity, canvas bounds, static versus runtime…
SkillCFreshness: C★ 10Claude Code +9 - 0.542score
playable-game-build-flow
FunplayAI
Build a small playable browser-game vertical slice through intent capture, a pillar contract, scoped implementation, and a P0 self-check.
SkillCFreshness: C★ 10Claude Code +9 - 0.538score
canvas-page-popup-bootstrap
FunplayAI
Safely create or inspect new Cocos page, popup, or HUD canvas entries with canonical entry paths, parent and flow wiring, and authored-source guardrails.
SkillCFreshness: C★ 10Claude Code +9 - 0.534score
using-funplay-skills
FunplayAI
Learn how to discover, choose, and apply FunPlay Skill workflows in an agent session.
SkillCFreshness: C★ 10Claude Code +9 - 0.531score
sprite-sheet
FunplayAI
Slice a sprite sheet into single-frame PNG files.
SkillCFreshness: C★ 10Claude Code +9 - 0.531score
audio-format-convert
FunplayAI
Convert audio files between WAV, OGG, and MP3 with ffmpeg.
SkillCFreshness: C★ 10Claude Code +9
Signals
- Stars
- 10
- Forks
- 2
- Open issues
- 0
- Last commit (this folder)
- May 29, 2026 (5 months ago)
- Last release
- May 22, 2026 (5 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/FunplayAI/funplay-skill
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from FunplayAI
- 0.801score
Funplay Cocos MCP
FunplayAI
stdio bridge for the local Cocos Creator Editor MCP server from FunplayAI/funplay-cocos-mcp.
ConnectorAFreshness: ALocal★ 356Claude Code +5 - 0.726score
Funplay Unity MCP
FunplayAI
stdio bridge for the local Unity Editor MCP server from FunplayAI/funplay-unity-mcp.
ConnectorAFreshness: ALocal★ 267Claude Code +5 - 0.669score
Funplay Godot MCP
FunplayAI
stdio bridge for the local Godot Editor MCP server from FunplayAI/funplay-godot-mcp.
ConnectorAFreshness: ALocal★ 45Claude Code +5 - 0.550score
Funplay Unreal MCP
FunplayAI
stdio bridge for the local Unreal Editor MCP server from FunplayAI/funplay-unreal-mcp.
ConnectorCFreshness: CLocal★ 7Claude Code +5 - 0.545score
commercial-unity-game
FunplayAI
Use this when designing, building, or auditing a commercial-grade Unity mobile/F2P game beyond prototype scope, including architecture, save data, data-driven…
SkillCFreshness: C★ 10Claude Code +9 - 0.542score
canvas-page-popup-removal
FunplayAI
Check blockers and safely remove existing Cocos page or popup canvas nodes without silently deleting prefab, script, or runtime assets.
SkillCFreshness: C★ 10Claude Code +9
Cite this page
unity-mcp-workflow skill. Agent Mart. https://agentmart.dev/skills/funplayai-unity-mcp-workflow (last updated 2026-10-24)