MCP Server
Manage WaitKit from your AI coding agent. The waitkit-mcp server gives Claude Code, Cursor, Windsurf, VS Code, Zed, Codex, and other MCP clients safe, programmatic access to your projects, subscribers, analytics, and campaigns.
waitkit-mcp is a Model Context Protocol server that grants AI coding agents safe, programmatic access to your WaitKit waitlist infrastructure. Instead of switching to the dashboard, your agent can create projects, manage API keys, inspect subscribers, and run email campaigns directly from your terminal.
It works with any client that supports MCP over stdio. Pick yours below in Installation.
What you can do
The server exposes tools for managing your waitlist infrastructure end to end:
- Projects — create, list, inspect, and update waitlist projects.
- API keys & local scaffolding — generate, list, rotate, and delete project API keys; write a key into a local
.envwithout exposing it in the chat. - Subscribers & analytics — list, inspect, update, and remove signups; fetch signup analytics; export subscribers as JSON or CSV.
- Email & campaigns — read and update the welcome email, browse email send logs, and create, schedule, send, and monitor broadcast campaigns.
Your agent discovers the full list of tools at runtime — just ask it what it can do.
Deleting a project is intentionally not available via MCP — it removes the entire waitlist and is manual-only in the dashboard.
Authentication
The server authenticates with a User Secret Key (wk_sec_...), scoped to your whole account rather than a single project API key.
- Open your WaitKit dashboard and click your avatar in the top-right.
- Open Developer → Secret Keys.
- Click Create Secret Key and copy the generated key (
wk_sec_...). - Set it as
WAITKIT_SECRET_KEYin your MCP client configuration.
Installation
The server runs via npx, so no local install is required. Select your agent below — the server name and config format follow each client's convention.
Register the server from your terminal:
claude mcp add --scope user waitkit --env WAITKIT_SECRET_KEY=wk_sec_YOUR_SECRET_KEY -- npx -y waitkit-mcpVerify it is connected with claude mcp list.
Add to .cursor/mcp.json in your project (or use Settings → Tools & MCP → Add MCP Server):
{
"mcpServers": {
"waitkit": {
"command": "npx",
"args": ["-y", "waitkit-mcp"],
"env": {
"WAITKIT_SECRET_KEY": "wk_sec_YOUR_SECRET_KEY"
}
}
}
}Add to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"waitkit": {
"command": "npx",
"args": ["-y", "waitkit-mcp"],
"env": {
"WAITKIT_SECRET_KEY": "wk_sec_YOUR_SECRET_KEY"
}
}
}
}Add to .vscode/mcp.json in your project. VS Code uses the servers key (not mcpServers):
{
"servers": {
"waitkit": {
"command": "npx",
"args": ["-y", "waitkit-mcp"],
"env": {
"WAITKIT_SECRET_KEY": "wk_sec_YOUR_SECRET_KEY"
}
}
}
}Then run Developer: Reload Window. GitHub Copilot picks the server up automatically.
Open Cline → MCP Servers in the VS Code extension and add a server with the config below:
{
"mcpServers": {
"waitkit": {
"command": "npx",
"args": ["-y", "waitkit-mcp"],
"env": {
"WAITKIT_SECRET_KEY": "wk_sec_YOUR_SECRET_KEY"
}
}
}
}Open Roo Code → MCP in the VS Code extension and add a server with the config below:
{
"mcpServers": {
"waitkit": {
"command": "npx",
"args": ["-y", "waitkit-mcp"],
"env": {
"WAITKIT_SECRET_KEY": "wk_sec_YOUR_SECRET_KEY"
}
}
}
}Add to your Zed settings (~/.config/zed/settings.json on Linux and macOS):
{
"mcp": {
"waitkit": {
"command": "npx",
"args": ["-y", "waitkit-mcp"],
"env": {
"WAITKIT_SECRET_KEY": "wk_sec_YOUR_SECRET_KEY"
}
}
}
}Add to ~/.codex/config.toml:
[mcp_servers.waitkit]
command = "npx"
args = ["-y", "waitkit-mcp"]
env = { "WAITKIT_SECRET_KEY" = "wk_sec_YOUR_SECRET_KEY" }Then restart Codex or run codex mcp reload.
Add the server from your terminal:
agy mcp add waitkit --command "npx" --args "-y,waitkit-mcp" --env WAITKIT_SECRET_KEY=wk_sec_YOUR_SECRET_KEYAdd to opencode.json in your project:
{
"mcp": {
"waitkit": {
"type": "local",
"command": ["npx", "-y", "waitkit-mcp"],
"enabled": true,
"environment": {
"WAITKIT_SECRET_KEY": "wk_sec_YOUR_SECRET_KEY"
}
}
}
}Programmatic
The package also exports createWaitKitMcpServer() and WaitKitApiClient for embedding in your own tools:
import { createWaitKitMcpServer } from "waitkit-mcp";Security notes
- Tools are annotated with MCP tool annotations: reads are marked
readOnlyHint, and deletes or sending campaigns are markeddestructiveHintso clients prompt for confirmation. - All dashboard API resources are addressed by UUID, not slug.
- Pro-gated actions return an error with code
PLAN_REQUIRED(orLIMIT_EXCEEDED) and the upgrade link to the checkout page. waitkit_write_env_keyonly writes to.env/.env.localfiles inside your working directory and never prints the raw key into the conversation.
Troubleshooting
| Symptom | Fix |
|---|---|
npx: command not found | Install Node.js 18+ and confirm npx is on your PATH |
WAITKIT_SECRET_KEY not set | Add the env var to your MCP client config and restart the session |
401 Unauthorized | Generate a fresh secret key in the dashboard |
PLAN_REQUIRED error | Upgrade your plan, or use the free-tier tools listed above |
Get Count
GET /v1/waitlist/:slug/count endpoint. Retrieve the total subscriber count for your waitlist project. Authenticated via Bearer token, returns JSON with the current signup total.
Concepts
Understand how the WaitKit waitlist platform works under the hood. Architecture, request lifecycle, analytics collection, and security explained for developers and product teams.
