[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.

  1. step 01 · Sign in at spatialpack.dev/signin (free, no card).
  2. step 02 · On the dashboard, open the [02] API KEYS card and click Generate API key. Copy it — shown once.
  3. 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.