
This fix is part of MCP troubleshooting, within The MCP Guide. Still stuck? Request a free MCP readiness review.
An MCP server fails with a Node.js version error when the node that your client runs is older (or sometimes newer) than the server package supports. Symptoms include syntax errors at startup, missing built-in modules, EBADENGINE warnings, or a server that exits right after it starts. The fastest fix is to check the package's engines field with npm view <package> engines, find which node the client actually uses, and point the config at a supported LTS release by full path.
Checked against: the Node.js releases page, the npm package.json docs, the MCP Inspector docs, the MCP build-a-server tutorial and the npm registry entries for the MCP packages named below, all on 2 November 2026. eSEOspace did not run each package on each Node version.
Key Takeaways
- As of 2 November 2026, nodejs.org lists Node 26 (Lithium), 24 (Krypton) and 22 (Jod) as LTS lines; Node 20 and 18 are end-of-life.
- Requirements differ by package: the npm registry lists
>=18for@modelcontextprotocol/sdk1.32.2,>=20for@modelcontextprotocol/server2.4.0, and>=24for@modelcontextprotocol/server-filesystem2.1.0. - The MCP Inspector docs say it "requires Node 22.19.0 or newer."
- npm's docs say
enginesis "advisory only" unlessengine-strictis set, so an install can succeed and the server still fail. - With nvm or similar tools, the client may run a different
nodethan your terminal.
What this error means
Each npm package can declare the Node versions it supports in engines. The npm docs say this field is "advisory only" and "will only produce warnings when your package is installed as a dependency." So npx -y some-server may download a package and then crash on an old Node.
These requirements move. When checked on 2 November 2026, the npm registry showed:
| Package | Version | engines.node |
|---|---|---|
@modelcontextprotocol/sdk | 1.32.2 | >=18 |
@modelcontextprotocol/server | 2.4.0 | >=20 |
@modelcontextprotocol/inspector | 2.13.0 | >=22.19.0 |
@modelcontextprotocol/server-filesystem | 2.1.0 | >=24 |
The filesystem server's 2.1.0 release was published on 28 October 2026. If your setup used it with Node 20 or 22 before, a fresh npx -y now pulls a version that asks for Node 24.
The Node.js releases page says "production applications should only use Active LTS or Maintenance LTS releases." It lists v26.13.0 as the latest LTS.
Quick fix
- Read the requirement. Run
npm view <package> engines. - Check your Node. Run
node --versionin a terminal. - Find which node the client runs. Run
which node(macOS, Linux) orwhere node(Windows). If you use nvm, the client may not see the same one. - Install a supported LTS from nodejs.org or your version manager. The local server guide recommends the LTS version.
- Point the config at it with a full path, and add its folder to
PATHinenvsonpxfinds the matchingnode. - Or pin an older package version that supports your Node, for example
@scope/package@x.y.zinargs. - Restart the client.
{
"mcpServers": {
"filesystem": {
"command": "/Users/you/.nvm/versions/node/v24.11.0/bin/npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/you/Desktop"],
"env": {
"PATH": "/Users/you/.nvm/versions/node/v24.11.0/bin:/usr/bin:/bin"
}
}
}
}
Your version folder will differ.
Fix by client / OS
Claude Desktop with a JSON config
Claude Desktop launches the command you give it. A GitHub thread on nvm reports that with nvm, "the app tries to use an incorrect Node and fails," and recommends absolute paths to the Node executable and the server script.
Claude Desktop extensions
Claude's help article says Claude Desktop "includes a built-in Node.js environment" for desktop extensions. You do not control that version. A bug report on SAP's Fiori MCP extension describes a server that exited under the built-in runtime and worked with a system Node. If you hit this, ask the extension's maintainer, or run the server from a JSON config with your own Node.
Cursor and VS Code
Both start stdio servers with the command you give them. Use a full path to a supported node or npx. Check MCP Logs in Cursor, or MCP: List Servers > Show Output in VS Code.
Claude Code
Claude Code inherits your terminal's environment, so node --version in the same terminal usually tells you what servers get. The Claude Code MCP docs show adding a server with an explicit command after --.
Building your own server
The MCP build tutorial says its TypeScript example needs "Node.js version 20 or higher" and uses the @modelcontextprotocol/server package. Set engines in your own package.json so users get a warning early.
Where to find the logs
- Claude Desktop:
mcp-server-SERVERNAME.logshows the Node error text. Folders:~/Library/Logs/Claude,%APPDATA%\Claude\logs,~/.config/Claude/logs. - Cursor: Output panel, MCP Logs.
- VS Code: Show Output on the server.
- Claude Code:
claude mcp get <name>.
If it still fails
spawn node ENOENTmeans Node was not found at all. See spawn npx ENOENT.- The Inspector itself will not start. It needs Node 22.19.0 or newer. See Inspector connection errors.
- The server starts then disconnects. See Connection closed.
- Look up codes with the MCP error code lookup.
Our course lesson on the MCP dev environment covers a clean setup. For teams, MCP development support can pin versions across machines.
More in the MCP Guide
Free tools: MCP Error Code Lookup · MCP Config Generator
Latest research: State of MCP: October 2026
Frequently asked questions
Which Node.js version should I use for MCP servers?
Use a current LTS release that meets the server's engines field. As of November 2026, nodejs.org lists Node 26, 24 and 22 as LTS.
Why did my server break without any change on my side?
If your config uses npx -y package-name without a version, npx can pick up a newer release of the package. A new release can raise its Node requirement. Pin the version to avoid this.
Does npm stop me from installing a package that needs newer Node?
Not by default. npm's docs say engines is advisory unless engine-strict is set. You get a warning, and the failure shows up at runtime.
Can I use different Node versions for different servers?
Yes. Give each server its own full path to node or npx, and set PATH in that server's env block.











