npm package: @scene_view/mcp
Description: MCP server for SceneView — 3D and AR with Jetpack Compose for Android
Latest version: 3.0.0
Deprecated: Renamed to sceneview-mcp — use npm install sceneview-mcp

# @sceneview/mcp

MCP server for [SceneView](https://github.com/SceneView/sceneview-android) — 3D and AR with Jetpack Compose for Android.

Install this once and Claude always knows how to use SceneView. No copy-pasting docs. No hallucinated APIs.

---

## What it provides

**Resource — `sceneview://api`**
The complete SceneView 3.0.0 API reference (llms.txt): composable signatures, node types, AR scope, resource loading, threading rules, common patterns.

**Tool — `get_sample`**

| Scenario | What you get |
|---|---|
| `model-viewer` | Full-screen 3D scene, HDR environment, orbit camera |
| `ar-tap-to-place` | AR tap-to-place with pinch-to-scale and drag-to-rotate |
| `ar-placement-cursor` | AR reticle that snaps to surfaces, tap to confirm |
| `ar-augmented-image` | Detect a reference image, overlay a 3D model |
| `ar-face-filter` | Front-camera face mesh with a custom material |

**Tool — `get_setup`**
Gradle dependency + AndroidManifest for `"3d"` or `"ar"` projects.

---

## Installation

### Project-level (recommended)

Add `.claude/mcp.json` at your Android project root:

```json
{
  "mcpServers": {
    "sceneview": {
      "command": "npx",
      "args": ["-y", "@sceneview/mcp"]
    }
  }
}
```

Run `/mcp` in Claude Code to confirm the server is connected.

### Global (all projects)

Add to `~/.claude/mcp.json`:

```json
{
  "mcpServers": {
    "sceneview": {
      "command": "npx",
      "args": ["-y", "@sceneview/mcp"]
    }
  }
}
```

### Claude Desktop

Add to `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "sceneview": {
      "command": "npx",
      "args": ["-y", "@sceneview/mcp"]
    }
  }
}
```

---

## How it works

```
Developer: "add AR placement to my app"
         │
         ▼
Claude reads sceneview://api  ←  full llms.txt, always current
         │
         ▼
Claude calls get_sample("ar-tap-to-place")  ←  working Kotlin boilerplate
         │
         ▼
Correct, compilable SceneView 3.0.0 code — first try, zero hallucination
```

---

## Sample prompts

### 3D model viewer
```
Create an Android Compose screen called ModelViewerScreen that loads
assets/models/my_model.glb in a full-screen 3D scene with orbit camera and HDR
environment from assets/environments/sky_2k.hdr.
Use SceneView io.github.sceneview:sceneview:3.0.0.
```

### AR tap-to-place
```
Create an Android Compose AR screen called TapToPlaceScreen. Show a plane
detection grid. Tapping places assets/models/chair.glb on the surface with
pinch-to-scale and drag-to-rotate. Multiple taps = multiple objects.
Use SceneView io.github.sceneview:arsceneview:3.0.0.
```

### AR placement cursor
```
Create an AR screen called ARCursorScreen with a reticle that snaps to surfaces
at screen center. Tap to place assets/models/object.glb and hide the reticle.
Use SceneView io.github.sceneview:arsceneview:3.0.0.
```

### AR augmented image
```
Create an AR screen called AugmentedImageScreen that detects R.drawable.target_image
(15 cm wide) and places assets/models/overlay.glb above it scaled to image width.
Model disappears when tracking is lost.
Use SceneView io.github.sceneview:arsceneview:3.0.0.
```

### AR face filter
```
Create an AR screen called FaceFilterScreen using the front camera that detects
faces and applies assets/materials/face_mask.filamat to the face mesh.
Use SceneView io.github.sceneview:arsceneview:3.0.0.
```

### 3D product configurator
```
Create a 3D product configurator screen with Red/Blue/Green color buttons.
Apply the selected color as a solid material on assets/models/product.glb.
Add orbit camera and pinch-to-zoom.
Use SceneView io.github.sceneview:sceneview:3.0.0.
```

### AR multi-object scene
```
Create an AR screen where a bottom sheet lets users choose between chair, table,
and lamp GLBs in assets/models/. Tapping places the selected model. Each object
is independently pinch-to-scale and drag-to-rotate. A "Clear all" button removes
everything. Use SceneView io.github.sceneview:arsceneview:3.0.0.
```

---

## Development

```bash
cd mcp
npm install
npm run prepare   # copies ../llms.txt and compiles TypeScript
npm start         # run over stdio
npx @modelcontextprotocol/inspector node dist/index.js  # test with inspector
```

## Publishing

```bash
cd mcp
npm run prepare
npm publish --access public
```