MCP Server — Install in Claude Desktop / Claude Code / Cursor / Windsurf / Zed

Step-by-step install snippets for every MCP-compatible AI client. The WarmySender MCP server lives at https://warmysender.com/mcp and authenticates with your existing API key (ws_ prefix).

Before You Start — Create an API Key:

  1. Go to Settings > API Keys > Create API Key.
  2. Name it (e.g., "Claude Desktop" so you can revoke per-client later).
  3. Select scopes — match them to what you want the AI to do. For full access pick everything; for read-only monitoring pick only the *:read scopes.
  4. Copy the full key (shown once, starts with ws_). Keep it somewhere safe.

Claude Desktop (Mac / Windows):
Claude Desktop natively speaks stdio MCP, not HTTP — so we use the npx mcp-remote bridge to adapt. Open (or create) your claude_desktop_config.json:
• Mac: ~/Library/Application Support/Claude/claude_desktop_config.json
• Windows: %APPDATA%\Claude\claude_desktop_config.json

Paste this block inside the top-level object (merging with any existing mcpServers):

{
"mcpServers": {
"warmysender": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://warmysender.com/mcp",
"--header",
"Authorization: Bearer ws_YOUR_API_KEY_HERE"
]
}
}
}

Replace ws_YOUR_API_KEY_HERE with your real key. Save the file, fully quit Claude Desktop (Cmd+Q, not just close the window), reopen. You should see "warmysender" listed under the MCP section of the tools menu. Try asking: "What LinkedIn campaigns do I have running?"

Claude Code (CLI):
Claude Code speaks HTTP MCP natively. Run:

claude mcp add warmysender --transport http https://warmysender.com/mcp --header "Authorization: Bearer ws_YOUR_API_KEY_HERE"

Verify with: claude mcp list — you should see warmysender. Restart any active claude session to pick up the change.

Cursor:
Open your project's .cursor/mcp.json (or ~/.cursor/mcp.json for global) and paste:

{
"mcpServers": {
"warmysender": {
"url": "https://warmysender.com/mcp",
"headers": {
"Authorization": "Bearer ws_YOUR_API_KEY_HERE"
}
}
}
}

Restart Cursor. Open the Cursor Settings > MCP tab to confirm warmysender is listed and connected.

Windsurf (Codeium):
Edit ~/.codeium/windsurf/mcp_config.json:

{
"mcpServers": {
"warmysender": {
"serverUrl": "https://warmysender.com/mcp",
"headers": {
"Authorization": "Bearer ws_YOUR_API_KEY_HERE"
}
}
}
}

Restart Windsurf.

Zed:
Zed uses stdio so we bridge with mcp-remote. Open Zed settings (Cmd+,) and merge into your settings.json:

{
"context_servers": {
"warmysender": {
"command": {
"path": "npx",
"args": [
"-y",
"mcp-remote",
"https://warmysender.com/mcp",
"--header",
"Authorization: Bearer ws_YOUR_API_KEY_HERE"
]
}
}
}
}

Restart Zed.

Testing Your Connection:
From any client, ask the AI: "Use the get_workspace_info tool to show me my current WarmySender workspace." You should get a JSON response with your workspace name, subscription tier, and the scopes on your API key. If you get an auth error, check that you replaced the placeholder with your real ws_ key. If the tool isn't listed, the client didn't connect — re-check the config file path and restart the client fully.

Manual curl Test (from your terminal):

curl -X POST https://warmysender.com/mcp \
-H "Authorization: Bearer ws_YOUR_API_KEY_HERE" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-11-25","capabilities":{},"clientInfo":{"name":"curl","version":"1"}}}'

You should see a Mcp-Session-Id response header and a successful init payload. If curl shows 401, the key is wrong or revoked. If it shows 429, you've hit the rate limit — wait a minute.

Revoking Access:
If you lose a device or want to cut an AI client off: Settings > API Keys > find the key you named after that client > Delete. The client's next call will get 401 immediately. You can always create a new key to re-enable.

Troubleshooting:

See also: "MCP Server — Available Tools Reference" and "MCP Server — Safety, Scopes, and Rate Limits."

Related guides in Integrations

Back to all documentation | Contact support