## TL;DR

For "SyntaxError: Invalid or unexpected token": the shebang ended up on the second line of the published file instead of the first, so Node tries to parse it as JavaScript.

```text
SyntaxError: Invalid or unexpected token
```

## Steps

1. Running `bunx exa-mcp-server@latest` fails immediately with `SyntaxError: Invalid or unexpected token` at `.smithery/index.cjs:2`, pointing at the `#!/usr/bin/env node` line. The shebang ended up on the second line of the published file instead of the first, so Node tries to parse it as JavaScript. Node 22, via bunx on Linux.

2. The published npm tarball had the `#!/usr/bin/env node` shebang on line 2 of `.smithery/index.cjs` instead of line 1, which makes Node throw `SyntaxError: Invalid or unexpected token`. Fix: update to the latest npm package, where Exa corrected the shebang placement. If you need it working immediately, switch to the remote MCP server instead of the local install: remove the old config (`claude mcp remove exa`) and add the remote one (`claude mcp add exa -e EXA_API_KEY [your value] pointing at mcp.exa.ai/mcp), which the reporter confirmed works.

## When to use

You are seeing this: Running bunx exa-mcp-server@latest fails immediately with SyntaxError: Invalid or unexpected token at.smithery/index.cjs:2, pointing at the #!/usr/bin/env node line. Use this skill when you run into "exa-mcp-server fails to start: SyntaxError Invalid or unexpected token in .smithery/index.cjs".

## When not to use

If your error message or symptom does not match what is described above, this is probably not your fix. Search for your exact error text instead of forcing this one to fit.

## Versions

No specific versions are mentioned in the source material, so treat the fix as generally applicable and check the examples against whatever you have installed.

## Why this happens

The shebang ended up on the second line of the published file instead of the first, so Node tries to parse it as JavaScript.
