npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

stori3d-mcp

v0.9.0

Published

MCP server that lets AI agents (Claude Code, OpenAI Codex, Google Antigravity, Gemini CLI, Cursor, VS Code) see and edit a Stori3D project open in the browser.

Readme

stori3d-mcp

An MCP server that lets AI agents see and edit the Stori3D building project you have open in your browser. It works with Claude Code, OpenAI Codex, Google Antigravity, Gemini CLI, Cursor, VS Code (Copilot), Claude Desktop, and any other MCP client.

Things you can ask an agent:

  • "Lay out a 3-bed house of about 120 m² with an open-plan kitchen"
  • "Make the study 1 m wider and add a window on the east wall"
  • "Furnish the bedroom"
  • "Check the door widths and stairs against the usual rules"
  • "Give me a door and window schedule with marks"
  • "Show me the shadows at 9 am on the winter solstice"

The agent can look at the model (3D pictures and 2D plans) to check its own work. Every change it makes is one undo step in Stori3D.

How it works

AI tool ──stdio (MCP)──▶ stori3d-mcp ◀──WebSocket 127.0.0.1:47831──▶ Stori3D tab (browser)

Stori3D runs in the browser, so the tab connects to this server on your own computer when you press Connect in Stori3D's AI agent panel. The tab then runs the tools through Stori3D's element API.

Set up

Requires Node.js 18 or newer. Add the server to your AI tool:

| Tool | Where | What | |---|---|---| | Claude Code | terminal | claude mcp add stori3d -- npx -y stori3d-mcp@latest | | OpenAI Codex | ~/.codex/config.toml | [mcp_servers.stori3d]command = "npx"args = ["-y", "stori3d-mcp@latest"] | | Google Antigravity | Agent panel → MCP Servers → Manage → View raw config | { "mcpServers": { "stori3d": { "command": "npx", "args": ["-y", "stori3d-mcp@latest"] } } } | | Gemini CLI | ~/.gemini/settings.json | same mcpServers entry | | Cursor | ~/.cursor/mcp.json | same mcpServers entry | | VS Code (Copilot) | .vscode/mcp.json | { "servers": { "stori3d": { "type": "stdio", "command": "npx", "args": ["-y", "stori3d-mcp@latest"] } } } | | Claude Desktop | Settings → Developer → Edit config | same mcpServers entry |

@latest makes npx check for a newer version each time your AI tool starts; without it npx keeps running the version it cached first, and new tools never appear. Restart your AI tool after an update.

Stori3D developers can run it from a source checkout instead: build it (npm install && npm run build in packages/stori3d-mcp) and use node <checkout>/packages/stori3d-mcp/dist/index.js as the command. For example:

claude mcp add stori3d -- node <checkout>/packages/stori3d-mcp/dist/index.js

Connect

  1. Open your project in Stori3D (Chrome, Edge or Firefox on the same computer) and go to AI agent in the side rail. Press Connect. Stori3D shows a 6-digit code.
  2. Tell your agent: "Connect to Stori3D with code 123456". It calls the connect tool.
  3. The app bar shows AI connected. Every action the agent takes appears in the panel's activity list.

Chrome may ask once whether Stori3D can access "apps and services on this device". Allow it: that's the connection to this server.

Tools

| | | |---|---| | Session | connect, status | | Read | project_summary, list_elements, get_element, get_selection, get_schedule, list_catalogue, list_finishes, list_palettes, list_skies, list_properties, get_plan_svg, get_drawing_svg (elevations, sections and the section lines placed on the plan), list_views, list_tours, list_model_parts (imported models' IFC classes and property sets), list_underlays, list_sheets, list_comments (clients' comments on the review link) | | See and view | capture_view (overview, plan, elevation or section, element, saved view or current view, returned as an image; underlays on request), select, set_camera, go_to_view, set_active_level, set_section | | Files | export_file (IFC, glTF, USDZ, STL, OBJ, DXF, SVG, the sheets as PDF, schedules as Excel, the project), export_image, render_image (path traced), export_video (a tour as MP4): saved on your computer, in Downloads unless the agent gives a path. import_file brings a model (IFC, SketchUp .dae/.zip, glTF, OBJ, FBX, STL) or an underlay (image, PDF, DXF) in from a path, up to 22 MB. | | Change | update_element (also moving wall ends, doors and windows, curving walls), create_walls (straight or curved), create_room, create_slab, create_roof, create_stair (straight, L, U, winders), split_wall, place_opening, place_furniture, place_column, place_beam, place_ramp, place_lift, place_parking, create_grid, paint_surface, apply_palette, set_sky, set_sun, set_site, solid_operation, save_view, create_tour, update_tour, delete_tour, set_project_details, create_level, copy_level, remove_elements, set_properties, define_property, remove_property, sheets (create_sheet, place_drawing, update_sheet with revisions, remove_sheet, set_title_block), annotations (add_drawing_note, remove_drawing_note), batch, undo | | Share (asks you first) | share_tour, share_link (view-only or review link), stop_sharing, reply_comment, resolve_comment |

It also provides the resource stori3d://guide (conventions and design rules of thumb) and four prompts: layout_from_brief, furnish_room, compliance_check and door_window_schedule.

Conventions: lengths are in mm, areas in m² and angles in degrees. Plan coordinates have x pointing east and y pointing north.

Safety

  • Local only. The server listens on 127.0.0.1, and only accepts connections from Stori3D's own web addresses (it checks the Origin header).
  • Your consent. Nothing is shared until you press Connect and give the agent the code. The server has to send the code back before the tab answers any tool call. Pairing ends when either side disconnects.
  • Undoable. Each change is one undo step named "AI: …". The agent's undo tool can only undo its own changes. Deleting a level, or more than 10 elements, asks you first.
  • Asked first. Anything that reaches outside the project asks you in Stori3D before it happens: sharing a link or tour, taking one down, and answering a client's comment (you see the answer first).
  • Files. The agent reads and writes files only at the paths it names, through this server on your computer; exports go to Downloads unless it says otherwise, and never over an existing file.
  • Read-only mode in the AI agent panel lets the agent look but not change anything.
  • No scripts, no account access. Agents can't run code in Stori3D or reach your sign-in. What the agent sees goes to the AI tool you chose, under its terms.

Options

| Environment variable | Purpose | |---|---| | STORI3D_PORT | Use one fixed port instead of trying 47831–47835 | | STORI3D_ALLOWED_ORIGINS | Extra allowed page origins, comma-separated (for a self-hosted Stori3D) |

The names from before the rename, NEXUS3D_PORT and NEXUS3D_ALLOWED_ORIGINS, still work.

Licence

Proprietary: © 2026 Stori3D. You may install and use it, unmodified, only to connect AI tools to Stori3D. See LICENSE. It relies on open-source packages that npm installs separately under their own MIT licences: @modelcontextprotocol/sdk, ws and zod.