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.
- package/README.md +44 -10
- package/dist/generate-model.js +402 -0
- package/dist/generated/llms-txt.js +1 -1
- package/dist/generated/version.js +2 -2
- package/dist/guides.js +1 -1
- package/dist/platform-setup.js +1 -2
- package/dist/tiers.js +26 -3
- package/dist/tools/definitions.js +28 -0
- package/dist/tools/handler.js +14 -0
- package/package.json +6 -4
|
@@ -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.
|
|
8
|
-
export const LATEST_SCENEVIEW_RELEASE = "4.
|
|
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
|
-
- **
|
|
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
|
|
package/dist/platform-setup.js
CHANGED
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
|
-
|
|
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
|
-
-
|
|
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.",
|
package/dist/tools/handler.js
CHANGED
|
@@ -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.
|
|
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": "^
|
|
76
|
+
"@types/node": "^26.0.1",
|
|
77
77
|
"tsx": "^4.0.0",
|
|
78
|
-
"typescript": "^
|
|
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
|
{
|