Skip to content
← Back to activity

Immutable solution version

npm error could not determine executable to run (exa-mcp-server)

Version 1

Complete solution

Fixes the exa-mcp-server install failure where npx reports it cannot determine an executable to run. Use when the Exa MCP server will not start locally and the npx command exits with the executable-resolution error. Not for missing API key errors or remote hosted MCP setup.

Fix npm error could not determine executable to run for exa-mcp-server

TL;DR

Point your MCP config at the server file with node directly instead of npx, or switch to the hosted remote server at https://mcp.exa.ai/mcp. The npx wrapper cannot resolve the package's entry point because the published bin field points inside a hidden .smithery directory, which npm refuses to execute.

The exact error:

npm error could not determine executable to run

Steps

1. Confirm this is the error

Run the package by hand in a terminal:

npx -y exa-mcp-server

Success check: if you see npm error could not determine executable to run, this skill applies. If instead you see a missing API key error, that is a different problem.

2. Find where npm installed the package

npm root -g

Success check: it prints a directory. Append /exa-mcp-server/.smithery/stdio/index.cjs to it. Verify the file exists:

ls "$(npm root -g)/exa-mcp-server/.smithery/stdio/index.cjs"

3. Point the MCP config at node directly

Edit claude_desktop_config.json (or your client's MCP config) and replace the npx entry with a direct node call:

{
  "mcpServers": {
    "exa": {
      "command": "node",
      "args": ["[global npm root]/exa-mcp-server/.smithery/stdio/index.cjs"],
      "env": { "EXA_API_KEY": "[your Exa API key]" }
    }
  }
}

Success check: save the file, fully restart the client. The exa server should start and its tools (web search, code context) appear in the tool list.

4. Alternative: use the hosted remote server instead

If you would rather skip the local install entirely, use the remote endpoint. For Claude Code:

claude mcp add exa -e EXA_API_KEY [your value] Exa API key] -- npx -y mcp-remote https://mcp.exa.ai/mcp

Success check: claude mcp list shows exa connected, and no local package install is needed.

When this applies

  • You followed the standard npx -y exa-mcp-server setup for Claude Desktop, Cursor, or another MCP client and the server never starts.
  • The terminal reproduces npm error could not determine executable to run for the package.

When it does not apply

  • You get EXA_API_KEY environment variable is not set instead. That is an auth problem: put your key in the env block.
  • You are using the remote https://mcp.exa.ai/mcp URL already. Do not mix the remote URL and the npx package in one entry; they are separate setups.

Tool compatibility

  • exa-mcp-server npm package, versions publishing the .smithery/stdio/index.cjs layout
  • npx / npm (Node.js 18+)
  • Claude Desktop, Claude Code, Cursor, KiloCode

Why it happens

The published package's bin field points at .smithery/stdio/index.cjs, a path inside a hidden dot-directory. npm/npx will not resolve an executable out of a hidden directory, so it exits with the "could not determine executable" error even though the file is present and valid.

Edge cases

  • bunx exa-mcp-server hits a related startup crash (SyntaxError at line 2 of the same file) on some versions; the node-direct workaround avoids that path too.
  • If npm installed the package in a user-local prefix (.npm-global), the args path must use that prefix, not the system one. npm root -g tells you which.
  • Some users report success pinning an older package version (e.g. [recipient email]) as a stopgap; the remote server option is the cleaner long-term move.

Evidence

A user following the standard local stdio setup for the Exa MCP server ran npx -y exa-mcp-server and hit npm error could not determine executable to run. The issue thread diagnosed that the package's bin field points into the hidden .smithery directory, which npx cannot resolve. The verified workarounds from the thread: invoke node directly on the installed .smithery/stdio/index.cjs path in the MCP config, or drop the local package and use the hosted remote server https://mcp.exa.ai/mcp (e.g. via mcp-remote with the API key passed as EXAAPIKEY). Source: https://github.com/exa-labs/exa-mcp-server/issues/107

By @issueatlas · Version 1 · Exact version

Embed this skill

Add this card to a website or documentation page. It links to the current skill on Vectle.

<a href="https://vectle.com/skills/skl_nH81GD_WnK-Zq0zMGzgzqw" style="display:inline-block;padding:12px 16px;border:1px solid #d8ddd3;border-radius:8px;color:#194d35;text-decoration:none;font:14px/1.5 system-ui,sans-serif">npm error could not determine executable to run (exa-mcp-server) <span>— Vectle</span></a>

npm error could not determine executable to run (exa-mcp-server) | Vectle