Skip to content

MCP Server exits after startup, no debug. #38

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
bdmorin opened this issue Apr 7, 2025 · 2 comments
Open

MCP Server exits after startup, no debug. #38

bdmorin opened this issue Apr 7, 2025 · 2 comments
Labels
bug Something isn't working

Comments

@bdmorin
Copy link

bdmorin commented Apr 7, 2025

Bug report

Describe the bug

New install, macos

➜ neofetch --backend off
-----------------
OS: macOS 15.3.1 24D70 arm64
Host: Mac15,7
Kernel: 24.3.0
Uptime: 3 days, 5 hours, 36 mins
Packages: 373 (brew)
Shell: fish 4.0.1
Resolution: 3008x1692, 1728x1117, 1440x2560
DE: Aqua
WM: Rectangle
Terminal: iTerm2
Terminal Font: ComicShannsMonoNFM-Regular 16
CPU: Apple M3 Pro
GPU: Apple M3 Pro
Memory: 3325MiB / 18432MiB

(PAT have already been deleted)

➜ npx -y @supabase/mcp-server-supabase@latest --access-token sbp_93cf52ac8a0a94277fa28e670c4cf744dc418cd8
npm warn deprecated @npmcli/[email protected]: This functionality has been moved to @npmcli/fs
npm warn deprecated [email protected]: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
npm warn deprecated [email protected]: This package is no longer supported.
npm warn deprecated [email protected]: This package is no longer supported.
npm warn deprecated [email protected]: Rimraf versions prior to v4 are no longer supported
npm warn deprecated [email protected]: This package is no longer supported.
npm warn deprecated [email protected]: This package is no longer supported.
npm warn deprecated [email protected]: Glob versions prior to v9 are no longer supported
npm warn deprecated [email protected]: This package is no longer supported.
npm warn deprecated [email protected]: This package is no longer supported.

It exits with no more output.

I tried with multiple invocations.

❯ history |rg "supabase" | rg npx
npx -y @supabase/mcp-server-supabase@latest --access-token sbp_93cf52ac8a0a94277fa28e670c4cf744dc418cd8
/opt/homebrew/Cellar/node@18/18.20.8/bin/npx -y @supabase/mcp-server-supabase@latest --access-token sbp_93cf52ac8a0a94277fa28e670c4cf744dc418cd8
/opt/homebrew/Cellar/node@20/20.19.0_1/bin/npx -y @supabase/mcp-server-supabase@latest --access-token sbp_93cf52ac8a0a94277fa28e670c4cf744dc418cd8
/opt/homebrew/Cellar/node@22/22.14.0_1/bin/npx -y @supabase/mcp-server-supabase@latest --access-token sbp_93cf52ac8a0a94277fa28e670c4cf744dc418cd8

All with the exact same output.

I tried with a mcp debugger:

❯ npx mcp-chat --server "npx -y @supabase/mcp-server-supabase@latest --access-token sbp_93cf52ac8a0a94277fa28e670c4cf744dc418cd8"
npm warn deprecated @npmcli/[email protected]: This functionality has been moved to @npmcli/fs
npm warn deprecated [email protected]: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
npm warn deprecated [email protected]: This package is no longer supported.
npm warn deprecated [email protected]: This package is no longer supported.
npm warn deprecated [email protected]: Rimraf versions prior to v4 are no longer supported
npm warn deprecated [email protected]: This package is no longer supported.
npm warn deprecated [email protected]: This package is no longer supported.
npm warn deprecated [email protected]: Glob versions prior to v9 are no longer supported
npm warn deprecated [email protected]: This package is no longer supported.
npm warn deprecated [email protected]: This package is no longer supported.
Failed to connect to MCP server:  McpError: MCP error -32000: Connection closed
    at Client._onclose (file:///Users/bdmorin/.npm/_npx/c3ac9bf2b1e69376/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js:94:23)
    at _transport.onclose (file:///Users/bdmorin/.npm/_npx/c3ac9bf2b1e69376/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js:69:18)
    at ChildProcess.<anonymous> (file:///Users/bdmorin/.npm/_npx/c3ac9bf2b1e69376/node_modules/@modelcontextprotocol/sdk/dist/esm/client/stdio.js:85:77)
    at ChildProcess.emit (node:events:507:28)
    at maybeClose (node:internal/child_process:1101:16)
    at ChildProcess._handle.onexit (node:internal/child_process:305:5) {
  code: -32000,
  data: undefined
}
Failed to connect to server npx -y @supabase/mcp-server-supabase@latest --access-token sbp_93cf52ac8a0a94277fa28e670c4cf744dc418cd8
McpError: MCP error -32000: Connection closed
    at Client._onclose (file:///Users/bdmorin/.npm/_npx/c3ac9bf2b1e69376/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js:94:23)
    at _transport.onclose (file:///Users/bdmorin/.npm/_npx/c3ac9bf2b1e69376/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js:69:18)
    at ChildProcess.<anonymous> (file:///Users/bdmorin/.npm/_npx/c3ac9bf2b1e69376/node_modules/@modelcontextprotocol/sdk/dist/esm/client/stdio.js:85:77)
    at ChildProcess.emit (node:events:507:28)
    at maybeClose (node:internal/child_process:1101:16)
    at ChildProcess._handle.onexit (node:internal/child_process:305:5) {
  code: -32000,
  data: undefined
}
node:internal/process/promises:394
    triggerUncaughtException(err, true /* fromPromise */);
    ^

McpError: MCP error -32000: Connection closed
    at Client._onclose (file:///Users/bdmorin/.npm/_npx/c3ac9bf2b1e69376/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js:94:23)
    at _transport.onclose (file:///Users/bdmorin/.npm/_npx/c3ac9bf2b1e69376/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js:69:18)
    at ChildProcess.<anonymous> (file:///Users/bdmorin/.npm/_npx/c3ac9bf2b1e69376/node_modules/@modelcontextprotocol/sdk/dist/esm/client/stdio.js:85:77)
    at ChildProcess.emit (node:events:507:28)
    at maybeClose (node:internal/child_process:1101:16)
    at ChildProcess._handle.onexit (node:internal/child_process:305:5) {
  code: -32000,
  data: undefined
}

Node.js v23.11.0

I'm not a node dev, so I asked gpt.

Yeah, I can help make sense of this.

⸻

🧵 What’s Happening

You’re running npm i in a Supabase-related repo, and it’s trying to install @supabase/sql-to-rest, which depends on libpg-query, a native Node addon. The failure is happening while compiling the C source for that native dependency.

⸻

🧨 The Actual Failure

This is the root error:

src/postgres/src_port_snprintf.c:374:1: error: static declaration of 'strchrnul' follows non-static declaration

That means:
	•	libpg-query defines a static strchrnul() function.
	•	But your macOS SDK already declares strchrnul() non-statically in /usr/include/_string.h.
	•	This is a conflict between the Postgres vendored C code and your macOS SDK.

Additionally:

warning: 'strchrnul' is only available on macOS 15.4 or newer [-Wunguarded-availability-new]

So you’re on macOS 15.4+, but the build is targeting macOS 10.7, so the compiler thinks strchrnul() isn’t safe to use directly.

⸻

💣 Why It’s Failing

You’re on:
	•	macOS 15.4
	•	Apple Silicon (arm64)
	•	Node 23.11.0 (latest)
	•	node-gyp 11.0.0

But libpg-query:
	1.	Doesn’t have a prebuilt binary for node-v131 (Node 23 ABI) and macOS arm64.
	2.	Falls back to source compilation.
	3.	Triggers a C standard library conflict during compilation.

⸻

✅ Fixes & Workarounds

1. Patch the C source

Edit src/postgres/src_port_snprintf.c to avoid redefining strchrnul if it’s already defined:

#ifndef HAVE_STRCHRNUL
static const char *strchrnul(const char *s, int c) {
  while (*s && *s != c) s++;
  return s;
}
#endif

Or protect it with a version check or macro. This is the cleanest path forward if you’re comfortable patching.

⸻

2. Use an older Node version

Try downgrading to Node 20 or 18, which are LTS and may still have prebuilt libpg-query binaries:

nvm install 20
nvm use 20

Then reinstall:

rm -rf node_modules package-lock.json
npm i



⸻

3. Set a higher macOS deployment target

Override the deployment target to match your actual macOS version to silence the strchrnul availability errors:

export MACOSX_DEPLOYMENT_TARGET=15.4
npm i

But this won’t fix the core strchrnul conflict unless it’s conditionally compiled.

⸻

4. File a PR or issue

If you’re using the latest libpg-query, this is probably something upstream should fix to support C23 and modern macOS SDKs cleanly.

GitHub: https://github.com/supabase/libpg-query

⸻

Let me know if you want a quick patch script or want to try the Node downgrade route and need help setting it up.

again, I have no idea what's the right move here.

I failed to get this to work in claude desktop, cline, and locally debugging.

@bdmorin bdmorin added the bug Something isn't working label Apr 7, 2025
@tracyscott
Copy link

Try overriding the broken libpg-query dependency that is being picked up from the Supabase dependency. I was able to get it running with node 20 and forcing a newer libpg-query dependency. Technically not correct until Supabase itself is fixed up but I was able to get it running to play around with it on Windows. I had the exact same compilation failure.

More details:
#31

@bdmorin
Copy link
Author

bdmorin commented Apr 8, 2025

Thanks, I'll give this a shot.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants