Fix Blender MCP: Claude Desktop Server, Dependencies & Ports


Blender MCP — Troubleshooting Claude Desktop Connectivity, Python-SDK Breaks, and Port 9876

A concise, technical guide to diagnose and fix Blender MCP addon connectivity issues with Claude Desktop, manage MCP server version locks, resolve Python-sdk/uvx dependency conflicts, and configure firewall/networking for port 9876.

Overview: what fails and why it matters

When Blender’s MCP addon can’t connect to a local or remote MCP server used by Claude Desktop, rendering pipelines and feature integrations stall. The symptom set usually includes: “connection refused,” version mismatch errors, Python sdk import errors, or uvx dependency conflicts during addon initialization.

Root causes fall into three buckets: network (ports, firewall, routing), dependency/versioning (python-sdk or uvx incompatible releases), and runtime configuration (server binding, certs, or MCP server version locking). Each bucket requires a different diagnostic path but the fixes are frequently combinable: update the right package, open the right port, and confirm the server and addon use matching protocol versions.

This article gives deterministic checks and fixes so you can restore Blender MCP connectivity quickly and reliably, including exact commands and configuration snippets you can copy into your environment.

Troubleshooting connectivity — quick triage and deep checks

Start with quick triage: verify the MCP server process is running, confirm the bind address and port, and test connectivity from the Blender host. A single failed check rules out or points to network issues versus application issues.

If you have CLI access to the MCP host, run a local connection test (Linux/macOS):

nc -vz 127.0.0.1 9876
# or from Blender machine:
nc -vz mcp-host.example.com 9876

If the connection succeeds, the network path is open and you can focus on protocol/version mismatch or Python dependency errors. If it fails, check firewalls, NAT rules, and that the MCP server actually bound to the expected interface.

Check server logs for “bind” or “listening” lines and any handshake protocol errors. On the client (Blender) side, enable verbose logging in the MCP addon—this often surfaces the exact protocol string or python exception that caused the handshake to abort. Verbose logs let you see if the server responds with a different MCP protocol version or rejects the client due to an authentication or schema mismatch.

Network & firewall: port 9876 and NAT considerations

By default, many MCP deployments use TCP port 9876. Confirm both system firewalls and cloud security groups (if applicable) allow inbound TCP on 9876 to the MCP server, and that any return traffic is permitted to the Blender client. On Linux, check UFW/iptables rules; on Windows, verify Windows Defender Firewall inbound rules.

When Blender and the MCP server are on different subnets or behind NAT, ensure the MCP server is bound to a reachable interface. Binding to 127.0.0.1 is common during development but prevents external clients from connecting. Update the server configuration to bind to 0.0.0.0 or a specific LAN IP when external access is required.

For environments with strict security, use an SSH tunnel or VPN to avoid exposing port 9876 publicly. For example, from Blender host:

ssh -L 9876:localhost:9876 user@mcp-host.example.com

This tunnels the remote MCP server’s local port into your machine’s local port 9876, keeping traffic encrypted and avoiding public firewall rule changes.

Dependency and version management: python-sdk, uvx, and breaking changes

Python SDK or uvx dependency mismatches are a frequent cause of runtime failures when the Blender addon imports those packages at startup. A single upstream breaking change can manifest as an ImportError, AttributeError, or subtle behavior change that breaks MCP protocol handling.

Best practice: pin the MCP server and client (addon) dependencies to compatible versions. Use a requirements file or a virtual environment when testing. Example pinned requirements snippet:

python-sdk==2.4.1
uvx==1.3.0

If you encounter a breaking change after an SDK update, check the SDK’s changelog for removed or renamed functions. Often the fix is a small code adjustment or a temporary version lock until the addon maintainers release a compatible update. Keep track of the MCP server version lock in a manifest file so deployments are reproducible.

Practical fixes for common errors

Quick checklist (apply in order):

  • Confirm MCP server process is running and listening on the expected host:port.
  • From Blender host, test TCP connectivity to port 9876 (nc or telnet).
  • Inspect Blender addon logs and MCP server logs for protocol or import errors.
  • Verify python-sdk and uvx versions; pin or roll back as needed.
  • If server binds only to loopback, reconfigure to a reachable interface or create an SSH tunnel.

When you see Python errors referencing uvx or a changed api, create an isolated test: spawn a fresh virtualenv, pip install the versions the addon specifies, and import the modules — reproduce the failure outside Blender. This isolates Blender itself from the dependency issue.

If rollback is required and the newer SDK removed a function your addon needs, implement a compatibility shim in the addon that imports the new API when available and falls back to the old API otherwise. That keeps Blender MCP resilient while upstream packages evolve.

Configuration examples and common knobs

Ensure the MCP server configuration includes an explicit protocol version and the allowed clients (if applicable). Example server config keys to verify:

  • bind_address — set to 0.0.0.0 for external access or 127.0.0.1 for local-only.
  • port — commonly 9876; match this in the Blender addon settings.
  • protocol_version — pin this to the version your addon expects.

On the Blender side, open the addon preferences and explicitly set the MCP host and port instead of relying on autodiscovery; this avoids confusing NATs or multiple local services. If the addon supports TLS, make sure certificate paths are correct and that the certificate subject matches the host the client connects to.

Use health checks: a simple /health or /status endpoint on the MCP server lets you programmatically verify server readiness before Blender attempts a session handshake. Many orchestration systems rely on such checks to avoid race conditions during deployment.

Best practices for stable integration and deployment

1) Automate dependency pinning. Commit a requirements file alongside the addon and server manifests; use tools like pip-tools to maintain deterministic installs. This prevents unexpected upstream breakage from library updates.

2) Implement graceful compatibility handling in the addon: when the python-sdk exposes a deprecation, log it and fall back if possible. This reduces downtime between upstream releases and addon updates.

3) Use feature flags for protocol changes. When rolling a new MCP server that introduces protocol changes, gate the new behavior behind a server-side flag and allow clients to opt in. This gives you safer rollout control and rollback capability.

Backlinks & resources

Detailed server-side logs and issue reproduction steps for a specific MCP connectivity incident are hosted here: Blender MCP server connection & issue details.

Official Blender documentation and resources for addon development: Blender. For information about Claude AI and relevant client integrations, see Anthropic.

Semantic core (expanded keywords and clusters)

Primary (high intent)
Blender MCP server connection, Claude Desktop Blender integration, Blender MCP addon connectivity issue, MCP server port 9876, Python-sdk breaking change Blender MCP

Secondary (supporting / medium frequency)
uvx dependency conflicts MCP, MCP server version locking, Blender MCP troubleshooting and configuration, MCP daemon bind address, MCP protocol version mismatch

Clarifying / long-tail / LSI
how to test MCP port 9876 from Blender host, roll back python-sdk version for blender addon, SSH tunnel MCP port 9876, Blender addon importerror uvx, set MCP bind_address 0.0.0.0, MCP healthcheck endpoint

FAQ — three most asked troubleshooting questions

Why does Blender show “connection refused” to MCP on port 9876?

Connection refused usually means the MCP server is not listening on the expected interface or a firewall is blocking access. Confirm the server process is running, test with netcat/telnet from the Blender host, and ensure the server’s bind_address is not limited to 127.0.0.1 when external clients need access.

How do I resolve python-sdk / uvx import errors in the Blender MCP addon?

Isolate the addon in a virtualenv and pip install the pinned versions used by the addon. If a newer python-sdk or uvx release introduced breaking changes, pin the addon to a compatible version or implement a compatibility shim. Check SDK changelogs and roll back the package until the addon is updated.

Can I use an SSH tunnel instead of opening port 9876 publicly?

Yes. An SSH tunnel forwards the remote MCP server port into your local machine (ssh -L 9876:localhost:9876 user@mcp-host), allowing secure, encrypted access without changing firewall rules. This is recommended for development or when servers must not be publicly exposed.

Micro-markup suggestion (JSON-LD) for FAQ

{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "Why does Blender show \"connection refused\" to MCP on port 9876?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Confirm the MCP server is running, listening on the expected interface, and that firewalls allow TCP 9876. If the server binds to 127.0.0.1, reconfigure to a reachable IP or use SSH tunneling."
      }
    },
    {
      "@type": "Question",
      "name": "How do I resolve python-sdk / uvx import errors in the Blender MCP addon?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Use a virtualenv to reproduce the import error with pinned package versions. Roll back to the last compatible python-sdk/uvx version or add a compatibility shim in the addon."
      }
    },
    {
      "@type": "Question",
      "name": "Can I use an SSH tunnel instead of opening port 9876 publicly?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Yes — use ssh -L 9876:localhost:9876 user@mcp-host to forward the remote MCP server port locally, avoiding public exposure of the port."
      }
    }
  ]
}

If you want, I can produce a ready-to-paste version of the JSON-LD script tag, or a step-by-step reproducible checklist tailored to your environment (OS, Blender version, MCP server release). Provide those details and I’ll generate a deployment-specific runbook.