waitlister-mcp 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +206 -0
- package/build/index.d.ts +3 -0
- package/build/index.d.ts.map +1 -0
- package/build/index.js +187 -0
- package/build/index.js.map +1 -0
- package/package.json +42 -0
package/README.md
ADDED
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
# Waitlister MCP Server
|
|
2
|
+
|
|
3
|
+
An [MCP (Model Context Protocol)](https://modelcontextprotocol.io/) server that connects AI assistants like Claude, Cursor, and Windsurf to the [Waitlister](https://waitlister.me) API. Manage your waitlist subscribers through natural language.
|
|
4
|
+
|
|
5
|
+
## What Can You Do With This?
|
|
6
|
+
|
|
7
|
+
Once connected, you can ask your AI assistant things like:
|
|
8
|
+
|
|
9
|
+
- "Add test@gmail.com to my waitlist"
|
|
10
|
+
- "How many subscribers do I have?"
|
|
11
|
+
- "Look up the subscriber john@acme.com"
|
|
12
|
+
- "Update John's points to 500"
|
|
13
|
+
- "Show me the top 10 subscribers by referral count"
|
|
14
|
+
|
|
15
|
+
## Tools
|
|
16
|
+
|
|
17
|
+
| Tool | Description |
|
|
18
|
+
| --- | --- |
|
|
19
|
+
| `add_subscriber` | Add a new subscriber to your waitlist |
|
|
20
|
+
| `list_subscribers` | List subscribers with pagination and sorting |
|
|
21
|
+
| `get_subscriber` | Get details for a specific subscriber by ID or email |
|
|
22
|
+
| `update_subscriber` | Update a subscriber's name, phone, points, or metadata |
|
|
23
|
+
| `log_view` | Record a waitlist page view for analytics |
|
|
24
|
+
|
|
25
|
+
## Prerequisites
|
|
26
|
+
|
|
27
|
+
- Node.js 18+
|
|
28
|
+
- A [Waitlister](https://waitlister.me) account on the **Growth** or **Business** plan (API access required)
|
|
29
|
+
- Your **API key** and **waitlist key** from the Waitlister dashboard
|
|
30
|
+
|
|
31
|
+
### Getting Your Keys
|
|
32
|
+
|
|
33
|
+
1. Log in to [Waitlister](https://waitlister.me)
|
|
34
|
+
2. Go to **Integrations** → **API access** → **Generate API key**
|
|
35
|
+
3. Your **waitlist key** is found in your waitlist settings
|
|
36
|
+
|
|
37
|
+
## Installation
|
|
38
|
+
|
|
39
|
+
### Using npx (recommended)
|
|
40
|
+
|
|
41
|
+
No installation needed — just configure your MCP client:
|
|
42
|
+
|
|
43
|
+
```json
|
|
44
|
+
{
|
|
45
|
+
"mcpServers": {
|
|
46
|
+
"waitlister": {
|
|
47
|
+
"command": "npx",
|
|
48
|
+
"args": ["-y", "waitlister-mcp"],
|
|
49
|
+
"env": {
|
|
50
|
+
"WAITLISTER_API_KEY": "your-api-key",
|
|
51
|
+
"WAITLISTER_WAITLIST_KEY": "your-waitlist-key"
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### Global install
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
npm install -g waitlister-mcp
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Then configure:
|
|
65
|
+
|
|
66
|
+
```json
|
|
67
|
+
{
|
|
68
|
+
"mcpServers": {
|
|
69
|
+
"waitlister": {
|
|
70
|
+
"command": "waitlister-mcp",
|
|
71
|
+
"env": {
|
|
72
|
+
"WAITLISTER_API_KEY": "your-api-key",
|
|
73
|
+
"WAITLISTER_WAITLIST_KEY": "your-waitlist-key"
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Setup by Client
|
|
81
|
+
|
|
82
|
+
### Claude Desktop
|
|
83
|
+
|
|
84
|
+
Edit `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or `%APPDATA%\Claude\claude_desktop_config.json` (Windows):
|
|
85
|
+
|
|
86
|
+
```json
|
|
87
|
+
{
|
|
88
|
+
"mcpServers": {
|
|
89
|
+
"waitlister": {
|
|
90
|
+
"command": "npx",
|
|
91
|
+
"args": ["-y", "waitlister-mcp"],
|
|
92
|
+
"env": {
|
|
93
|
+
"WAITLISTER_API_KEY": "your-api-key",
|
|
94
|
+
"WAITLISTER_WAITLIST_KEY": "your-waitlist-key"
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### Cursor
|
|
102
|
+
|
|
103
|
+
Go to **Settings** → **MCP** → **Add new MCP server** and use the same configuration above.
|
|
104
|
+
|
|
105
|
+
### Claude Code
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
claude mcp add waitlister -- npx -y waitlister-mcp
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
Then set the environment variables `WAITLISTER_API_KEY` and `WAITLISTER_WAITLIST_KEY`.
|
|
112
|
+
|
|
113
|
+
## Environment Variables
|
|
114
|
+
|
|
115
|
+
| Variable | Required | Description |
|
|
116
|
+
| --- | --- | --- |
|
|
117
|
+
| `WAITLISTER_API_KEY` | Yes | Your Waitlister API key |
|
|
118
|
+
| `WAITLISTER_WAITLIST_KEY` | Yes | Your unique waitlist key |
|
|
119
|
+
|
|
120
|
+
## Tool Reference
|
|
121
|
+
|
|
122
|
+
### add_subscriber
|
|
123
|
+
|
|
124
|
+
Add a new subscriber to your waitlist.
|
|
125
|
+
|
|
126
|
+
**Parameters:**
|
|
127
|
+
|
|
128
|
+
- `email` (string, required) — Subscriber's email address
|
|
129
|
+
- `name` (string, optional) — Subscriber's name
|
|
130
|
+
- `phone` (string, optional) — Subscriber's phone number
|
|
131
|
+
- `referred_by` (string, optional) — Referral code of the person who referred them
|
|
132
|
+
- `metadata` (object, optional) — Custom fields (e.g. `{ "company": "Acme" }`)
|
|
133
|
+
|
|
134
|
+
### list_subscribers
|
|
135
|
+
|
|
136
|
+
Retrieve a paginated list of subscribers.
|
|
137
|
+
|
|
138
|
+
**Parameters:**
|
|
139
|
+
|
|
140
|
+
- `limit` (number, default 20) — Results per page (1–100)
|
|
141
|
+
- `page` (number, default 1) — Page number
|
|
142
|
+
- `sort_by` (string, default "date") — Sort field: `position`, `points`, `date`, `referral_count`, `email`
|
|
143
|
+
- `sort_dir` (string, default "desc") — Sort direction: `asc` or `desc`
|
|
144
|
+
|
|
145
|
+
### get_subscriber
|
|
146
|
+
|
|
147
|
+
Get detailed info for a specific subscriber.
|
|
148
|
+
|
|
149
|
+
**Parameters:**
|
|
150
|
+
|
|
151
|
+
- `id_or_email` (string, required) — Subscriber's ID or email address
|
|
152
|
+
|
|
153
|
+
### update_subscriber
|
|
154
|
+
|
|
155
|
+
Update a subscriber's information.
|
|
156
|
+
|
|
157
|
+
**Parameters:**
|
|
158
|
+
|
|
159
|
+
- `id_or_email` (string, required) — Subscriber's ID or email address
|
|
160
|
+
- `name` (string, optional) — Updated name
|
|
161
|
+
- `phone` (string, optional) — Updated phone number
|
|
162
|
+
- `points` (number, optional) — Updated points value
|
|
163
|
+
- `metadata` (object, optional) — Custom fields to add/update (merged with existing)
|
|
164
|
+
|
|
165
|
+
### log_view
|
|
166
|
+
|
|
167
|
+
Record a waitlist page view.
|
|
168
|
+
|
|
169
|
+
**Parameters:**
|
|
170
|
+
|
|
171
|
+
- `visitor_id` (string, optional) — Unique visitor identifier (prevents duplicate counts)
|
|
172
|
+
- `referring_domain` (string, optional) — Referring domain
|
|
173
|
+
|
|
174
|
+
## Rate Limits
|
|
175
|
+
|
|
176
|
+
Rate limits depend on your Waitlister plan:
|
|
177
|
+
|
|
178
|
+
| Plan | Subscriber Endpoints | Log View Endpoint |
|
|
179
|
+
| --- | --- | --- |
|
|
180
|
+
| Growth | 60 requests/min | 200 requests/min |
|
|
181
|
+
| Business | 120 requests/min | 400 requests/min |
|
|
182
|
+
|
|
183
|
+
## Development
|
|
184
|
+
|
|
185
|
+
```bash
|
|
186
|
+
git clone https://github.com/waitlister/waitlister-mcp.git
|
|
187
|
+
cd waitlister-mcp
|
|
188
|
+
npm install
|
|
189
|
+
npm run build
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
Test with the MCP Inspector:
|
|
193
|
+
|
|
194
|
+
```bash
|
|
195
|
+
WAITLISTER_API_KEY=your-key WAITLISTER_WAITLIST_KEY=your-key npm run inspect
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
## Links
|
|
199
|
+
|
|
200
|
+
- [Waitlister](https://waitlister.me) — Create waitlists for your product launches
|
|
201
|
+
- [API Documentation](https://waitlister.me/docs/api)
|
|
202
|
+
- [MCP Protocol](https://modelcontextprotocol.io/)
|
|
203
|
+
|
|
204
|
+
## License
|
|
205
|
+
|
|
206
|
+
MIT
|
package/build/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/build/index.js
ADDED
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
3
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
4
|
+
import { z } from "zod";
|
|
5
|
+
// Configuration
|
|
6
|
+
const API_BASE = "https://waitlister.me/api/v1";
|
|
7
|
+
const API_KEY = process.env.WAITLISTER_API_KEY;
|
|
8
|
+
const WAITLIST_KEY = process.env.WAITLISTER_WAITLIST_KEY;
|
|
9
|
+
if (!API_KEY) {
|
|
10
|
+
console.error("Error: WAITLISTER_API_KEY environment variable is required.");
|
|
11
|
+
process.exit(1);
|
|
12
|
+
}
|
|
13
|
+
if (!WAITLIST_KEY) {
|
|
14
|
+
console.error("Error: WAITLISTER_WAITLIST_KEY environment variable is required.");
|
|
15
|
+
process.exit(1);
|
|
16
|
+
}
|
|
17
|
+
// Helper: make authenticated API requests
|
|
18
|
+
async function apiRequest(path, options = {}) {
|
|
19
|
+
const url = `${API_BASE}/waitlist/${WAITLIST_KEY}${path}`;
|
|
20
|
+
const response = await fetch(url, {
|
|
21
|
+
...options,
|
|
22
|
+
headers: {
|
|
23
|
+
"Content-Type": "application/json",
|
|
24
|
+
"X-Api-Key": API_KEY,
|
|
25
|
+
...options.headers,
|
|
26
|
+
},
|
|
27
|
+
});
|
|
28
|
+
const data = await response.json();
|
|
29
|
+
if (!response.ok) {
|
|
30
|
+
const errorMessage = typeof data === "object" && data !== null && "message" in data
|
|
31
|
+
? data.message
|
|
32
|
+
: `API error: ${response.status} ${response.statusText}`;
|
|
33
|
+
throw new Error(errorMessage);
|
|
34
|
+
}
|
|
35
|
+
return data;
|
|
36
|
+
}
|
|
37
|
+
// Helper: format response for MCP
|
|
38
|
+
function textResponse(data) {
|
|
39
|
+
return {
|
|
40
|
+
content: [
|
|
41
|
+
{
|
|
42
|
+
type: "text",
|
|
43
|
+
text: JSON.stringify(data, null, 2),
|
|
44
|
+
},
|
|
45
|
+
],
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
// Create server
|
|
49
|
+
const server = new McpServer({
|
|
50
|
+
name: "waitlister",
|
|
51
|
+
version: "1.0.0",
|
|
52
|
+
});
|
|
53
|
+
// ─── Tool: Add Subscriber ───────────────────────────────────────────────────
|
|
54
|
+
server.tool("add_subscriber", "Add a new subscriber to your Waitlister waitlist. Returns their position, referral code, and sign-up token.", {
|
|
55
|
+
email: z.string().email().describe("The subscriber's email address"),
|
|
56
|
+
name: z.string().optional().describe("The subscriber's name"),
|
|
57
|
+
phone: z.string().optional().describe("The subscriber's phone number"),
|
|
58
|
+
referred_by: z
|
|
59
|
+
.string()
|
|
60
|
+
.optional()
|
|
61
|
+
.describe("Referral code of the person who referred this subscriber"),
|
|
62
|
+
metadata: z
|
|
63
|
+
.record(z.string())
|
|
64
|
+
.optional()
|
|
65
|
+
.describe("Additional custom fields to store with the subscriber (e.g. company, role)"),
|
|
66
|
+
}, async ({ email, name, phone, referred_by, metadata }) => {
|
|
67
|
+
const body = { email };
|
|
68
|
+
if (name)
|
|
69
|
+
body.name = name;
|
|
70
|
+
if (phone)
|
|
71
|
+
body.phone = phone;
|
|
72
|
+
if (referred_by || metadata) {
|
|
73
|
+
body.metadata = {
|
|
74
|
+
...(metadata || {}),
|
|
75
|
+
...(referred_by ? { referred_by } : {}),
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
const data = await apiRequest("/sign-up", {
|
|
79
|
+
method: "POST",
|
|
80
|
+
body: JSON.stringify(body),
|
|
81
|
+
});
|
|
82
|
+
return textResponse(data);
|
|
83
|
+
});
|
|
84
|
+
// ─── Tool: List Subscribers ─────────────────────────────────────────────────
|
|
85
|
+
server.tool("list_subscribers", "Retrieve a paginated list of subscribers from your waitlist. Supports sorting by position, points, date, referral_count, or email.", {
|
|
86
|
+
limit: z
|
|
87
|
+
.number()
|
|
88
|
+
.min(1)
|
|
89
|
+
.max(100)
|
|
90
|
+
.default(20)
|
|
91
|
+
.describe("Number of results to return (1-100, default 20)"),
|
|
92
|
+
page: z
|
|
93
|
+
.number()
|
|
94
|
+
.min(1)
|
|
95
|
+
.default(1)
|
|
96
|
+
.describe("Page number for pagination (default 1)"),
|
|
97
|
+
sort_by: z
|
|
98
|
+
.enum(["position", "points", "date", "referral_count", "email"])
|
|
99
|
+
.default("date")
|
|
100
|
+
.describe("Field to sort by (default: date)"),
|
|
101
|
+
sort_dir: z
|
|
102
|
+
.enum(["asc", "desc"])
|
|
103
|
+
.default("desc")
|
|
104
|
+
.describe("Sort direction (default: desc)"),
|
|
105
|
+
}, async ({ limit, page, sort_by, sort_dir }) => {
|
|
106
|
+
const params = new URLSearchParams({
|
|
107
|
+
limit: limit.toString(),
|
|
108
|
+
page: page.toString(),
|
|
109
|
+
sort_by,
|
|
110
|
+
sort_dir,
|
|
111
|
+
});
|
|
112
|
+
const data = await apiRequest(`/subscribers?${params.toString()}`);
|
|
113
|
+
return textResponse(data);
|
|
114
|
+
});
|
|
115
|
+
// ─── Tool: Get Subscriber ───────────────────────────────────────────────────
|
|
116
|
+
server.tool("get_subscriber", "Retrieve detailed information about a specific subscriber by their ID or email address. Returns position, points, referral info, metadata, location, and more.", {
|
|
117
|
+
id_or_email: z
|
|
118
|
+
.string()
|
|
119
|
+
.describe("The subscriber's unique ID or email address"),
|
|
120
|
+
}, async ({ id_or_email }) => {
|
|
121
|
+
const encoded = encodeURIComponent(id_or_email);
|
|
122
|
+
const data = await apiRequest(`/subscribers/${encoded}`);
|
|
123
|
+
return textResponse(data);
|
|
124
|
+
});
|
|
125
|
+
// ─── Tool: Update Subscriber ────────────────────────────────────────────────
|
|
126
|
+
server.tool("update_subscriber", "Update an existing subscriber's information. You can update their name, phone, points, and/or custom metadata. Only include fields you want to change.", {
|
|
127
|
+
id_or_email: z
|
|
128
|
+
.string()
|
|
129
|
+
.describe("The subscriber's unique ID or email address"),
|
|
130
|
+
name: z.string().optional().describe("Updated name"),
|
|
131
|
+
phone: z.string().optional().describe("Updated phone number"),
|
|
132
|
+
points: z.number().optional().describe("Updated points value"),
|
|
133
|
+
metadata: z
|
|
134
|
+
.record(z.string())
|
|
135
|
+
.optional()
|
|
136
|
+
.describe("Custom fields to add or update (merged with existing metadata)"),
|
|
137
|
+
}, async ({ id_or_email, name, phone, points, metadata }) => {
|
|
138
|
+
const body = {};
|
|
139
|
+
if (name !== undefined)
|
|
140
|
+
body.name = name;
|
|
141
|
+
if (phone !== undefined)
|
|
142
|
+
body.phone = phone;
|
|
143
|
+
if (points !== undefined)
|
|
144
|
+
body.points = points;
|
|
145
|
+
if (metadata !== undefined)
|
|
146
|
+
body.metadata = metadata;
|
|
147
|
+
const encoded = encodeURIComponent(id_or_email);
|
|
148
|
+
const data = await apiRequest(`/subscribers/${encoded}`, {
|
|
149
|
+
method: "PUT",
|
|
150
|
+
body: JSON.stringify(body),
|
|
151
|
+
});
|
|
152
|
+
return textResponse(data);
|
|
153
|
+
});
|
|
154
|
+
// ─── Tool: Log View ─────────────────────────────────────────────────────────
|
|
155
|
+
server.tool("log_view", "Record a view of your waitlist page. Useful for tracking engagement and calculating conversion rates.", {
|
|
156
|
+
visitor_id: z
|
|
157
|
+
.string()
|
|
158
|
+
.optional()
|
|
159
|
+
.describe("Unique identifier for the visitor (prevents duplicate counts)"),
|
|
160
|
+
referring_domain: z
|
|
161
|
+
.string()
|
|
162
|
+
.optional()
|
|
163
|
+
.describe("Domain that referred the view"),
|
|
164
|
+
}, async ({ visitor_id, referring_domain }) => {
|
|
165
|
+
const body = {};
|
|
166
|
+
if (visitor_id)
|
|
167
|
+
body.visitor_id = visitor_id;
|
|
168
|
+
if (referring_domain) {
|
|
169
|
+
body.metadata = { referring_domain };
|
|
170
|
+
}
|
|
171
|
+
const data = await apiRequest("/log-view", {
|
|
172
|
+
method: "POST",
|
|
173
|
+
body: JSON.stringify(body),
|
|
174
|
+
});
|
|
175
|
+
return textResponse(data);
|
|
176
|
+
});
|
|
177
|
+
// ─── Start Server ───────────────────────────────────────────────────────────
|
|
178
|
+
async function main() {
|
|
179
|
+
const transport = new StdioServerTransport();
|
|
180
|
+
await server.connect(transport);
|
|
181
|
+
console.error("Waitlister MCP server running on stdio");
|
|
182
|
+
}
|
|
183
|
+
main().catch((error) => {
|
|
184
|
+
console.error("Fatal error:", error);
|
|
185
|
+
process.exit(1);
|
|
186
|
+
});
|
|
187
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "waitlister-mcp",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "MCP server for the Waitlister API — manage your waitlist subscribers through AI assistants like Claude, Cursor, and more.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"waitlister-mcp": "./build/index.js"
|
|
8
|
+
},
|
|
9
|
+
"files": [
|
|
10
|
+
"build"
|
|
11
|
+
],
|
|
12
|
+
"scripts": {
|
|
13
|
+
"build": "tsc",
|
|
14
|
+
"prepare": "npm run build",
|
|
15
|
+
"start": "node build/index.js",
|
|
16
|
+
"inspect": "npx @modelcontextprotocol/inspector build/index.js"
|
|
17
|
+
},
|
|
18
|
+
"keywords": [
|
|
19
|
+
"mcp",
|
|
20
|
+
"waitlist",
|
|
21
|
+
"waitlister",
|
|
22
|
+
"model-context-protocol",
|
|
23
|
+
"ai",
|
|
24
|
+
"claude",
|
|
25
|
+
"cursor"
|
|
26
|
+
],
|
|
27
|
+
"author": "Waitlister",
|
|
28
|
+
"license": "MIT",
|
|
29
|
+
"homepage": "https://waitlister.me",
|
|
30
|
+
"repository": {
|
|
31
|
+
"type": "git",
|
|
32
|
+
"url": "https://github.com/waitlister/waitlister-mcp"
|
|
33
|
+
},
|
|
34
|
+
"dependencies": {
|
|
35
|
+
"@modelcontextprotocol/sdk": "^1.12.1",
|
|
36
|
+
"zod": "^3.24.0"
|
|
37
|
+
},
|
|
38
|
+
"devDependencies": {
|
|
39
|
+
"@types/node": "^22.0.0",
|
|
40
|
+
"typescript": "^5.7.0"
|
|
41
|
+
}
|
|
42
|
+
}
|