Search / io.github.pzalutski-pixel/blenderlens
BlenderLens
L0· runs locallyMCP server that lets AI agents build, check, preview and export game assets in Blender
v0.2.0 · active · repository · descriptor JSON · versions
Search / io.github.pzalutski-pixel/blenderlens
L0· runs locallyMCP server that lets AI agents build, check, preview and export game assets in Blender
v0.2.0 · active · repository · descriptor JSON · versions
{
"mcpServers": {
"blenderlens": {
"command": "npx",
"args": [
"-y",
"[email protected]"
],
"env": {
"BLENDERLENS_MODE": "auto",
"BLENDERLENS_HOST": "127.0.0.1",
"BLENDERLENS_PORT": "9877",
"BLENDERLENS_TOKEN": "${BLENDERLENS_TOKEN}",
"BLENDERLENS_TIMEOUT": "120",
"BLENDERLENS_START_TIMEOUT": "90",
"BLENDERLENS_ALLOW_PYTHON": "1"
}
}
}
}claude mcp add blenderlens -e "BLENDERLENS_MODE=auto" -e "BLENDERLENS_HOST=127.0.0.1" -e "BLENDERLENS_PORT=9877" -e "BLENDERLENS_TOKEN=${BLENDERLENS_TOKEN}" -e "BLENDERLENS_TIMEOUT=120" -e "BLENDERLENS_START_TIMEOUT=90" -e "BLENDERLENS_ALLOW_PYTHON=1" -- npx -y [email protected][mcp_servers.blenderlens]
command = "npx"
args = ["-y", "[email protected]"]
env = { "BLENDERLENS_MODE" = "auto", "BLENDERLENS_HOST" = "127.0.0.1", "BLENDERLENS_PORT" = "9877", "BLENDERLENS_TOKEN" = "${BLENDERLENS_TOKEN}", "BLENDERLENS_TIMEOUT" = "120", "BLENDERLENS_START_TIMEOUT" = "90", "BLENDERLENS_ALLOW_PYTHON" = "1" }
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"blenderlens": {
"type": "local",
"command": [
"npx",
"-y",
"[email protected]"
],
"enabled": true,
"environment": {
"BLENDERLENS_MODE": "auto",
"BLENDERLENS_HOST": "127.0.0.1",
"BLENDERLENS_PORT": "9877",
"BLENDERLENS_TOKEN": "{env:BLENDERLENS_TOKEN}",
"BLENDERLENS_TIMEOUT": "120",
"BLENDERLENS_START_TIMEOUT": "90",
"BLENDERLENS_ALLOW_PYTHON": "1"
}
}
}
}{
"mcpServers": {
"blenderlens": {
"command": "npx",
"args": [
"-y",
"[email protected]"
],
"env": {
"BLENDERLENS_MODE": "auto",
"BLENDERLENS_HOST": "127.0.0.1",
"BLENDERLENS_PORT": "9877",
"BLENDERLENS_TOKEN": "${BLENDERLENS_TOKEN}",
"BLENDERLENS_TIMEOUT": "120",
"BLENDERLENS_START_TIMEOUT": "90",
"BLENDERLENS_ALLOW_PYTHON": "1"
}
}
},
"deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=blenderlens&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsImJsZW5kZXJsZW5zLW1jcEAwLjIuMCJdLCJlbnYiOnsiQkxFTkRFUkxFTlNfTU9ERSI6ImF1dG8iLCJCTEVOREVSTEVOU19IT1NUIjoiMTI3LjAuMC4xIiwiQkxFTkRFUkxFTlNfUE9SVCI6Ijk4NzciLCJCTEVOREVSTEVOU19UT0tFTiI6IiR7QkxFTkRFUkxFTlNfVE9LRU59IiwiQkxFTkRFUkxFTlNfVElNRU9VVCI6IjEyMCIsIkJMRU5ERVJMRU5TX1NUQVJUX1RJTUVPVVQiOiI5MCIsIkJMRU5ERVJMRU5TX0FMTE9XX1BZVEhPTiI6IjEifX0%3D"
}{
"servers": {
"blenderlens": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"[email protected]"
],
"env": {
"BLENDERLENS_MODE": "auto",
"BLENDERLENS_HOST": "127.0.0.1",
"BLENDERLENS_PORT": "9877",
"BLENDERLENS_TOKEN": "${BLENDERLENS_TOKEN}",
"BLENDERLENS_TIMEOUT": "120",
"BLENDERLENS_START_TIMEOUT": "90",
"BLENDERLENS_ALLOW_PYTHON": "1"
}
}
}
}{
"mcpServers": {
"blenderlens": {
"command": "npx",
"args": [
"-y",
"[email protected]"
],
"env": {
"BLENDERLENS_MODE": "auto",
"BLENDERLENS_HOST": "127.0.0.1",
"BLENDERLENS_PORT": "9877",
"BLENDERLENS_TOKEN": "${BLENDERLENS_TOKEN}",
"BLENDERLENS_TIMEOUT": "120",
"BLENDERLENS_START_TIMEOUT": "90",
"BLENDERLENS_ALLOW_PYTHON": "1"
}
}
}
}extensions:
"blenderlens":
enabled: true
name: "blenderlens"
type: stdio
cmd: "npx"
args:
- "-y"
- "[email protected]"
envs:
"BLENDERLENS_MODE": "auto"
"BLENDERLENS_HOST": "127.0.0.1"
"BLENDERLENS_PORT": "9877"
"BLENDERLENS_TOKEN": "${BLENDERLENS_TOKEN}"
"BLENDERLENS_TIMEOUT": "120"
"BLENDERLENS_START_TIMEOUT": "90"
"BLENDERLENS_ALLOW_PYTHON": "1"
timeout: 300
Placeholders to fill from your own secret store: ${BLENDERLENS_TOKEN}. The registry never accepts secret values.
This is a local package: the command runs on your machine.
Not scored: fewer than three checks apply, usually because no remote answered a credential-free probe or the server is a local package.
protocol.modern, protocol.stateless, protocol.transport, protocol.list_ttlno remote answered a protocol handshake (not probed yet, unreachable, or local-only)auth.prm, auth.as_metadata, auth.cimdno remote uses OAuthauth.secret_in_urlno templated URLtools.descriptions, tools.description_length, tools.schemas, tools.annotations, tools.directory_hints, tools.token_cost, tools.api_dumptool list unknown (behind auth, not probed, or empty)stability.changes, stability.rug_pulltool list unknowndeps.known_vulnsno known advisory in 2 resolved packagesdeps.mcp_sdk_versionthe official MCP SDK is not in the dependency graphdeps.resolvable[email protected], [email protected] resolved: 2 packagesNo tool definition changes recorded. A server's first observation is its baseline; later probes record what changes.
Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.
+repository +namespace-matches-repo ~liveness-unmeasured +updated-9d-ago
Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.
[email protected] npm0 dependencies, resolved · advisories checked 2026-10-19
No known advisory affects this dependency graph.
[email protected] PyPI0 dependencies, resolved · advisories checked 2026-10-19
No known advisory affects this dependency graph.
Dependency graphs from deps.dev; advisories from OSV.dev, including the GitHub Advisory Database and the PyPI Advisory Database; all CC BY 4.0. The graph is what a clean install of this version resolves today; nothing was installed or run. How it is checked.
| package | registry | version | runtime | secrets |
|---|---|---|---|---|
blenderlens-mcp | npm | 0.2.0 | npx | BLENDERLENS_TOKEN |
blenderlens-mcp | pypi | 0.2.0 | uvx | BLENDERLENS_TOKEN |
No tools observed. Local packages are never executed by the registry.
Schemas: list_tools.
{
"name": "io.github.pzalutski-pixel/blenderlens",
"title": "BlenderLens",
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"version": "0.2.0",
"packages": [
{
"version": "0.2.0",
"transport": {
"type": "stdio"
},
"identifier": "blenderlens-mcp",
"runtimeHint": "npx",
"registryType": "npm",
"environmentVariables": [
{
"name": "BLENDER_BIN",
"format": "filepath",
"description": "Blender executable, for background sessions, install-addon, and the check command on a .blend; found on PATH or in the usual install folders when unset"
},
{
"name": "BLENDERLENS_MODE",
"format": "string",
"choices": [
"auto",
"live",
"background"
],
"default": "auto",
"description": "auto (the Blender window running the add-on if it responds, otherwise a background Blender), live, or background"
},
{
"name": "BLENDERLENS_HOST",
"format": "string",
"default": "127.0.0.1",
"description": "The address the server connects to for the BlenderLens add-on in live mode"
},
{
"name": "BLENDERLENS_PORT",
"format": "number",
"default": "9877",
"description": "The add-on's port, as set in its preferences"
},
{
"name": "BLENDERLENS_TOKEN",
"format": "string",
"isSecret": true,
"description": "Overrides the token the server reads from the add-on's connection file (live-<port>.json)"
},
{
"name": "BLENDERLENS_TIMEOUT",
"format": "number",
"default": "120",
"description": "Seconds to wait for one call; render_preview, run_python, run_script and bake_texture also take a timeout of their own"
},
{
"name": "BLENDERLENS_START_TIMEOUT",
"format": "number",
"default": "90",
"description": "Seconds to wait for a background Blender to come up"
},
{
"name": "BLENDERLENS_RENDER_DIR",
"format": "string",
"description": "Where render_preview writes when given no path. When unset, blenderlens/renders in the system temp folder, where previews older than 7 days are removed when the server starts"
},
{
"name": "BLENDERLENS_ALLOW_PYTHON",
"format": "string",
"choices": [
"1",
"0"
],
"default": "1",
"description": "0 leaves run_python and run_script out of the tool list and refuses them (not_allowed)"
},
{
"name": "BLENDERLENS_ALLOWED_DIRS",
"format": "string",
"description": "Folders that every path given to a tool must lie inside, separated by ; on Windows and : elsewhere. render_preview may also write to its render folder (BLENDERLENS_RENDER_DIR). When unset, paths are not confined"
},
{
"name": "BLENDERLENS_RUNTIME_DIR",
"format": "filepath",
"description": "Where the add-on writes live-<port>.json for the server, and where recovery copies go; Blender and the server must agree. Default: %LOCALAPPDATA%\\blenderlens on Windows, ~/Library/Application Support/blenderlens on macOS, and $XDG_STATE_HOME/blenderlens or ~/.local/state/blenderlens elsewhere"
}
]
},
{
"version": "0.2.0",
"transport": {
"type": "stdio"
},
"identifier": "blenderlens-mcp",
"runtimeHint": "uvx",
"registryType": "pypi",
"environmentVariables": [
{
"name": "BLENDER_BIN",
"format": "filepath",
"description": "Blender executable, for background sessions, install-addon, and the check command on a .blend; found on PATH or in the usual install folders when unset"
},
{
"name": "BLENDERLENS_MODE",
"format": "string",
"choices": [
"auto",
"live",
"background"
],
"default": "auto",
"description": "auto (the Blender window running the add-on if it responds, otherwise a background Blender), live, or background"
},
{
"name": "BLENDERLENS_HOST",
"format": "string",
"default": "127.0.0.1",
"description": "The address the server connects to for the BlenderLens add-on in live mode"
},
{
"name": "BLENDERLENS_PORT",
"format": "number",
"default": "9877",
"description": "The add-on's port, as set in its preferences"
},
{
"name": "BLENDERLENS_TOKEN",
"format": "string",
"isSecret": true,
"description": "Overrides the token the server reads from the add-on's connection file (live-<port>.json)"
},
{
"name": "BLENDERLENS_TIMEOUT",
"format": "number",
"default": "120",
"description": "Seconds to wait for one call; render_preview, run_python, run_script and bake_texture also take a timeout of their own"
},
{
"name": "BLENDERLENS_START_TIMEOUT",
"format": "number",
"default": "90",
"description": "Seconds to wait for a background Blender to come up"
},
{
"name": "BLENDERLENS_RENDER_DIR",
"format": "string",
"description": "Where render_preview writes when given no path. When unset, blenderlens/renders in the system temp folder, where previews older than 7 days are removed when the server starts"
},
{
"name": "BLENDERLENS_ALLOW_PYTHON",
"format": "string",
"choices": [
"1",
"0"
],
"default": "1",
"description": "0 leaves run_python and run_script out of the tool list and refuses them (not_allowed)"
},
{
"name": "BLENDERLENS_ALLOWED_DIRS",
"format": "string",
"description": "Folders that every path given to a tool must lie inside, separated by ; on Windows and : elsewhere. render_preview may also write to its render folder (BLENDERLENS_RENDER_DIR). When unset, paths are not confined"
},
{
"name": "BLENDERLENS_RUNTIME_DIR",
"format": "filepath",
"description": "Where the add-on writes live-<port>.json for the server, and where recovery copies go; Blender and the server must agree. Default: %LOCALAPPDATA%\\blenderlens on Windows, ~/Library/Application Support/blenderlens on macOS, and $XDG_STATE_HOME/blenderlens or ~/.local/state/blenderlens elsewhere"
}
]
}
],
"repository": {
"url": "https://github.com/pzalutski-pixel/blenderlens-mcp",
"source": "github"
},
"description": "MCP server that lets AI agents build, check, preview and export game assets in Blender"
}