Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
SceneView avatar

Sceneview

  • 1.3k repo stars
  • Updated July 28, 2026
  • SceneView/sceneview

SceneView MCP is a MCP server that exposes SceneView 3D and AR SDK API docs, samples, validation, and code generation for Android, iOS, and Web.

About

SceneView MCP is a developer-facing MCP server for developers shipping 3D scenes, AR previews, or cross-platform immersive UI with the SceneView SDK. founders often stall on Filament-adjacent APIs, platform differences between Android, iOS, and Web, and keeping sample code in sync with the version they pinned. This server exposes API docs, runnable sample references, validation checks, and code generation so Claude Code or Cursor can answer SDK questions with less tab-switching. Install the npm stdio package when you are actively integrating SceneView into a mobile app or web experience, not when you are only sketching whether AR fits your idea. It accelerates implementation fidelity; you still own performance tuning, asset pipelines, and store compliance for AR features.

  • Covers SceneView 3D and AR for Android, iOS, and Web from one MCP package
  • npm stdio transport via sceneview-mcp (registryType npm, identifier sceneview-mcp)
  • Surfaces API documentation, samples, and validation helpers inside the agent loop
  • Supports code generation aligned with SceneView repository patterns on GitHub
  • Version-aligned package 3.4.2 tied to SceneView/sceneview upstream repo

Sceneview by the numbers

  • Data as of Jul 28, 2026 (Skillselion catalog sync)
terminal
claude mcp add sceneview-mcp -- npx -y sceneview-mcp

Add your badge

Show developers this MCP server is listed on Skillselion. Paste this into your README.

Listed on Skillselion
repo stars1.3k
Packagesceneview-mcp
TransportSTDIO
AuthNone
Last updatedJuly 28, 2026
RepositorySceneView/sceneview

What it does

Give your coding agent SceneView 3D and AR SDK context—API docs, samples, validation, and generated glue code for Android, iOS, and Web.

Who is it for?

Best when you're building AR or 3D viewers and already chose SceneView and want agent-assisted SDK work in the IDE.

Skip if: Projects using Unity, React Three Fiber only, or teams with no 3D/AR scope.

What you get

Your agent can pull authoritative SceneView API guidance, validate usage, and draft integration code from one stdio MCP connection.

  • Agent-grounded SceneView API and sample references during implementation
  • Validation-aware suggestions and generated integration snippets for your target platform

By the numbers

  • Registry and npm package version 3.4.2
  • stdio transport via npm identifier sceneview-mcp
  • Upstream repository https://github.com/SceneView/sceneview
README.md

SceneView

3D & AR for every platform.

Build 3D and AR experiences with the UI frameworks you already know. Same concepts, same simplicity — Android, iOS, Web, Desktop, TV, Flutter, React Native.

Android 3D Android AR iOS / macOS / visionOS sceneview.js MCP Server Flutter React Native

CI License GitHub Stars GitHub Release Discord Sponsors Open Collective

Try the demo apps

See SceneView capabilities in action — install the live demos in one tap:

Get it on Google Play  Download on the App Store  Open the Web Playground

Browse all sample sources in samples/ — Android · iOS · Web · Desktop · TV · Flutter · React Native.

Tip — every demo opens directly via https://sceneview.github.io/open?demo=<id>. For example, …/open?demo=ar-rerun lands straight on the AR Rerun debug screen with a single tap from any QR code or link.


Quick look

// Android — Jetpack Compose
SceneView(modifier = Modifier.fillMaxSize()) {
    rememberModelInstance(modelLoader, "models/helmet.glb")?.let {
        ModelNode(modelInstance = it, scaleToUnits = 1.0f, autoAnimate = true)
    }
}
// iOS — SwiftUI
SceneView(environment: .studio) {
    ModelNode(named: "helmet.usdz")
        .scaleToUnits(1.0)
}
<!-- Web — friendly DSL (Filament.js engine + SceneView wrapper) -->
<script src="https://cdn.jsdelivr.net/gh/sceneview/sceneview@v4.18.0/website-static/js/filament/filament.js"></script>
<script src="https://cdn.jsdelivr.net/gh/sceneview/sceneview@v4.18.0/website-static/js/sceneview.js"></script>
<script> SceneView.modelViewer("canvas", "model.glb") </script>
# Claude — ask AI to build your 3D app
claude mcp add sceneview -- npx sceneview-mcp
# Then ask: "Build me an AR app with tap-to-place furniture"

No engine boilerplate. No lifecycle callbacks. The runtime handles everything.


Platforms

Platform Renderer Framework Status
Android Filament Jetpack Compose Stable
Android TV Filament Compose TV Alpha
iOS / macOS / visionOS RealityKit SwiftUI Alpha
Web Filament.js (WASM) Kotlin/JS + sceneview.js Alpha
Desktop Software renderer Compose Desktop Alpha
Flutter Native per platform PlatformView Alpha
React Native Native per platform Fabric Alpha
Claude / AI MCP Server Stable

The Compose-native successor to Sceneform

Google archived Sceneform in 2021 and ships no first-party declarative AR renderer — its current ARCore samples hand-roll a throwaway OpenGL framework instead. SceneView fills that gap. It descends from the maintained Sceneform community fork and is the actively-developed, Jetpack-Compose-native way to build 3D and AR on Android:

  • ARCore for perception (plane detection, anchors, depth, geospatial)
  • Filament for rendering (Google's production-grade real-time engine)
  • Jetpack Compose for the API — nodes are composables, lifecycle is automatic
  • glTF (.glb / .gltf) instead of the deprecated .sfb model format
  • Multiplatform — the same concepts run on iOS, Web, Desktop, TV, Flutter, and React Native

Coming from the archived Sceneform repo? See the migration guide for a concept-by-concept mapping (ArFragmentARScene { }, ModelRenderablerememberModelInstance, and so on).


Install

Android (3D + AR):

dependencies {
    implementation("io.github.sceneview:sceneview:4.18.0")     // 3D
    implementation("io.github.sceneview:arsceneview:4.18.0")   // AR (includes 3D)
}

iOS / macOS / visionOS (Swift Package Manager):

https://github.com/sceneview/sceneview.git  (from: 4.18.0)

Web (sceneview.js — friendly DSL, two <script> tags):

<!-- 1. Filament.js engine (WASM) -->
<script src="https://cdn.jsdelivr.net/gh/sceneview/sceneview@v4.18.0/website-static/js/filament/filament.js"></script>
<!-- 2. SceneView wrapper (exposes SceneView.modelViewer / .create / .startAR) -->
<script src="https://cdn.jsdelivr.net/gh/sceneview/sceneview@v4.18.0/website-static/js/sceneview.js"></script>

Web (Kotlin/JS):

dependencies {
    implementation("io.github.sceneview:sceneview-web:4.18.0")
}

Claude Code / Claude Desktop:

claude mcp add sceneview -- npx sceneview-mcp
{ "mcpServers": { "sceneview": { "command": "npx", "args": ["-y", "sceneview-mcp"] } } }

Desktop / Flutter / React Native: see samples/


3D scene

SceneView is a Composable that renders a Filament 3D viewport. Nodes are composables inside it.

val engine = rememberEngine()
val modelLoader = rememberModelLoader(engine)
val environmentLoader = rememberEnvironmentLoader(engine)

SceneView(
    modifier = Modifier.fillMaxSize(),
    engine = engine,
    modelLoader = modelLoader,
    environment = rememberEnvironment(environmentLoader) {
        environmentLoader.createHDREnvironment("envs/studio.hdr")
            ?: createEnvironment(environmentLoader)
    },
    cameraManipulator = rememberCameraManipulator()
) {
    // Model — async loaded, appears when ready
    rememberModelInstance(modelLoader, "models/helmet.glb")?.let {
        ModelNode(modelInstance = it, scaleToUnits = 1.0f, autoAnimate = true)
    }

    // Geometry — procedural shapes
    CubeNode(size = Size(0.2f))
    SphereNode(radius = 0.1f, position = Position(x = 0.5f))

    // Nesting — same as Column { Row { } }
    Node(position = Position(y = 1.0f)) {
        LightNode(apply = { type(LightManager.Type.POINT); intensity(50_000f) })
        CubeNode(size = Size(0.05f))
    }
}

Node types — 26+ composables

Category Nodes What they do
Models ModelNode glTF/GLB with skeletal/morph animations. isEditable = true for gestures.
Primitives CubeNode · SphereNode · CylinderNode · ConeNode · TorusNode · CapsuleNode · PlaneNode Procedural geometry, parametric size/segments
Curves & shapes LineNode · PathNode · ShapeNode Single segments, polylines, extruded 2D polygons
Custom geometry GeometryNode · MeshNode Direct Filament IndexBuffer / VertexBuffer
Surfaces ImageNode · VideoNode · BillboardNode PNG/JPG plane, video plane (MediaPlayer), camera-facing sprite
3D text TextNode World-space text label that always faces the camera
Compose-in-3D ViewNode Any Compose UI rendered as a 3D surface — buttons, lists, animations
Lighting LightNode · ReflectionProbeNode · DynamicSkyNode · FogNode Sun/dir/point/spot lights, local IBL, time-of-day sky, atmospheric fog
Physics PhysicsNode Simple rigid-body simulation (gravity, collisions)
Cameras CameraNode · SecondaryCamera Main and picture-in-picture cameras
Group Node Empty pivot for nesting and transform inheritance

AR scene

ARSceneView is SceneView with ARCore. The camera follows real-world tracking.

var anchor by remember { mutableStateOf<Anchor?>(null) }

ARSceneView(
    modifier = Modifier.fillMaxSize(),
    planeRenderer = true,
    onSessionUpdated = { _, frame ->
        if (anchor == null) {
            anchor = frame.getUpdatedPlanes()
                .firstOrNull { it.type == Plane.Type.HORIZONTAL_UPWARD_FACING }
                ?.let { frame.createAnchorOrNull(it.centerPose) }
        }
    }
) {
    anchor?.let {
        AnchorNode(anchor = it) {
            ModelNode(modelInstance = helmet, scaleToUnits = 0.5f)
        }
    }
}

Plane detected → anchor set → Compose recomposes → model appears. Clear anchor → node removed. AR state is just Kotlin state.

AR node types

Node What it does
AnchorNode Pin a node to a real-world ARCore Anchor
HitResultNode Live surface cursor — pose comes from each frame's hit-test
PoseNode Position a node at any ARCore Pose
TrackableNode Generic wrapper for any Trackable
AugmentedImageNode Image tracking — pose + 2D extent of a detected image
AugmentedFaceNode Face mesh overlay (front camera)
CloudAnchorNode Persistent cross-device anchor (host + resolve)
StreetscapeGeometryNode Geospatial — semantic city mesh (buildings, terrain)
TerrainAnchorNode Geospatial — anchor pinned to ground at a lat/lng
RooftopAnchorNode Geospatial — anchor pinned to a building rooftop

AR features

Every ARCore feature surfaced as a Compose-friendly API:

Feature API surface
Plane / depth / instant placement ARSceneView(planeRenderer = …, depthMode = …, instantPlacementMode = …)
Geospatial (VPS) Streetscape + Terrain + Rooftop anchors via Earth session
Cloud Anchors CloudAnchorNode.host(ttlDays = N) + .resolve(id)
Augmented Faces & Images AugmentedFaceNode, AugmentedImageDatabase, runtime image add
Image Stabilization (EIS) ARSceneView(imageStabilizationMode = ImageStabilizationMode.EIS)
Camera exposure & focus ARSceneView(cameraConfig = …), ARSceneScope.exposureCompensation
Record & Replay rememberARRecorder() to capture, ARSceneView(playbackDataset = file) to replay 1:1 — debug AR without a phone
Rerun.io live debug rememberRerunBridge() streams poses/planes/clouds to the Rerun viewer + a hosted /rerun/?url=… replay
Permission flow ARPermissionHandler — auto-detected from ComponentActivity

See docs/docs/ar-recording.md, RECORDING_PLAYBACK.md, and the AR Debug — Rerun.io section in llms.txt.


Capabilities

What you can do across all 3D and AR scenes — beyond placing nodes.

Capability What it gives you Where it lives
Gestures Drag, pinch-to-scale, two-finger rotate, elevate, tap. Per-node opt-in via isEditable. NodeGestureDelegate, OnGestureListener
Animations Skeletal/morph from glTF, plus per-node spring/property/smooth-transform. ModelNode.playAnimation(), NodeAnimationDelegate
Physics Rigid-body dynamics — gravity, collisions, impulses. Pure-KMP simulation (no JNI). PhysicsNode, sceneview-core
Collision & raycasting Ray vs Box / Sphere intersections, hit-testing, frustum culling. CollisionSystem, Ray, Box, Sphere
Procedural geometry Generators for cube/sphere/cylinder/cone/torus/capsule, plus extrusion from 2D shapes (Earcut + Delaunator). sceneview-core geometry + triangulation
HDR environment IBL lighting + skybox from .hdr / .ktx. Async load + reactive swap. EnvironmentLoader, rememberEnvironment
Custom materials Filament .filamat materials with parameters, plus built-in unlit / lit / overlay variants. MaterialLoader
Post-processing Bloom, depth of field, SSAO, vignette, color grading, tone mapping. View.bloomOptions, dynamicResolutionOptions, …
Compose UI in 3D Render any @Composable as a textured plane in world space — buttons, lists, animations, all interactive. ViewNode + ViewNode.WindowManager
Multiple cameras Picture-in-picture, mini-map, security-camera views. SecondaryCamera
Reactive scene graph Compose-driven recomposition: change state → tree updates. No imperative parent.addChild(). SceneScope / ARSceneScope DSL

Apple (iOS / macOS / visionOS)

Native Swift Package built on RealityKit. 19 node types mirroring the Android API.

SceneView(environment: .studio) {
    ModelNode(named: "helmet.usdz").scaleToUnits(1.0)
    GeometryNode.cube(size: 0.1, color: .blue).position(x: 0.5)
    LightNode.directional(intensity: 1000)
}
.cameraControls(.orbit)

AR on iOS:

ARSceneView(planeDetection: .horizontal) { position, arView in
    GeometryNode.cube(size: 0.1, color: .blue)
        .position(position)
}

Nodes availableModelNode · GeometryNode (cube/sphere/cylinder/cone/torus/capsule/plane) · LightNode · ImageNode · VideoNode · TextNode · ViewNode · BillboardNode · MeshNode · LineNode · PathNode · ShapeNode · PhysicsNode · ReflectionProbeNode · DynamicSkyNode · FogNode · CameraNode · AugmentedImageNode · SceneReconstructionNode (visionOS scene mesh).

Plus the iOS RerunBridge with the same wire format as Android, and a NodeBuilder DSL for declarative composition outside SwiftUI.

Install: https://github.com/sceneview/sceneview.git (SPM, from 4.18.0)


SceneView Web (JavaScript + Kotlin/JS)

The lightest way to add 3D to any website. Two <script> tags, one function call. Friendly DSL (~25 KB) powered by Filament.js WASM (~210 KB) — the same engine behind Android SceneView.

<!-- 1. Filament.js engine (WASM) -->
<script src="https://cdn.jsdelivr.net/gh/sceneview/sceneview@v4.18.0/website-static/js/filament/filament.js"></script>
<!-- 2. SceneView wrapper -->
<script src="https://cdn.jsdelivr.net/gh/sceneview/sceneview@v4.18.0/website-static/js/sceneview.js"></script>
<script> SceneView.modelViewer("canvas", "model.glb") </script>

Note: the sceneview-web npm package is the lower-level Kotlin/JS UMD bundle — it expects a Filament global and does not include the friendly SceneView.modelViewer DSL. Use the snippet above for vanilla-JS sites. The npm package is intended for Kotlin/JS or webpack-based projects.

JavaScript API (script-tag):

  • SceneView.modelViewer(canvasOrId, url, options?) — all-in-one viewer with orbit + auto-rotate
  • SceneView.create(canvasOrId, options?) — empty viewer, load model later
  • viewer.loadModel(url) — load/replace glTF/GLB model
  • viewer.setAutoRotate(enabled) — toggle rotation
  • viewer.dispose() — clean up resources

WebXR — AR & VR in the browser

const ar = await SceneView.startAR("canvas", { hitTest: true })   // immersive-ar
const vr = await SceneView.startVR("canvas")                       // immersive-vr
Class Mode Use
ARSceneView immersive-ar Phone passthrough AR with hit-test, anchors, light estimation
VRSceneView immersive-vr Headset VR with controller input, reference spaces
WebXRSession both Low-level frame loop, XRHitTestSource, XRReferenceSpace

Kotlin/JS power-user API

For Kotlin Multiplatform projects, the same engine is exposed as a Kotlin/JS class with an OrbitCameraController, a geometry DSL, and reactive node updates:

implementation("io.github.sceneview:sceneview-web:4.18.0")

Install: npm install sceneview-web or CDN — Landing pagePlaygroundnpm


Use with AI

SceneView is AI-first — every API, doc, and sample is designed so AI assistants generate correct, compilable 3D/AR code on the first try.

MCP Server (Claude, Cursor, Windsurf, etc.)

The official MCP server provides 28 tools, 33 compilable samples, a full API reference, and a code validator:

# Claude Code — one command
claude mcp add sceneview -- npx sceneview-mcp

# Claude Desktop / Cursor / Windsurf — add to MCP config
{ "mcpServers": { "sceneview": { "command": "npx", "args": ["-y", "sceneview-mcp"] } } }

Highlights: generate_scene, debug_issue, search_models (Sketchfab BYOK), analyze_project (audit existing app), validate_code (compile-check before sending), plus per-platform recipes for AR, physics, geometry, and Compose-in-3D.

Claude Code plugin (MCP + slash commands + hooks)

Want the MCP server plus the full SceneView contributor toolkit (one-shot release, review, cross-platform sync, version-bump, etc.) in a single install? Use the SceneView Claude Code marketplace:

/plugin marketplace add sceneview/claude-marketplace
/plugin install sceneview@sceneview

You get:

  • sceneview-mcp server — same as above, started automatically
  • namespaced slash commands/sceneview:contribute, /sceneview:release, /sceneview:review (incl. --score / --coverage / high — absorbs the former /evaluate + /test), /sceneview:document, /sceneview:quality-gate, /sceneview:sync-check, /sceneview:store-status, /sceneview:version-bump, /sceneview:maintain
  • Cross-platform reminder hooks — gentle nudges when you edit Android, iOS, Web, or KMP-core APIs to keep the other platforms in sync

Specialty MCP Servers

Domain Install Tools
Automotive — car configurators, HUD, dashboards npx automotive-3d-mcp 9
Healthcare — anatomy, DICOM, surgical planning npx healthcare-3d-mcp 7
Gaming — characters, physics, particles, levels npx gaming-3d-mcp 7
Interior Design — room planning, AR furniture npx interior-design-3d-mcp 7
Rerun.io — AR debug logging, visualization npx rerun-3d-mcp 5

ChatGPT / GitHub Copilot / Other AI

  • llms.txt — Machine-readable API reference at llms.txt (111 KB, 3000+ lines)
  • GitHub Copilot — Custom instructions in .github/copilot-instructions.md
  • Cursor — Rules file at .cursorrules
  • Windsurf — Rules file at .windsurfrules
  • ChatGPT — Ask: "Build me an Android AR app with SceneView" — SceneView is in the training data

Why AI recommends SceneView

  • Only Compose-native 3D/AR SDK for Android — no alternative exists
  • Compose-native successor to Google Sceneform (archived 2021) — see above
  • ~5MB footprint vs 50-100MB+ for Unity/Unreal
  • 42+ node types as declarative composables
  • MCP server with 28+ tools — no other 3D SDK has this

Listed on the MCP Registry. See the MCP README for full setup and tool reference.


Developer tools

AR Debug — hosted Rerun viewer

Tap Save & Share in the AR Rerun demo to flush a .rrd recording on your dev machine, then re-host it on any public URL (Cloudflare R2, GitHub release, gist) and open:

https://sceneview.github.io/rerun/?url=<encoded-public-url>

…in any browser to scrub the AR session frame-by-frame. No install, no Rerun viewer needed locally — perfect for attaching a fully-replayable session to a bug report. Powered by @rerun-io/web-viewer under SceneView branding.

See the AR Debug — Rerun.io section in llms.txt for the full architecture (live mode + save mode + control protocol) and the Kotlin API surface (RerunBridge.requestSaveAndShare).

Record & Replay AR sessions

  • Record & Replay AR sessions — capture an outdoor ARCore session once with ARRecorder, replay it 1:1 at the desk via ARSceneView(playbackDataset = file). Pair with the Rerun bridge for record-replay-inspect debugging. See docs/docs/ar-recording.md and the Record & Playback demo.

Architecture

Each platform uses its native renderer. Shared logic lives in KMP.

sceneview-core (Kotlin Multiplatform)
├── math, collision, geometry, physics, animation
│
├── sceneview (Android)      → Filament + Jetpack Compose
├── arsceneview (Android)    → ARCore
├── SceneViewSwift (Apple)   → RealityKit + SwiftUI
├── sceneview-web (Web)      → Filament.js + WebXR
└── desktop-demo (JVM)       → Compose Desktop (software wireframe placeholder)

Samples

Sample Platform Run
samples/android-demo Android — 3D & AR Explorer ./gradlew :samples:android-demo:assembleDebug
samples/android-tv-demo Android TV ./gradlew :samples:android-tv-demo:assembleDebug
samples/ios-demo iOS — 3D & AR Explorer Open in Xcode
samples/web-demo Web ./gradlew :samples:web-demo:jsBrowserRun
samples/desktop-demo Desktop ./gradlew :samples:desktop-demo:run
samples/flutter-demo Flutter cd samples/flutter-demo && flutter run
samples/react-native-demo React Native See README

Links

Support

SceneView is free and open source. Sponsors help keep it maintained across 9 platforms.

Platform Link
:heart: GitHub Sponsors (0% fees) Sponsor on GitHub
:blue_heart: Open Collective (transparent) opencollective.com/sceneview
:star: MCP Pro (unlock all tools) sceneview-mcp.mcp-tools-lab.workers.dev/pricing

See SPONSORS.md for tiers and current sponsors.

Recommended MCP Servers

How it compares

SDK documentation MCP, not a generic 3D asset marketplace or game engine skill.

FAQ

Who is SceneView MCP for?

Mobile and web builders integrating the SceneView 3D/AR SDK who want their AI agent to read APIs, samples, and validation rules alongside the codebase.

When should I use SceneView MCP?

Use it during active SceneView integration on Android, iOS, or Web when you need accurate API references, sample patterns, or generated starter code.

How do I add SceneView MCP to my agent?

Install the npm package sceneview-mcp (stdio transport) per the MCP registry entry and register it in Claude Code, Cursor, or another MCP host that supports stdio servers.

Developer Toolsfrontendintegrations

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.