[00] · MCP SERVER
Drop SpatialPack into your editor.
18 tools — analyze, optimize, USDZ validate, recipe-search, dedup, cohort recipes, LOD bundles — exposed over Model Context Protocol. Works with Claude Code, Cursor, Claude Desktop, and Continue.dev. One npx command, no install.
Stdio + Streamable HTTPPer-key Bearer authProgress + cancellationSandbox enforced
[01] · INSTALL
Copy. Paste. Done.
Claude Code
anthropic.com/claude-code
json
// ~/.claude.json (or run: claude mcp add spatialpack)
{
"mcpServers": {
"spatialpack": {
"command": "npx",
"args": ["-y", "@spatialpack/mcp"]
}
}
}Cursor
cursor.com
json
// ~/.cursor/mcp.json
{
"mcpServers": {
"spatialpack": {
"command": "npx",
"args": ["-y", "@spatialpack/mcp"]
}
}
}Claude Desktop
claude.ai/download
json
// macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
// Windows: %APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"spatialpack": {
"command": "npx",
"args": ["-y", "@spatialpack/mcp"]
}
}
}Continue.dev
continue.dev
json
# ~/.continue/config.yaml
mcpServers:
- name: spatialpack
command: npx
args:
- "-y"
- "@spatialpack/mcp"Self-host HTTP (team / shared)
Same code, served over Streamable HTTP. When DATABASE_URL points at the same Postgres as the dashboard, every spatialpack login key is a valid Bearer token.
shell
# Self-host the HTTP transport (e.g. for shared team use).
# When DATABASE_URL points at the same Postgres that backs the
# web dashboard, every `spatialpack login`-generated key is
# accepted as a Bearer token.
DATABASE_URL=postgresql://... \
npx -y @spatialpack/mcp http --port 3037 --host 0.0.0.0
# Then any MCP client can point at:
# http://your-host:3037
# with header: Authorization: Bearer spk_live_...[02] · AUTH
Personal API keys.
- step 01 · Sign in at spatialpack.dev/signin (free, no card).
- step 02 · On the dashboard, open the [02] API KEYS card and click Generate API key. Copy it — shown once.
- step 03 · Install the CLI and pair the key:
npm i -g @spatialpack/cli && spatialpack login.
Free signed-in tier: 10 compute operations / month, shared across web, CLI, and MCP — read-only tools (analyze, find_similar_assets, list_presets) are always free. Pro: unlimited. Keys are revocable from the dashboard at any time.
[03] · TRY IT
First prompt.
prompt
Optimize the .glb at /path/to/asset.glb with the
web-mobile preset, then run safety_gate against the
result with bytesBudget=500_000 and deltaE94Max=2.0.
If the gate passes, give me the output path. If it
fails, run recipe_search and try again.The model picks the right tools, chains them, and reports the outcome. safety_gate + recipe_search together form a self-tuning loop.
[04] · TOOL CATALOG
All 18 tools.
Analyze
analyzeFull glTF/GLB report — triangles, draw calls, texture pipeline, conformance.diagnose_assetSurface specific issues + remediation steps for an asset.compatibility_checkPer-target compatibility matrix (model-viewer, three.js, Babylon, AR Quick Look).canonical_cidStable content-address ID for an asset (dedup keying).
Optimize
optimizeRun the full pipeline against a chosen preset (web-mobile · web-desktop · quality-max).batch_optimizeSame as optimize, fan-out across a folder of assets.recipe_searchAuto-tune the pass combination per asset for max compression at a visual-diff budget.cohort_recipes_buildBuild a learned recipe index from a corpus.cohort_recipes_lookupLook up the recipe winning on assets like yours.safety_gateCI-style gate: bytes + visual-diff thresholds; pass/fail.lod_bundleBuild progressive high/medium/low LOD GLBs from a master asset.dedup_texturesFind + collapse near-duplicate textures across a catalog.
USD / AR
usdzValidate USDZ + run the 14-point AR Quick Look conformance check.usdcBinary-USD writer (instead of crate-format USDA).
Compare + Search
find_similar_assetsCosine-nearest neighbours in the embedding index.compare_imagesSSIM + ΔE94 between two rendered views.phashPerceptual hash of an image.phash_distanceHamming distance between two phashes.
Bundle + Info
bundle_glb_zipBundle a GLB + its sidecar artifacts into a shareable zip.unbundle_glb_zipReverse of bundle_glb_zip.list_presetsEnumerate the preset budgets so the agent picks intelligently.explain_budgetWhy a preset has the targets it does — for agent reasoning.