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 mcp add --transport http nicklaunches https://nicklaunches.com/api/mcp/{
"mcpServers": {
"nicklaunches": {
"url": "https://nicklaunches.com/api/mcp/"
}
}
}{
"mcpServers": {
"nicklaunches": {
"url": "https://nicklaunches.com/api/mcp/"
}
}
}{
"servers": {
"nicklaunches": {
"type": "http",
"url": "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 listClaude 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:
Catalog search.
One full listing.
Preflight audit.
Open a draft.
Vetted directories.
Your launches.
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"{
"mcpServers": {
"nicklaunches": {
"url": "https://nicklaunches.com/api/mcp/",
"headers": {
"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 HTTPPOST only. GET answers 405, because the server never initiates a stream of its own. Notifications answer 202
with no body.
Content typeapplication/jsonRequests and responses are JSON-RPC over JSON. No SSE framing is required.
Mcp-Session-IdheaderIssued 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.
AuthorizationheaderOptional. Bearer nl_ct_... authenticates the call directly, bypassing session pairing. The session id wins when
both are present.
clientInfo.namestringRecorded 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.