MCP Server Config for Claude

Playing around with the Stape GTM MCP Server in Claude and having a bit of trouble getting it to pop the OAuth prompt.

If I run npx mcp-remote https://gtm-mcp.stape.ai/mcp manually I get the prompt, but Claude never displays it. I also get the following errors in mcp-server-google-tag-manager-mcp-server.log:

2026-02-04T23:14:35.788Z [google-tag-manager-mcp-server] [info] Initializing server... { metadata: undefined }
2026-02-04T23:14:35.793Z [google-tag-manager-mcp-server] [info] Server transport closed { metadata: undefined }
2026-02-04T23:14:35.793Z [google-tag-manager-mcp-server] [info] Client transport closed { metadata: undefined }
2026-02-04T23:14:35.800Z [google-tag-manager-mcp-server] [info] Using MCP server command: /Users/dvbsknd/.nvm/versions/node/v14.17.1/bin/npx with args and path: {
  metadata: {
    args: [ '-y', 'mcp-remote', 'https://gtm-mcp.stape.ai/mcp', [length]: 3 ],
    paths: [
      '/Users/dvbsknd/.nvm/versions/node/v14.17.1/bin',
      '/Users/dvbsknd/.nvm/versions/node/v15.14.0/bin',
      '/Users/dvbsknd/.nvm/versions/node/v16.3.0/bin',
      '/Users/dvbsknd/.nvm/versions/node/v18.12.1/bin',
      '/Users/dvbsknd/.nvm/versions/node/v18.18.2/bin',
      '/Users/dvbsknd/.nvm/versions/node/v20.15.0/bin',
      '/Users/dvbsknd/.nvm/versions/node/v24.13.0/bin',
      '/Users/dvbsknd/.nvm/versions/node/v25.6.0/bin',
      '/Users/dvbsknd/.nvm/versions/node/v8.17.0/bin',
      '/usr/local/bin',
      '/opt/homebrew/bin',
      '/usr/bin',
      '/bin',
      '/usr/sbin',
      '/sbin',
      [length]: 15
    ]
  }
} %o
2026-02-04T23:14:35.803Z [google-tag-manager-mcp-server] [info] Server started and connected successfully { metadata: undefined }
2026-02-04T23:14:35.971Z [google-tag-manager-mcp-server] [info] Message from client: {"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{"extensions":{"io.modelcontextprotocol/ui":{"mimeTypes":["text/html;profile=mcp-app"]}}},"clientInfo":{"name":"claude-ai","version":"0.1.0"}},"jsonrpc":"2.0","id":0} { metadata: undefined }
npm ERR! code E401
npm ERR! Unable to authenticate, need: Bearer realm="OAuth", error="invalid_token", error_description="Missing or invalid access token"

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/dvbsknd/.npm/_logs/2026-02-04T23_14_36_708Z-debug.log
Install for [ 'https://gtm-mcp.stape.ai/mcp' ] failed with code 1
2026-02-04T23:14:36.720Z [google-tag-manager-mcp-server] [info] Server transport closed { metadata: undefined }
2026-02-04T23:14:36.720Z [google-tag-manager-mcp-server] [info] Client transport closed { metadata: undefined }
2026-02-04T23:14:36.720Z [google-tag-manager-mcp-server] [info] Server transport closed unexpectedly, this is likely due to the process exiting early. If you are developing this MCP server you can add output to stderr (i.e. `console.error('...')` in JavaScript, `print('...', file=sys.stderr)` in python) and it will appear in this log. { metadata: undefined }
2026-02-04T23:14:36.721Z [google-tag-manager-mcp-server] [error] Server disconnected. For troubleshooting guidance, please visit our [debugging documentation](https://modelcontextprotocol.io/docs/tools/debugging) { metadata: { context: 'connection', stack: undefined } }
2026-02-04T23:14:36.721Z [google-tag-manager-mcp-server] [info] Client transport closed { metadata: undefined }

I noticed it was trying to use node v14 so I manually edited the config as follows:

{
  "mcpServers": {
    "google-tag-manager-mcp-server": {
      "command": "nvm use 24 && npx",
      "args": ["-y", "mcp-remote", "https://gtm-mcp.stape.ai/mcp"]
    }
  }
}

This improved the errors slightly, but still didn’t pop the OAuth:

2026-02-04T23:19:01.940Z [google-tag-manager-mcp-server] [info] Initializing server... { metadata: undefined }
2026-02-04T23:19:01.946Z [google-tag-manager-mcp-server] [info] Using MCP server command: nvm use 24 && npx with args and path: {
  metadata: {
    args: [ '-y', 'mcp-remote', 'https://gtm-mcp.stape.ai/mcp', [length]: 3 ],
    paths: [
      '/Users/dvbsknd/.nvm/versions/node/v14.17.1/bin',
      '/Users/dvbsknd/.nvm/versions/node/v15.14.0/bin',
      '/Users/dvbsknd/.nvm/versions/node/v16.3.0/bin',
      '/Users/dvbsknd/.nvm/versions/node/v18.12.1/bin',
      '/Users/dvbsknd/.nvm/versions/node/v18.18.2/bin',
      '/Users/dvbsknd/.nvm/versions/node/v20.15.0/bin',
      '/Users/dvbsknd/.nvm/versions/node/v24.13.0/bin',
      '/Users/dvbsknd/.nvm/versions/node/v25.6.0/bin',
      '/Users/dvbsknd/.nvm/versions/node/v8.17.0/bin',
      '/usr/local/bin',
      '/opt/homebrew/bin',
      '/usr/bin',
      '/bin',
      '/usr/sbin',
      '/sbin',
      [length]: 15
    ]
  }
} %o
2026-02-04T23:19:01.948Z [google-tag-manager-mcp-server] [info] Server started and connected successfully { metadata: undefined }
Failed to spawn process: No such file or directory
2026-02-04T23:19:01.964Z [google-tag-manager-mcp-server] [info] Server transport closed { metadata: undefined }
2026-02-04T23:19:01.964Z [google-tag-manager-mcp-server] [info] Client transport closed { metadata: undefined }
2026-02-04T23:19:01.964Z [google-tag-manager-mcp-server] [info] Server transport closed unexpectedly, this is likely due to the process exiting early. If you are developing this MCP server you can add output to stderr (i.e. `console.error('...')` in JavaScript, `print('...', file=sys.stderr)` in python) and it will appear in this log. { metadata: undefined }
2026-02-04T23:19:01.964Z [google-tag-manager-mcp-server] [error] Server disconnected. For troubleshooting guidance, please visit our [debugging documentation](https://modelcontextprotocol.io/docs/tools/debugging) { metadata: { context: 'connection', stack: undefined } }
2026-02-04T23:19:01.964Z [google-tag-manager-mcp-server] [info] Client transport closed { metadata: undefined }

Has anyone else had success getting this working with Claude?

Updated the command to explicitly use node/v24.13.0:

{
  "mcpServers": {
    "google-tag-manager-mcp-server": {
      "command": "/Users/dvbsknd/.nvm/versions/node/v24.13.0/bin/npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://gtm-mcp.stape.ai/mcp"
      ]
    }
  }
}

This results in a new error:

2026-02-04T23:49:19.678Z [google-tag-manager-mcp-server] [info] Message from client: {"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{"extensions":{"io.modelcontextprotocol/ui":{"mimeTypes":["text/html;profile=mcp-app"]}}},"clientInfo":{"name":"claude-ai","version":"0.1.0"}},"jsonrpc":"2.0","id":0} { metadata: undefined }
internal/modules/cjs/loader.js:905
  throw err;
  ^

Error: Cannot find module 'node:path'
Require stack:
- /Users/dvbsknd/.nvm/versions/node/v24.13.0/lib/node_modules/npm/lib/cli.js
- /Users/dvbsknd/.nvm/versions/node/v24.13.0/lib/node_modules/npm/bin/npx-cli.js
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:902:15)
    at Function.Module._load (internal/modules/cjs/loader.js:746:27)
    at Module.require (internal/modules/cjs/loader.js:974:19)
    at require (internal/modules/cjs/helpers.js:92:18)
    at Object.<anonymous> (/Users/dvbsknd/.nvm/versions/node/v24.13.0/lib/node_modules/npm/lib/cli.js:10:18)
    at Module._compile (internal/modules/cjs/loader.js:1085:14)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
    at Module.load (internal/modules/cjs/loader.js:950:32)
    at Function.Module._load (internal/modules/cjs/loader.js:790:14)
    at Module.require (internal/modules/cjs/loader.js:974:19) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [
    '/Users/dvbsknd/.nvm/versions/node/v24.13.0/lib/node_modules/npm/lib/cli.js',
    '/Users/dvbsknd/.nvm/versions/node/v24.13.0/lib/node_modules/npm/bin/npx-cli.js'
  ]
}

I’ll keep updating if/as I troubleshoot.

Hey @daveb the issue is in mc-remote versions, there’s a conflict that we need to resolve, a temporary ad-hoc fix would be using below as config (forcing 0.1.30 on mcp-remote):

{
  "mcpServers": {
    "ga4-mcp-server": {
     "command": "npx",
      "args": [
        "-y",
        "mcp-remote@0.1.30",
        "https://mcp-ga.stape.ai/mcp"
      ]
    }
  }
}

Thanks @Dan, despite adding the version for mcp-remote, I still get the same combination of errors I first posted depending on which version of node I try to execute with.

I see your example is for the GA4 MCP, not GTM but assume it’s the same, right?

Trying to reply to the thread with a solution but getting a 403 error.

The forum doesn’t like something about my Markdown in my full reply, so here’s a PNG of it:

@Dan, any idea why the content of my post keeps getting a 403 error when I try to submit it?

See Markdown here.

Posting below with @daveb permission:

The issue was the one described here. Claude cannot properly make use of nvm which I use to manage multiple node versions on my system.

Solution is to create a wrapper script that sources your shell environment:

1. Create /usr/local/bin/npx-for-claude:

#!/usr/bin/env bash
export NVM_DIR=“$HOME/.nvm”
[ -s “$NVM_DIR/nvm.sh” ] && . “$NVM_DIR/nvm.sh”
nvm use default > /dev/null
exec npx “$@”

2. Make executable:

chmod +x /usr/local/bin/npx-for-claude

3. Configure Claude Desktop:

{
“mcpServers”: {
“filesystem”: {
“command”: “npx-for-claude”,
“args”: [“-y”, “@modelcontextprotocol/server-filesystem”, “/path/to/directory”]
}
}
}

1 Like

@Dan, not to expose my ignorance but am I right in saying the MCP Server will only work in Claude Desktop and not in Claude Code (CLI)?

hey @daveb, you can run claude mcp add and the thing will guide you further, the config is structured a bit differently to Desktop version, but it’s the same idea in principle

That worked, thanks Dan!

1 Like

Seeing as you’ve been so helpful, @Dan, I thought I’d ask you again before going digging some more. Do you know why the MCP requires such regular re-authorisation? It only seems to hold for maybe an hour or so and then pops the auth prompt again (Desktop, in this case).

Yeah, same issue here. The token expires very fast, very often.

1 Like