sceneview-mcp 4.0.13 → 4.0.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,5 +4,5 @@
4
4
  // build time so the MCP server, telemetry, and the install-snippet
5
5
  // generators all report the actually-published versions instead of
6
6
  // stale hardcoded constants. See #941.
7
- export const PACKAGE_VERSION = "4.0.13";
8
- export const LATEST_SCENEVIEW_RELEASE = "4.18.0";
7
+ export const PACKAGE_VERSION = "4.0.14";
8
+ export const LATEST_SCENEVIEW_RELEASE = "4.22.0";
package/dist/guides.js CHANGED
@@ -33,7 +33,7 @@ KMP shares **logic**, not **rendering**. Each platform uses its native renderer.
33
33
  - **3D rendering** via Google Filament: PBR materials, HDR environments, glTF/GLB models, post-processing.
34
34
  - **AR** via ARCore: plane detection, hit testing, anchors, cloud anchors, augmented images, depth, light estimation, point cloud.
35
35
  - **Compose-native DSL**: all nodes are \`@Composable\` functions inside \`SceneView { }\` or \`ARSceneView { }\`.
36
- - **42+ node types**: ModelNode, LightNode, AnchorNode, CameraNode, TextNode, PathNode, ViewNode, PlaneNode, SphereNode, CylinderNode, CubeNode, DynamicSkyNode, FogNode, ReflectionProbeNode, PhysicsNode, BillboardNode, LineNode, and more.
36
+ - **44+ node types**: ModelNode, LightNode, AnchorNode, CameraNode, TextNode, PathNode, ViewNode, PlaneNode, SphereNode, CylinderNode, CubeNode, DynamicSkyNode, FogNode, ReflectionProbeNode, PhysicsNode, BillboardNode, LineNode, and more.
37
37
 
38
38
  ## Apple — Alpha (SceneViewSwift)
39
39
 
@@ -52,8 +52,7 @@ fun My3DScreen() {
52
52
  rememberModelInstance(modelLoader, "models/chair.glb")?.let { instance ->
53
53
  ModelNode(
54
54
  modelInstance = instance,
55
- scaleToUnits = 1.0f,
56
- centerOrigin = Position(0f, 0f, 0f)
55
+ scaleToUnits = 1.0f
57
56
  )
58
57
  }
59
58
 
package/dist/tiers.js CHANGED
@@ -10,7 +10,13 @@
10
10
  // the 4 vertical packages (Automotive / Gaming / Healthcare / Interior) and
11
11
  // the 3 generation tools (preview, artifact, scene generation).
12
12
  const FREE_TOOLS = [
13
- "get_started",
13
+ // Gateway-only widget tool. It is defined in
14
+ // `mcp-gateway/src/mcp/widget-tools.ts`, NOT in this package's
15
+ // TOOL_DEFINITIONS — the stdio server never lists or serves it. The entry
16
+ // here is load-bearing anyway: the gateway's tier gate
17
+ // (`mcp-gateway/src/mcp/access.ts`) resolves tiers through this map and
18
+ // unknown tools default to "pro", so removing this line would silently
19
+ // paywall the anonymous ChatGPT 3D-viewer widget.
14
20
  "view_3d_model",
15
21
  "list_samples",
16
22
  "get_sample",
@@ -28,6 +34,7 @@ const FREE_TOOLS = [
28
34
  "get_collision_guide",
29
35
  "get_platform_roadmap",
30
36
  "search_models",
37
+ "generate_3d_model",
31
38
  "analyze_project",
32
39
  "search_android_docs",
33
40
  "fetch_android_doc",
@@ -56,6 +63,9 @@ const PRO_TOOLS = [
56
63
  "get_hud_overlay",
57
64
  "get_ar_showroom",
58
65
  "list_car_models",
66
+ "get_ev_charging_station_viewer",
67
+ "get_car_paint_shader",
68
+ "validate_automotive_code",
59
69
  // Gaming package
60
70
  "get_physics_game",
61
71
  "get_particle_effects",
@@ -63,6 +73,7 @@ const PRO_TOOLS = [
63
73
  "get_inventory_3d",
64
74
  "get_character_viewer",
65
75
  "list_game_models",
76
+ "validate_game_code",
66
77
  // Healthcare package
67
78
  "get_surgical_planning",
68
79
  "get_dental_viewer",
@@ -70,6 +81,7 @@ const PRO_TOOLS = [
70
81
  "get_anatomy_viewer",
71
82
  "get_molecule_viewer",
72
83
  "list_medical_models",
84
+ "validate_medical_code",
73
85
  // Interior package
74
86
  "get_room_planner",
75
87
  "get_lighting_design",
@@ -77,6 +89,17 @@ const PRO_TOOLS = [
77
89
  "get_material_switcher",
78
90
  "get_furniture_placement",
79
91
  "list_furniture_models",
92
+ "validate_interior_code",
93
+ // Rerun package (Pro per its README — "All 5 rerun tools are Pro tier").
94
+ // Until #2697 these five (and the six package additions above) rode the
95
+ // unknown-tool default-to-pro fallback; behaviour is unchanged, the map
96
+ // is just explicit now so a forgotten mapping is distinguishable from a
97
+ // deliberate Pro tool.
98
+ "setup_rerun_project",
99
+ "generate_ar_logger",
100
+ "generate_python_sidecar",
101
+ "embed_web_viewer",
102
+ "explain_concept",
80
103
  ];
81
104
  // ─── Tier map ─────────────────────────────────────────────────────────────────
82
105
  export const TOOL_TIERS = Object.fromEntries([
@@ -103,10 +126,10 @@ export function getFreeToolNames() {
103
126
  // ─── Upgrade message ──────────────────────────────────────────────────────────
104
127
  export const PRO_UPGRADE_MESSAGE = `## \u{1F512} Pro Feature
105
128
 
106
- This tool is part of a specialized package (Automotive / Gaming / Healthcare / Interior) or a heavier generation tool. SceneView MCP Pro unlocks them.
129
+ This tool is part of a specialized package (Automotive / Gaming / Healthcare / Interior / Rerun) or a heavier generation tool. SceneView MCP Pro unlocks them.
107
130
 
108
131
  **Upgrade for \u20AC19/month** to unlock:
109
- - 4 vertical packages (Automotive, Gaming, Healthcare, Interior — 24 specialized tools)
132
+ - 5 vertical packages (Automotive, Gaming, Healthcare, Interior, Rerun 35 specialized tools)
110
133
  - 3D preview, artifact, and scene-generation helpers
111
134
 
112
135
  All setup, migration, and reference guides remain free.
@@ -585,6 +585,34 @@ export const TOOL_DEFINITIONS = [
585
585
  destructiveHint: false,
586
586
  },
587
587
  },
588
+ {
589
+ name: "generate_3d_model",
590
+ description: "Generates a brand-new 3D model (GLB) from a text prompt OR a source image using the Tripo AI API — use this when `search_models` finds no suitable existing asset and the user needs a custom one (\"a low-poly cactus in a striped pot\"). Returns a direct GLB download URL (expires ~5 minutes — download it immediately and self-host it) plus license/attribution metadata, ready for `rememberModelInstance(modelLoader, ...)` and AR placement. Quality tiers: \"fast\" (default, Tripo P1 low-poly — AR-ready, ~25-30 s) or \"hd\" (Tripo H3.1 quad topology with detailed geometry/textures — up to ~100 s, pricier). Requires a `TRIPO_API_KEY` environment variable (BYOK — generations are billed to the USER'S Tripo account, roughly $0.10-0.25 per fast generation and ~$0.41 per hd generation as of July 2026; nothing is charged by SceneView). If the key is missing, the tool returns setup instructions for platform.tripo3d.ai/api-keys.",
591
+ inputSchema: {
592
+ type: "object",
593
+ properties: {
594
+ prompt: {
595
+ type: "string",
596
+ description: "Text description of the model to generate (text→3D), e.g. \"a low-poly cactus in a striped pot\". Max 1024 characters. Provide exactly one of `prompt` or `imageUrl`.",
597
+ },
598
+ imageUrl: {
599
+ type: "string",
600
+ description: "Public HTTPS URL of a source image to convert to 3D (image→3D). JPEG or PNG, max 20 MB. Provide exactly one of `prompt` or `imageUrl`.",
601
+ },
602
+ quality: {
603
+ type: "string",
604
+ enum: ["fast", "hd"],
605
+ description: '"fast" (default): Tripo P1 low-poly — cheap, AR-ready, ~25-30 s. "hd": Tripo H3.1 quad topology + detailed geometry/textures — up to ~100 s, higher credit cost.',
606
+ },
607
+ },
608
+ required: [],
609
+ },
610
+ annotations: {
611
+ readOnlyHint: false,
612
+ openWorldHint: true,
613
+ destructiveHint: false,
614
+ },
615
+ },
588
616
  {
589
617
  name: "analyze_project",
590
618
  description: "Scans a local SceneView project on the user's machine and returns a structured analysis: detected project type (Android, iOS, Web), extracted SceneView dependency version, whether it is outdated vs the latest known release, and any known anti-patterns found by reading source files (threading violations, LightNode trailing-lambda bug, deprecated 2.x APIs, Sceneform imports). Safe: scans at most 30 source files and 500 KB total, never writes to disk. Use this when a user asks 'is my project up to date?', 'what's wrong with my SceneView code?', or when you want a fast sanity check of a project before generating code for it.",
@@ -33,6 +33,7 @@ import { generateScene, formatGeneratedScene } from "../generate-scene.js";
33
33
  import { ANIMATION_GUIDE, GESTURE_GUIDE, PERFORMANCE_TIPS, } from "../advanced-guides.js";
34
34
  import { MATERIAL_GUIDE, COLLISION_GUIDE, MODEL_OPTIMIZATION_GUIDE, WEB_RENDERING_GUIDE, } from "../extra-guides.js";
35
35
  import { searchModels, formatSearchResults } from "../search-models.js";
36
+ import { generateModel, formatGenerateResult } from "../generate-model.js";
36
37
  import { analyzeProject, formatAnalysisReport } from "../analyze-project.js";
37
38
  import { searchAndroidDocs, fetchAndroidDoc, formatAndroidDocsSearch, formatAndroidDocsFetch, } from "../android-docs.js";
38
39
  import { LLMS_TXT } from "../generated/llms-txt.js";
@@ -769,6 +770,19 @@ export async function dispatchTool(toolName, args, _ctx = {}) {
769
770
  isError: searchResult.ok ? undefined : true,
770
771
  };
771
772
  }
773
+ // ── generate_3d_model ────────────────────────────────────────────────────
774
+ case "generate_3d_model": {
775
+ const genResult = await generateModel({
776
+ prompt: args?.prompt,
777
+ imageUrl: args?.imageUrl,
778
+ quality: args?.quality,
779
+ });
780
+ const genText = formatGenerateResult(genResult);
781
+ return {
782
+ content: withDisclaimer([{ type: "text", text: genText }]),
783
+ isError: genResult.ok ? undefined : true,
784
+ };
785
+ }
772
786
  // ── analyze_project ───────────────────────────────────────────────────────
773
787
  case "analyze_project": {
774
788
  const rawPath = args?.path;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sceneview-mcp",
3
- "version": "4.0.13",
3
+ "version": "4.0.14",
4
4
  "mcpName": "io.github.sceneview/mcp",
5
5
  "description": "MCP server for SceneView — cross-platform 3D & AR SDK for Android and iOS. Give Claude the full SceneView SDK so it writes correct, compilable code.",
6
6
  "keywords": [
@@ -73,13 +73,15 @@
73
73
  },
74
74
  "devDependencies": {
75
75
  "@biomejs/biome": "^2.0.0",
76
- "@types/node": "^25.5.0",
76
+ "@types/node": "^26.0.1",
77
77
  "tsx": "^4.0.0",
78
- "typescript": "^6.0.2",
78
+ "typescript": "^7.0.2",
79
79
  "vitest": "^4.1.5"
80
80
  },
81
81
  "overrides": {
82
- "picomatch": ">=4.0.4"
82
+ "picomatch": ">=4.0.4",
83
+ "hono": "^4.12.25",
84
+ "esbuild": "^0.28.1"
83
85
  },
84
86
  "funding": [
85
87
  {