PICO MCP Extensions
OfficialAllows AI agents to configure XR scenes for PICO devices, managing Video See-Through, Controller models, Locomotion presets, Spatial Mesh, and Unity package operations.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@PICO MCP Extensionsenable VST and locomotion with teleportation"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
PICO MCP Extensions
PICO XR feature construction APIs for Unity MCP agents. Idempotent, non-destructive, ambiguity-aware.
Overview
This Unity package exposes PICO XR building blocks as MCP (Model Context Protocol) tools, enabling AI agents (e.g. Unity AI Assistant) to programmatically configure XR scenes for PICO devices. It is designed to be used together with the PICO Unity Integration SDK 6.1.x and aligns its dependency baseline with that SDK (XR Interaction Toolkit 3.x).
Package name: com.bytedance.pico.mcp-extensions
Version: 0.1.0
Unity: 6000.0+
Author: ByteDance PICO
Related MCP server: AI-godot-mcp
Requirements
Dependency | Minimum Version |
com.unity.xr.core-utils | 2.3.0 |
com.unity.xr.interaction.toolkit | 3.4.0 |
com.unity.inputsystem | 1.18.0 |
Unity AI Assistant (Unity.AI.MCP.Editor) | 2.x |
com.bytedance.pico.xr | 6.1.0 |
Features
Eight XR building blocks:
Block | Description |
VST | Video See-Through (passthrough) - configures camera for transparent background and adds |
Controller | Mounts PICO controller visual models on Left/Right hand anchors |
Controller Haptics | Adds one XR-Origin haptics manager with named impulse, AudioClip-buffer, and PHF-buffer effects; gameplay code or UnityEvents choose when to invoke them |
Locomotion | Enables XRI locomotion subtree with fine-grained presets (Move, Turn, Teleportation, GrabMove, Climb, Gravity, Jump) |
Spatial Mesh | Configures |
Plane Detection | Configures PICO SensePack plane detection via a bundled |
Hand | Enables PICO hand tracking (virtual hands) plus an XRI hand-interactor rig so a pinch can drive grab |
Grab | Object pick-up & drag; ensures the scene |
Additionally, a Package tool manages Unity packages and samples (install / remove / update / import samples / query resolvable version).
Runtime support
Most building blocks compile and configure correctly under both PICO XR runtimes:
PICO-native runtime (
ENABLE_PICO_XR_SDK)OpenXR runtime (
ENABLE_PICO_OPENXR_SDK) — VST enables the PICOPassthroughFeature; Spatial Mesh forces MultiPass rendering and enables thePICOSpatialMeshfeature; Hand enables the Unity XR Hands models plus the PICO hand-tracking / hand-interaction OpenXR features.
Plane Detection is PICO-native only. PICO ships no plane-detection OpenXR feature, so under the OpenXR runtime the plane provider is never created and the block is a no-op. Controller Haptics is PICO-native only. Its runtime manager uses the current
PXR_Input.SendHapticImpulse,SendHapticBuffer, and buffer-lifecycle APIs; the package still compiles under OpenXR, but haptics attach/upsert actions report unsupported.
Architecture
Editor/
PXR_MCP_Common.cs # Shared helpers: XR Origin lifecycle, module visibility
PXR_MCP_Features.cs # Building block implementations (VST, Controller, Locomotion, SpatialMesh, Plane, Hand, Grab)
PXR_MCP_Haptics.cs # Editor lifecycle for the XR-Origin haptics manager and named effects
PXR_MCP_PackageOps.cs # Package Manager operations (add, remove, samples)
Tools/
PXR_MCP_Tools.cs # MCP tool surface ([McpTool] entry points)
PXR_MCP_Result.cs # Uniform result envelope for LLM consumption
Runtime/
PXR_MCP_HapticsManager.cs # Runtime bridge to current PICO impulse and buffer APIsLayer 1 (Editor): Plain C# static methods for building-block operations.
Layer 2 (Tools): [McpTool]-annotated methods that wrap Layer 1 and return PXR_MCP_Result envelopes.
The controller-haptics block additionally ships a runtime manager so gameplay
code and UnityEvents can invoke named effects in a player build.
MCP Tools
Tool | Actions | Description |
| Enable, Disable, Status | Manage Video See-Through |
| Enable, Disable, Status | Manage PICO controller models |
| Attach, UpsertEffect, RemoveEffect, Remove, Status | Manage one PICO-native haptics manager and its named effects without choosing gameplay triggers |
| Enable, Disable, Configure, Status | Manage locomotion with preset flags |
| Enable, Disable, Status | Manage spatial mesh (requires VST) |
| Enable, Disable, Status | Manage PICO plane detection (requires VST; PICO-native runtime only) |
| Enable, Disable, Status | Manage PICO hand tracking (virtual hands) |
| Enable, Disable, Status, MakeGrabbable | Manage grab pick-up & drag; |
| List, Info, Add, Remove, Update, ListSamples, ImportSample, Resolvable | Unity Package Manager operations; |
| (none) | Aggregate snapshot of all blocks |
Controller haptics
pico_xr_haptics attaches one PXR_MCP_HapticsManager directly to the existing
agent XR Origin. It does not require Controller GameObjects and never creates an
XR Origin by itself. The manager stores multiple named effects; every effect has
one source type and may target left, right, or both controllers. A both effect
uses independent left/right parameters, assets, and runtime source IDs. Use two
named effects when the two hands need different source types.
Supported serialized effect types use current PICO APIs:
PXR_Input.SendHapticImpulse(vibrateType, amplitude, durationMs, frequencyHz);
PXR_Input.SendHapticBuffer(vibrateType, audioClip, channelFlip, ref sourceId, cacheType);
PXR_Input.SendHapticBuffer(vibrateType, phfText, channelFlip, amplitudeScale, ref sourceId);Raw PCM is a code-level entry point because arbitrary float[] data is not a
useful Inspector field. The manager exposes UnityEvent-friendly Send,
StartEffect, Pause, Resume, UpdateEffect, Stop, StopAndClear,
StopAll, and amplitude methods, plus Try* counterparts for code that needs a
success value. Serialized callbacks expose requested, sent, source-created,
started, paused, resumed, updated, stopped, and failed states. The SDK provides
no reliable completion callback, so this component does not claim an
OnCompleted event.
The parameterless cached-start and update methods are named StartEffect() and
UpdateEffect() so Unity does not invoke them automatically as MonoBehaviour
Start / Update lifecycle messages. Named StartEffect(string) and
UpdateEffect(string) overloads remain available for UnityEvents and business
code.
The manager deliberately does not subscribe to XR Interaction Toolkit or other
gameplay events. Application code or a user-selected UnityEvent owns all trigger
timing. Deprecated StartVibrateBy*, old Haptic Stream APIs, Unity XR/OpenXR
substitutes, and the separate advanced parametric API are not used.
Controller haptics currently require the PICO-native runtime
(ENABLE_PICO_XR_SDK). OpenXR projects continue to compile, but attach and
configure report unsupported; status and cleanup remain available. Editor
execution cannot prove physical vibration; validate the final behavior on a
connected PICO device.
Design Principles
Idempotent: Re-running any operation with the same arguments is a safe no-op.
Non-destructive: Never destroys or deactivates foreign (non-agent-owned) XR Origins.
Module isolation: Enabling one block does not implicitly enable unrelated modules. Initial-create hides Controller and Locomotion so VST stays clean.
No hardcoded versions: XRI paths and types are resolved dynamically via
PackageInfoand reflection.Undo-safe: All scene modifications go through Unity's Undo system.
Installation
Add this package to your Unity project via the Package Manager:
Open Window > Package Manager
Click + > Add package from disk... (or add to
Packages/manifest.json)Ensure XRI Starter Assets sample is imported (required for XR Origin prefab)
License
Copyright (c) 2015-2022 PICO Technology Co., Ltd. All rights reserved. See LICENSE.md for details.
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP facade over the Nebelus Construction API. ~48 tools give full agent build parity: create/update/probe agents, edit graphs, attach knowledge and vector stores, wire connectors, set governance policies and locked guardrails, enable grounding-trace, and read deployment wiring. Purpose-built for regulated industries: data residency is enforced per region (EU / GCC-KSA), with PII controls and an audit trail. Agents are created as drafts — no deploy tool is exposed over MCP by design; publishing happens in the Nebelus console.
Your org's AI agents, tasks, runs, search, and brain files as MCP tools and resources.
The OpenRouter for tools. One MCP connection gives any AI agent 254 hosted tools, pay per call.
Free public MCP for AI agents — 193 tools, 44 workflows. No API key.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceExposes 50+ Blender tools (object manipulation, materials, animation, etc.) via MCP for AI-driven 3D workflows and automation.1MIT
- AlicenseCqualityCmaintenanceEnables AI-driven game development by providing MCP tools to interact with the Godot editor, including scene editing, node manipulation, script attachment, and scene execution.288 npmMIT
- AlicenseBqualityAmaintenanceEnables natural language creation and refinement of Blender scenes through structured MCP tools, with persistent object identity, visual validation, and reversible edits.23MIT
- AlicenseAqualityDmaintenanceExposes Azure AI Foundry agents, workflows, and AI Search vector-database capabilities as MCP tools, enabling natural language interaction with agents, semantic search, and index management.102MIT