Summary
In DXT extensions, there is an important runtime difference: Claude Desktop bundles Node.js, while Python is not bundled. It would be very helpful if the official documentation explicitly clarified this, and also provided recommended best practices for packaging Python-based MCP servers into DXT (e.g. bundling Python, distributing binaries, or using a Node bridge).
Current behavior / docs
The official Anthropic engineering post explicitly states that Claude Desktop ships with Node.js built-in, eliminating external dependencies (“Built-in runtime: We ship Node.js with Claude Desktop…”).
The support documentation also says: “DXT extensions support Node.js, Python, and binary MCP servers. Claude Desktop includes a built-in Node.js environment…”
However, there is no clear official statement about Python. Community articles clarify that Python is not bundled (unlike Node.js) and developers must bundle it themselves, but there’s no centralized official guidance.
Why this matters
When distributing to non-technical end users, the extension must work in environments without a preinstalled Python runtime.
Without clear guidance, developers must guess whether to bundle Python, compile a binary, or use a Node bridge. Official recommendations would lower friction and increase DXT adoption.
Requested docs updates
Runtime policy statement
Explicitly state: “Claude Desktop bundles Node.js. Python is not bundled (as of now).” in the official README / MANIFEST.md / support docs.
Best practices for Python extensions
A. Bundled Python runtime: Include CPython in the .dxt and configure mcp_config.command with a relative path (with platforms overrides).
B. Binary approach: Package with PyInstaller / Nuitka and set server.type: "binary"; note OS-specific builds.
C. Node bridge: Implement an MCP server in Node.js that calls Python via child_process; include the Python binary inside the .dxt.
Provide minimal manifest.json examples, directory layouts, and cross-platform guidance.
Testing checklist
Add guidance to test in a clean environment with no Python installed.
Examples
Add to examples/: python-bundled, python-binary, node-bridge-to-python.
(Optional) Feature suggestions
Consider adding high-level manifest fields so the DXT CLI can automatically handle Python bundling at dxt pack time. Example:
"python_runtime": { "bundle": true, "version": "3.11.x", "path": "python-bin/" }
Provide official guidance (including licensing considerations) for distributing a minimal CPython with DXT.
Environment
Claude Desktop: latest
dxt CLI: latest
OS: macOS / Windows
References
Anthropic Engineering: “Desktop Extensions: One-click MCP server installation” — mentions Node.js built-in.
Anthropic Support: “Getting started with local MCP servers on Claude Desktop” — confirms Node.js built-in.
Community write-ups clarifying Node built-in vs Python not bundled (for reference).
Summary
In DXT extensions, there is an important runtime difference: Claude Desktop bundles Node.js, while Python is not bundled. It would be very helpful if the official documentation explicitly clarified this, and also provided recommended best practices for packaging Python-based MCP servers into DXT (e.g. bundling Python, distributing binaries, or using a Node bridge).
Current behavior / docs
The official Anthropic engineering post explicitly states that Claude Desktop ships with Node.js built-in, eliminating external dependencies (“Built-in runtime: We ship Node.js with Claude Desktop…”).
The support documentation also says: “DXT extensions support Node.js, Python, and binary MCP servers. Claude Desktop includes a built-in Node.js environment…”
However, there is no clear official statement about Python. Community articles clarify that Python is not bundled (unlike Node.js) and developers must bundle it themselves, but there’s no centralized official guidance.
Why this matters
When distributing to non-technical end users, the extension must work in environments without a preinstalled Python runtime.
Without clear guidance, developers must guess whether to bundle Python, compile a binary, or use a Node bridge. Official recommendations would lower friction and increase DXT adoption.
Requested docs updates
Runtime policy statement
Explicitly state: “Claude Desktop bundles Node.js. Python is not bundled (as of now).” in the official README / MANIFEST.md / support docs.
Best practices for Python extensions
A. Bundled Python runtime: Include CPython in the .dxt and configure mcp_config.command with a relative path (with platforms overrides).
B. Binary approach: Package with PyInstaller / Nuitka and set server.type: "binary"; note OS-specific builds.
C. Node bridge: Implement an MCP server in Node.js that calls Python via child_process; include the Python binary inside the .dxt.
Provide minimal manifest.json examples, directory layouts, and cross-platform guidance.
Testing checklist
Add guidance to test in a clean environment with no Python installed.
Examples
Add to examples/: python-bundled, python-binary, node-bridge-to-python.
(Optional) Feature suggestions
Consider adding high-level manifest fields so the DXT CLI can automatically handle Python bundling at dxt pack time. Example:
"python_runtime": { "bundle": true, "version": "3.11.x", "path": "python-bin/" }
Provide official guidance (including licensing considerations) for distributing a minimal CPython with DXT.
Environment
Claude Desktop: latest
dxt CLI: latest
OS: macOS / Windows
References
Anthropic Engineering: “Desktop Extensions: One-click MCP server installation” — mentions Node.js built-in.
Anthropic Support: “Getting started with local MCP servers on Claude Desktop” — confirms Node.js built-in.
Community write-ups clarifying Node built-in vs Python not bundled (for reference).