Connect an MCP client
Connect Codex, Claude, Claude Code, VS Code, Cursor, Windsurf and other MCP clients to a Glxymesh project over Streamable HTTP with OAuth, step by step, and fix 401/404/405.
A client needs only your project’s address. There’s no API key to create: the client registers itself and you approve it once in the browser.
https://<org>.mcp.glxymesh.com/<project>Your organization has its own host, and each project is a path on it. The default project is the
host itself, https://<org>.mcp.glxymesh.com. The first connection to a new organization’s host
takes a few seconds while its certificate is issued.
Get the exact address and name for your project from the console’s Connect screen, or run
gxmesh connect inside the project directory. The examples below use the project helpdesk in the
org acme, so the address is https://acme.mcp.glxymesh.com/helpdesk and the server’s name is
acme-helpdesk.
Every client does the same three things
Section titled “Every client does the same three things”- Add the server by its address.
- Sign in once. A browser page from
accounts.glxymesh.comopens; approve it. The client keeps the token after that. - Turn its tools on where the client lists them, and call one.
Claude’s flow below is the simplest, and the others follow it step for step.
Before you connect
Section titled “Before you connect”You need a deployed project, membership in its organization, and the client installed on your machine.
gxmesh login signs in the Glxymesh CLI; each MCP client signs in separately through OAuth.
Adding a server saves its configuration. Authentication and a successful tool call verify the connection.
| Replace this example | With your value |
|---|---|
acme |
Your organization slug, not its display name |
helpdesk |
Your project slug |
acme-helpdesk |
A unique name for this connection in your client |
https://acme.mcp.glxymesh.com/helpdesk |
The exact URL from Connect or gxmesh connect |
The commands below run in a terminal. Commands starting with /, such as /mcp, run inside the client.
Do not append /mcp to a deployed project URL; /mcp is used by the local development server.
Add the server
Section titled “Add the server”-
Check that Codex CLI is installed:
Terminal window codex --versionIf it is missing, follow the official Codex CLI setup.
-
Add your deployed project as a remote HTTP server:
Terminal window codex mcp add acme-helpdesk --url https://acme.mcp.glxymesh.com/helpdeskacme-helpdesknames this connection;--urltells Codex to connect to the hosted endpoint. -
Sign in and approve access in the browser:
Terminal window codex mcp login acme-helpdeskUse the Glxymesh account that belongs to the project’s organization.
-
Confirm the server is configured, then start a session:
Terminal window codex mcp listcodexInside Codex, run
/mcpto inspect the active server and its tools. Ask it to call a tool you deployed, for example: “Use acme-helpdesk to list open issues in golang/go, limit 3.”
File alternative: add this table to ~/.codex/config.toml instead of running mcp add:
[mcp_servers.acme-helpdesk]url = "https://acme.mcp.glxymesh.com/helpdesk"Then run codex mcp login acme-helpdesk. Restart an existing session after configuration changes.
See OpenAI’s MCP documentation for configuration details.
The same steps work on claude.ai and in the Claude desktop app. Remote servers are added in the app, not in a config file.
- Open Customize → Connectors.
- Select + Add, then Add custom connector.
- Name it
acme-helpdesk, paste the address as the URL, and select Continue. - Leave the OAuth client setting as it is and add no API key or headers: Glxymesh registers Claude on its own. Choose Sign in now, then Add.
- Approve the page that opens on
accounts.glxymesh.com. - In a chat, select + → Connectors and switch
acme-helpdeskon.
On a Business or Enterprise plan, an owner adds the connector under Organization settings → Connectors. Everyone else then finds it under Customize → Connectors and selects Connect to sign in.
-
Confirm Claude Code is installed, then add the server:
Terminal window claude --versionTerminal window claude mcp add --transport http acme-helpdesk https://acme.mcp.glxymesh.com/helpdesk -
Run
claudeto start Claude Code. Inside the session, run/mcp, and choose acme-helpdesk → Authenticate. -
Approve the page that opens in your browser.
Check the saved connection from a terminal:
claude mcp listclaude mcp get acme-helpdesk--transport http selects the remote protocol. acme-helpdesk is the connection name, and the
last argument is your project’s URL. To share the configuration through a repository, use
--scope project; each teammate still signs in with their own account. See the
official Claude Code MCP guide.
The tools are on as soon as you’re signed in. Add --scope user to the first command to have the
server in every project, not only the current directory.
VS Code’s own file is .vscode/mcp.json, and it uses servers, not mcpServers. Pasting a
Cursor-style block there is the most common reason VS Code shows nothing.
-
Add the server, in one of two ways:
-
For every workspace, run this in a terminal:
Terminal window code --add-mcp '{"name":"acme-helpdesk","type":"http","url":"https://acme.mcp.glxymesh.com/helpdesk"}' -
For this workspace only, create
.vscode/mcp.json:{"servers": {"acme-helpdesk": {"type": "http","url": "https://acme.mcp.glxymesh.com/helpdesk"}}}
-
-
Start the server: select Start above its entry in
mcp.json, or run MCP: List Servers from the Command Palette, pickacme-helpdesk, and choose Start Server. -
VS Code asks whether the server may sign you in through
accounts.glxymesh.com. Choose Allow, then approve the page that opens in your browser. -
Open Chat, switch it to Agent, and select Configure Tools. The project’s tools are listed under
acme-helpdesk; leave them ticked.
The servers you’ve added, with Start, Stop and their output, are under MCP: List Servers whenever you need them.
-
Add the server to
~/.cursor/mcp.jsonfor every project, or.cursor/mcp.jsonfor one:{"mcpServers": {"acme-helpdesk": {"url": "https://acme.mcp.glxymesh.com/helpdesk"}}} -
Open Cursor’s MCP settings.
acme-helpdeskis listed and asks you to sign in: select it and approve the page that opens in your browser. Add noauthblock; Glxymesh registers Cursor on its own. -
Make sure the server’s switch is on. Its tools then appear under Available Tools in chat.
Open mcp_config.json from your client’s MCP settings. Check the installed client’s documentation
if its settings labels differ.
-
Add the server. Windsurf calls the address
serverUrl:{"mcpServers": {"acme-helpdesk": {"serverUrl": "https://acme.mcp.glxymesh.com/helpdesk"}}} -
Save the file and refresh the MCP list in Cascade.
-
Approve the page that opens in your browser the first time Cascade connects.
Any client that speaks Streamable HTTP and signs in with OAuth connects with the address
alone. Most JSON configs take this shape; check whether yours names the address url or
serverUrl, and whether the top-level key is mcpServers or servers:
{ "mcpServers": { "acme-helpdesk": { "type": "http", "url": "https://acme.mcp.glxymesh.com/helpdesk" } }}A client that can only start local (stdio) servers reaches Glxymesh through
mcp-remote, which signs in the same way:
{ "mcpServers": { "acme-helpdesk": { "command": "npx", "args": ["-y", "mcp-remote", "https://acme.mcp.glxymesh.com/helpdesk"] } }}Check it worked
Section titled “Check it worked”Ask the client something one of your tools answers, such as “List the open issues”. The call shows up on the console’s Invocations screen within a few seconds, with the client’s name beside it. If it doesn’t, see Troubleshooting below.
Connect a local development server
Section titled “Connect a local development server”Keep this running in a terminal inside your project:
gxmesh devIn a second terminal on the same machine, choose one client:
codex mcp add helpdesk-local --url http://127.0.0.1:7777/mcpcodexclaude mcp add --transport http helpdesk-local http://127.0.0.1:7777/mcpclaudeThe local server uses /mcp and does not use the hosted OAuth sign-in. Keep its name distinct from
production. A browser-based or remotely running client cannot reach your machine’s loopback address.
Stop gxmesh dev with Ctrl+C when finished. See local development.
Several projects
Section titled “Several projects”Each project is its own server with its own name, so connect as many as you like:
claude mcp add --transport http acme-helpdesk https://acme.mcp.glxymesh.com/helpdeskclaude mcp add --transport http acme-billing https://acme.mcp.glxymesh.com/billingIn Claude Code the tools then appear as mcp__acme-helpdesk__list-open-issues and
mcp__acme-billing__….
What happens on first connect
Section titled “What happens on first connect”- The client calls the address without a token and gets a
401pointing to the server’s OAuth metadata. - The metadata names
accounts.glxymesh.comas the authorization server. - The client registers itself there through dynamic client registration, as a public client with PKCE.
- Your browser opens, you approve, and the client gets a token that belongs to you.
tools/listreturns the project’s tools. After that, every call appears on the console’s Invocations screen.
The token belongs to you, not to the project. Everyone who uses the server signs in with their own account and needs to be a member of the organization. Each call is checked, so removing someone takes effect on their next call.
Troubleshooting
Section titled “Troubleshooting”| What you see | What it means |
|---|---|
| VS Code lists no server | .vscode/mcp.json uses mcpServers. VS Code’s file needs servers. |
| Codex lists the server but cannot call tools | Run codex mcp login acme-helpdesk, restart the session, and inspect /mcp. Listing a configuration alone does not verify a tool call. |
| Local connection refused | Keep gxmesh dev running on the same machine and use its printed port and /mcp path. |
| No sign-in page opens | The client hasn’t tried to connect yet. Start the server (VS Code), run /mcp → Authenticate (Claude Code), or select the server in the client’s MCP settings. |
404 |
The org or project in the address doesn’t exist for you. A project you aren’t a member of looks the same as one that doesn’t exist, so check the address on the Connect screen or with gxmesh connect. |
401 after it worked before |
The token expired or was issued somewhere else. Sign in again in the client. It won’t register again. |
405 |
Expected when you open the address in a browser. The server accepts POST only. |
| “This project is waking up after a week without calls. Try again in a few seconds.” | The project’s function tools were asleep. The next call works. |
If a tool you pushed doesn’t appear, run gxmesh revisions to check that your latest push went live
in the project you connected to.