MCP Server / sceneview
sceneview
3D & AR SDK for Android (Jetpack Compose + Filament), iOS (SwiftUI + RealityKit), and Web. AI-first: llms.txt, MCP server, Copilot/Cursor rules. The only Compose-native 3D library.
Installation
claude mcp add sceneview -- npx -y sceneview-mcp
npx -y sceneview-mcp
npm: sceneview-mcp
Transport
Tools (20)
Platform
Renderer
Status
Filament
Jetpack Compose
Filament
Compose TV
RealityKit
SwiftUI
Alpha
Alpha
PlatformView
Alpha
Fabric
Alpha
Stable
--- ## Install **Android** (3D + AR): ```kotlin dependencies { implementation("io.github.sceneview:sceneview:4.0.1") // 3D implementation("io.github.sceneview:arsceneview:4.0.1") // AR
ModelNode
glTF/GLB model with animations. `isEditable = true` for gestures.
LightNode
Sun, directional, point, or spot light. `apply` is a **named parameter**.
ImageNode
Image on a plane
ViewNode
**Compose UI rendered as a 3D surface**
MeshNode
Custom GPU mesh
Node
Group / pivot
Node
What it does
AnchorNode
Follows a real-world anchor
AugmentedImageNode
Tracks a detected image
AugmentedFaceNode
Face mesh overlay
Dokumentation
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.
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 — one script tag -->
<script src="https://cdn.jsdelivr.net/npm/[email protected]/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 |
Install
Android (3D + AR):
dependencies {
implementation("io.github.sceneview:sceneview:4.0.1") // 3D
implementation("io.github.sceneview:arsceneview:4.0.1") // AR (includes 3D)
}
iOS / macOS / visionOS (Swift Package Manager):
https://github.com/sceneview/sceneview-swift.git (from: 4.0.0)
Web (sceneview.js — one line):
<script src="https://cdn.jsdelivr.net/npm/[email protected]/sceneview.js"></script>
Web (Kotlin/JS):
dependencies {
implementation("io.github.sceneview:sceneview-web:4.0.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.
SceneView(
modifier = Modifier.fillMaxSize(),
engine = rememberEngine(),
modelLoader = rememberModelLoader(engine),
environment = rememberEnvironment(engine, "envs/studio.hdr"),
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
| Node | What it does |
|---|---|
| ModelNode | glTF/GLB model with animations. isEditable = true for gestures. |
| LightNode | Sun, directional, point, or spot light. apply is a named parameter. |
| CubeNode / SphereNode / CylinderNode / PlaneNode | Procedural geometry |
| ImageNode | Image on a plane |
| ViewNode | Compose UI rendered as a 3D surface |
| MeshNode | Custom GPU mesh |
| Node | Group / pivot |
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 | Follows a real-world anchor |
| AugmentedImageNode | Tracks a detected image |
| AugmentedFaceNode | Face mesh overlay |
| CloudAnchorNode | Persistent cross-device anchor |
| StreetscapeGeometryNode | Geospatial streetscape mesh |
Apple (iOS / macOS / visionOS)
Native Swift Package built on RealityKit. 19 node types.
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)
}
Install: https://github.com/sceneview/sceneview-swift.git (SPM, from 4.0.0)
SceneView Web (JavaScript)
The lightest way to add 3D to any website. One script tag, one function call. ~25 KB library powered by Filament.js WASM — the same engine behind Android SceneView.
<script src="https://cdn.jsdelivr.net/npm/[email protected]/sceneview.js"></script>
<script> SceneView.modelViewer("canvas", "model.glb") </script>
API:
SceneView.modelViewer(canvasOrId, url, options?)— all-in-one viewer with orbit + auto-rotateSceneView.create(canvasOrId, options?)— empty viewer, load model laterviewer.loadModel(url)— load/replace glTF/GLB modelviewer.setAutoRotate(enabled)— toggle rotationviewer.dispose()— clean up resources
Install: npm install sceneview-web or CDN — Landing page — npm
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"] } } }
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
- Official successor to Google Sceneform (deprecated 2021)
- ~5MB footprint vs 50-100MB+ for Unity/Unreal
- 35+ 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.
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.