Install

Add the Nick Launches MCP server to Claude Code, Claude Desktop, Cursor or VS Code.

The server speaks the Model Context Protocol over Streamable HTTP. It is hosted, so there is nothing to run locally and nothing to install from npm.

https://nicklaunches.com/api/mcp/

Keep the trailing slash.

The site sets trailingSlash: true, so https://nicklaunches.com/api/mcp answers with a 308 to the slashed form. Most clients follow it, but a redirect on every POST is a round trip you do not need. The bare form works; the slashed form is canonical.

Add the server

Claude Code
claude mcp add --transport http nicklaunches https://nicklaunches.com/api/mcp/

Where the config lives

Claude Code

The claude mcp add command writes the entry for you. Add --scope user to make the server available in every project instead of only the current one, and check the result with:

claude mcp list
Claude Desktop

Settings, then Developer, then Edit Config. That opens claude_desktop_config.json. Merge the mcpServers block above into the existing object rather than replacing the file, then restart the app.

Cursor

Project scope goes in .cursor/mcp.json at the repository root, global scope in ~/.cursor/mcp.json. Cursor picks the file up without a restart in recent versions; reopen the window if the tools do not appear.

VS Code

Put the block in .vscode/mcp.json for one workspace, or add it to your user settings under "mcp". Note the key is servers, not mcpServers, and the transport is named explicitly.

Verify it works

Ask the agent to list its tools. You are looking for seven names:

The seventh, connect_account, is the pairing helper. You rarely call it directly: the write tools start pairing on their own when a session has no account attached.

Then try a call that needs nothing:

Search Nick Launches for developer tools launched this month.

Staying connected across restarts

Pairing binds to the MCP session, and a session lasts as long as your client keeps running. Quit Claude Code and the next launch starts a fresh session, so the next write tool asks you to approve again. That is a fair default, because nothing that can act on your account is ever written to disk.

If you would rather approve once and be done, pass the bearer token from /connect/ as a header. The connection then survives restarts.

claude mcp add --transport http nicklaunches https://nicklaunches.com/api/mcp/ \
  --header "Authorization: Bearer nl_ct_your_token_here"

A token in a config file is a credential on disk, and any agent that can read your config can read it. Prefer session pairing unless the repeated approvals genuinely get in your way, and revoke anything you no longer use at /profile/connections/.

Transport details

TransportStreamable HTTP

POST only. GET answers 405, because the server never initiates a stream of its own. Notifications answer 202 with no body.

Content typeapplication/json

Requests and responses are JSON-RPC over JSON. No SSE framing is required.

Mcp-Session-Idheader

Issued by the server during initialize and echoed by the client on every later call. Account pairing binds to this id, which is why approving in the browser makes the very next tool call authenticated.

Authorizationheader

Optional. Bearer nl_ct_... authenticates the call directly, bypassing session pairing. The session id wins when both are present.

clientInfo.namestring

Recorded as the label of the connection, so /profile/connections/ shows "Claude Code" rather than an opaque identifier.

Troubleshooting

The tools do not appear at all

Restart the client after editing the config file. Then confirm the URL is reachable from the same machine:

curl -i https://nicklaunches.com/api/mcp/ -X POST \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}'

A 405 means you sent a GET. A 200 with a JSON body means the server is fine and the problem is in the client config.

Writes keep asking me to approve

Each new MCP session gets a new session id, and pairing binds to that id. A client that reconnects often will ask again. Approving is one click, and existing connections stay listed at /profile/connections/ until you revoke them.

Everything reads fine but nothing writes

Reads are anonymous by design, so a broken connection looks exactly like a working server until the first write. Run submit_product and follow the approval link it returns.

Was this page helpful?