Pascal MCP

Lets an assistant build and edit 3D building models in Pascal: walls, rooms, doors, stairs, furniture.

Official · Pascal TypeScript Local · stdio Design

65 popularity score ★ 25k ↓ 821/wk

Connect your client

Local (npm)

Add in one click

Opens the app, which asks before it adds the server.

Or add it by command or config

Claude CodeTerminal
claude mcp add pascal -- npx -y @pascal-app/cli mcp connect
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "pascal": {
      "command": "npx",
      "args": [
        "-y",
        "@pascal-app/cli",
        "mcp",
        "connect"
      ]
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "pascal": {
      "command": "npx",
      "args": [
        "-y",
        "@pascal-app/cli",
        "mcp",
        "connect"
      ]
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "pascal": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@pascal-app/cli",
        "mcp",
        "connect"
      ]
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.pascal]
command = "npx"
args = ["-y", "@pascal-app/cli", "mcp", "connect"]
Gemini CLITerminal
gemini mcp add --scope user pascal npx -- -y @pascal-app/cli mcp connect

Settings 1

PASCAL_HOME Optional: Pascal's data directory (default ~/.pascal); use separate directories for independent concurrent work.

What it does

Pascal is an open-source 3D building editor, and its MCP server exposes the same scene edits the editor's interface uses. An assistant can read a project's scene graph, levels, walls and rooms, measure distances and areas, and build or change a design: create story shells, rooms and walls, add doors and windows, cut openings, create stairs and roofs, place catalog items and furnish a room for a given type, duplicate levels, delete nodes, and undo or redo. Batched patches are validated with a dry run before they are committed.

Checking tools validate the scene, report practical issues such as a storey with no stair, and find colliding or out-of-bounds items. Vision tools read walls and rooms from a floor-plan image or dimensions from a room photo when the client supports sampling, and prompts guide turning a written brief into a model.

The recommended local setup is the Pascal CLI: npx @pascal-app/cli mcp connect starts the bundled MCP service as a stdio connector, and pascal editor runs the local web editor that shares the same projects, stored in a SQLite database under ~/.pascal. It needs Node.js 22.13 or newer; the README reports macOS as the supported platform for this release. Pascal also offers a hosted MCP endpoint that edits projects in a Pascal account.

Tools 39

get_scene
Return the full scene graph.
get_node
Fetch a node by id, whole.
describe_node
Node summary with ancestry, children count and properties.
find_nodes
Filter nodes by type (any node kind) / parent / zone / level, or by import source id (provenance.refs[].id or legacy metadata.sourceIds, exact or prefix).
list_levels
List every building's levels in floor order with their role (storey, roof-only, support).
get_level_summary
Compact summary of one level: role, counts, walls with openings, zones with areas, slabs, ceilings, items, stairs, roofs, and everything else by type. Omit levelId for the lowest storey.
get_walls
Walls on a level with length, stored and resolved height, and child doors/windows.
get_zones
Room/zone polygons with holes, areas (holes taken out), bounds and floor choices.
measure
Distance between two nodes' world-space reference points (hosted doors, windows and items resolved through their host; every node kind); area when applicable.
search_assets
Search the built-in MCP item catalog.
create_story_shell
Create one level-owned story shell from a footprint: the perimeter walls. The floor plate and ceiling are derived from the enclosed rooms; createSlab / createCeiling / slabElevation are recorded as room intent. Use once per story.
create_stair_between_levels
Create a straight stair and one rectangular manual opening in the destination slab/source ceiling, with auto-opening disabled.
measure_stair
Read actual risers, going at the walking line, slope, uniformity, arrival, headroom against floors/ceilings/stair bodies, and design-target diagnostics.
fit_stair
Fit uniform risers or replace the chain with a straight/L/U preset with width-sized landings or quarter-turn winders in one undoable edit.
create_roof
Create a roof container and one roof segment. By default creates a dedicated roof level above the reference occupied level for solo/exploded views.
create_room
Create a room from a polygon: one wall per edge (reusing or splitting existing walls) plus the room zone. The floor plate and ceiling are derived, never authored.
add_door
Add a door to a wall using parametric placement.
add_window
Add a window to a wall using parametric placement and sill height.
furnish_room
Place realistic furniture for a room type inside a polygon.
apply_patch
Batched create/update/delete/move, validated and dry-run before commit. Batch-first is the default: send all create/update/delete ops for a build step in one atomic call (stable order, later ops may reference earlier created ids); do not loop one-op calls. A create with an id already in the...
create_level
Add a new level to a building.
create_wall
Add a wall to a level.
place_item
Place a catalog item on a level/slab/zone, ceiling, wall, or site. Slab/zone targets resolve to the parent level so floor items render and validate.
place_design
Create one design (procedural item recipe, object or JSON string) that passes validate_design. Its mounting picks the host: level/slab/zone or a design surface (surfaceId), a straight wall face, or a ceiling. Create-only, one undo step, inline designs up to 24 KiB, with coded refusals.
cut_opening
Cut a door or window opening into a wall. position is 0..1 along the wall and is stored as wall-local meters.
set_zone
Create a zone/room polygon on a level.
duplicate_level
Copy a level as the editor does (units whose rooms are all on it included; plan references, scans and spawns left behind), above or below, shifting the floors past it.
delete_node
Delete a node with everything under it, as the editor's Delete does.
clear_scene
Empty the project on purpose, back to the default site, building and level. The only way to empty a project: a write that would leave it empty is refused (scene_wipe_blocked) by a store that guards against accidental wipes, and the session keeps the project as stored.
undo
Step back through temporal history.
redo
Step forward through temporal history.
export_json
Serialize the scene graph as JSON.
export_glb
Stubbed: GLB export requires the browser renderer.
validate_scene
Zod-validate every node and parent-child integrity.
validate_design
Read-only: validate a design (procedural item recipe, object or JSON string) and measure it. The authority over pascal://schema/design.
verify_scene
High-level check with validation status, per-level counts and roles, empty levels, and typed practical issues (storeys with no stair, openings off their wall, stairs off their slab, blocked doors…).
check_collisions
Find overlapping items and out-of-bounds placements.
analyze_floorplan_image
Vision tool: extract walls, rooms, and approximate dimensions from a floorplan image.
analyze_room_photo
Vision tool: extract approximate dimensions and fixtures from a room photo.

Similar servers