spz-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@spz-mcpCapture a viewport screenshot and describe what you see."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
spz-mcp
An MCP server that lets an LLM agent drive StableProjectorz — inspect the loaded 3D model, read the app's state, look at the viewport, and trigger UI actions.
It talks to the agent bridge built into the app: a loopback-only JSON socket.
Claude Code / Claude Desktop ──MCP(stdio)──► spz-mcp ──TCP 127.0.0.1:8765──► StableProjectorzThe server knows nothing about StableProjectorz
On every tools/list, it asks the running app for its catalogue via the bridge's
describe command and republishes it as MCP tools, building each JSON Schema from the
parameter descriptions the app supplies.
Nothing is hard-coded here. Adding a tool to the app does not require a new release of this server — which is exactly what allows the app and this server to live in separate repositories without drifting apart.
Related MCP server: BlenderMCP
Setup
1. Enable the bridge in StableProjectorz
Add this to spz.config, next to the executable (or at the project root when running
from the Unity Editor), then restart the app:
--agent-bridgeOptional:
--agent-bridge-port=8765
--agent-bridge-token=some-secretThe Unity console should log [SPZ_Agent_Bridge] listening on 127.0.0.1:8765.
2. Register the server
Claude Code:
claude mcp add spz -- uvx --from git+https://github.com/redDwarf03/spz-mcp spz-mcpClaude Desktop — in claude_desktop_config.json:
{
"mcpServers": {
"spz": {
"command": "uvx",
"args": ["--from", "git+https://github.com/redDwarf03/spz-mcp", "spz-mcp"]
}
}
}With a token or a non-default port, add "env": {"SPZ_TOKEN": "some-secret", "SPZ_PORT": "8765"}.
From a local checkout
pip install -e ".[dev]"
spz-mcp --port 8765Tools
The list comes from the app at runtime. With the current bridge you get:
Tool | What it does |
| Protocol version and tool catalogue |
| Version, WebUI connections, loaded model, UDIM tiles, selection, generation status |
| Viewport capture, returned as a real MCP image the agent can see |
| Stored generation counts per kind, and the latest GUID |
| Every registered |
| Fire a |
Plus one tool this server adds itself:
Tool | What it does |
| Whether the app is reachable, and how to enable the bridge if not |
spz_bridge_status is also the only tool published while the app is down, so an agent can
diagnose the situation instead of finding an unexplained empty toolbox.
Options
Flag | Env | Default |
|
|
|
|
|
|
|
| none |
Protocol
One JSON object per line over TCP:
-> {"id":"1","tool":"get_app_state","params":{}}
<- {"id":"1","ok":true,"result":{"app_version":"2.4.5","sd_connected":true, ...}}
<- {"id":"1","ok":false,"error":"unknown tool 'foo'. Call 'describe' for the catalogue."}The app serves one request at a time per connection, so this client serialises calls
behind a lock rather than multiplexing on id.
Notes and limits
The bridge is opt-in and loopback-only, but it is an unauthenticated local control channel unless you set a token. Any process on the machine can connect. Enable it only while you are using it.
Screenshots wait on an async GPU readback, so they can take a moment; overlapping captures are rejected rather than left hanging.
Managers in the app live in additively-loaded scenes, so calls made during startup may report that a subsystem is not ready yet.
Tests
pip install -e ".[dev]"
pytestThe suite runs a fake bridge over a real TCP socket, so the client is exercised end to end without needing StableProjectorz running. Each test has a 30 s timeout: these all talk to a local socket and finish in milliseconds, so a hang is a bug and should fail rather than block the suite.
Linting and formatting use ruff:
ruff check .
ruff format .CI/CD
ci.yml runs on every push to main and every pull request:
lint —
ruff checkandruff format --checktest — Python 3.10 through 3.14 on Linux, plus one Windows leg (the app this server drives is Windows-first)
build — builds the wheel and sdist and validates the metadata with
twine check
release.yml runs on a v* tag. It refuses to proceed if the tag does not match the
version in pyproject.toml, then builds and attaches the distributions to a GitHub
release with generated notes.
Publishing to PyPI is off by default, since the server installs fine straight from git. To enable it:
claim the
spz-mcpname on PyPIadd a trusted publisher for this repo, workflow
release.yml, environmentpypiset the repository variable
PUBLISH_TO_PYPItotrue
No token is stored anywhere — publishing authenticates over OIDC.
License
MIT — see LICENSE.
The StableProjectorz app itself is AGPL-3.0. This server is a separate program that communicates with it over a socket, and is deliberately kept in its own repository so it can be reused and relicensed independently.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Tools
Related MCP Servers
- FlicenseBqualityCmaintenanceAn MCP server that bridges AI clients with a frontend 3D visualization application to control model properties, lighting, and camera settings via WebSocket. It enables real-time manipulation of 3D scenes through natural language commands for scaling, rotating, and coloring models.Last updated61
- Alicense-qualityDmaintenanceMCP server that integrates Blender with CSM.ai 3D assets and LLM agents, enabling AI-assisted 3D modeling and animation through natural language commands.Last updatedMIT
- Alicense-qualityBmaintenanceEnables AI agents to interact with Blockbench, a 3D modeling tool for Minecraft, through a plugin-based MCP server.Last updatedGPL 3.0
- Alicense-qualityCmaintenanceMCP server that enables AI to control Blender 3D, providing 175 typed tools for objects, materials, animation, compositing, and more via the Model Context Protocol.Last updated2MIT
Related MCP Connectors
MCP server for AI dialogue using various LLM models via AceDataCloud
MCP server for Hailuo (MiniMax) AI video generation
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to control Unreal E…
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/redDwarf03/spz-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server