mcp-http-webhook 1.0.24 → 1.0.26
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/BLOG_POST.md +738 -0
- package/dist/server.js +2 -2
- package/dist/server.js.map +1 -1
- package/dist/subscriptions/SubscriptionManager.d.ts +6 -0
- package/dist/subscriptions/SubscriptionManager.d.ts.map +1 -1
- package/dist/subscriptions/SubscriptionManager.js +35 -0
- package/dist/subscriptions/SubscriptionManager.js.map +1 -1
- package/package.json +1 -1
- package/src/server.ts +2 -2
- package/src/subscriptions/SubscriptionManager.ts +40 -0
package/BLOG_POST.md
ADDED
|
@@ -0,0 +1,738 @@
|
|
|
1
|
+
# Building Production-Ready MCP Servers That Actually Scale: Our HTTP + Webhook Approach
|
|
2
|
+
|
|
3
|
+
*How we reimagined the Model Context Protocol for enterprise deployments*
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## The Problem with Standard MCP
|
|
8
|
+
|
|
9
|
+
The [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) is transforming how AI agents interact with external systems. It provides a standardized way for LLMs to access tools, read resources, and receive real-time updates. But there's a catch.
|
|
10
|
+
|
|
11
|
+
The standard MCP transport relies on **Server-Sent Events (SSE)** or **stdio** for communication. While these work great for desktop applications like Claude Desktop or single-user development tools, they create significant challenges at scale:
|
|
12
|
+
|
|
13
|
+
1. **Persistent connections don't scale** - Each client maintains a long-lived SSE connection, consuming server resources
|
|
14
|
+
2. **No horizontal scaling** - Connection state is tied to a specific server instance
|
|
15
|
+
3. **Load balancer headaches** - Sticky sessions become mandatory, defeating the purpose of load balancing
|
|
16
|
+
4. **Third-party integration gap** - Services like GitHub, Slack, and MongoDB use webhooks, not SSE
|
|
17
|
+
|
|
18
|
+
We needed something different. We needed MCP servers that could:
|
|
19
|
+
- Scale horizontally with zero connection state
|
|
20
|
+
- Integrate natively with third-party webhook providers
|
|
21
|
+
- Deploy to Kubernetes with trivial multi-replica configurations
|
|
22
|
+
- Maintain full MCP protocol compatibility
|
|
23
|
+
|
|
24
|
+
So we built **`mcp-http-webhook`** - and published it to npm.
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Our Approach: HTTP + Webhooks
|
|
29
|
+
|
|
30
|
+
The core insight is simple: **replace persistent connections with stateless HTTP requests and webhook callbacks**.
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
Standard MCP:
|
|
34
|
+
Client ←──SSE Connection──→ Server (persistent, stateful)
|
|
35
|
+
|
|
36
|
+
Our Approach:
|
|
37
|
+
Client ──HTTP POST──→ Server ──Response──→ Client (stateless)
|
|
38
|
+
Third-Party ──Webhook──→ Server ──Webhook──→ Client (event-driven)
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### How It Works
|
|
42
|
+
|
|
43
|
+
**For Tools and Resources:**
|
|
44
|
+
Clients make standard HTTP POST requests to call tools or read resources. No connection to maintain.
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
# Call a tool
|
|
48
|
+
curl -X POST https://mcp.example.com/mcp \
|
|
49
|
+
-H "Content-Type: application/json" \
|
|
50
|
+
-d '{
|
|
51
|
+
"jsonrpc": "2.0",
|
|
52
|
+
"method": "tools/call",
|
|
53
|
+
"params": {
|
|
54
|
+
"name": "find_documents",
|
|
55
|
+
"arguments": { "collection": "users", "filter": {} }
|
|
56
|
+
}
|
|
57
|
+
}'
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
**For Subscriptions (The Magic Part):**
|
|
61
|
+
Instead of the server pushing updates through SSE, clients provide a webhook URL when subscribing. Updates flow through webhooks.
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
1. Client subscribes, providing their webhook URL
|
|
65
|
+
2. Server registers with third-party service (e.g., GitHub, MongoDB)
|
|
66
|
+
3. Third-party sends events to our server's webhook endpoint
|
|
67
|
+
4. Our server processes and forwards to client's webhook URL
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
This architecture means:
|
|
71
|
+
- **Zero connection state** - Any server instance can handle any request
|
|
72
|
+
- **Native third-party integration** - GitHub webhooks, MongoDB change streams, Slack events all fit naturally
|
|
73
|
+
- **Trivial scaling** - Add more pods, point load balancer, done
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## The Library: `mcp-http-webhook`
|
|
78
|
+
|
|
79
|
+
We packaged this approach into a production-ready TypeScript library. Here's what makes it special:
|
|
80
|
+
|
|
81
|
+
### Built on the Official MCP SDK
|
|
82
|
+
|
|
83
|
+
We don't reinvent the protocol. We use `@modelcontextprotocol/sdk` under the hood, ensuring full compatibility with MCP clients and tools like MCP Inspector.
|
|
84
|
+
|
|
85
|
+
```typescript
|
|
86
|
+
import { createMCPServer } from 'mcp-http-webhook';
|
|
87
|
+
import { RedisStore } from 'mcp-http-webhook/stores';
|
|
88
|
+
|
|
89
|
+
const server = createMCPServer({
|
|
90
|
+
name: 'my-mcp-server',
|
|
91
|
+
version: '1.0.0',
|
|
92
|
+
publicUrl: 'https://mcp.example.com',
|
|
93
|
+
store: new RedisStore(process.env.REDIS_URL),
|
|
94
|
+
|
|
95
|
+
tools: [...],
|
|
96
|
+
resources: [...],
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
await server.start();
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### External State Storage
|
|
103
|
+
|
|
104
|
+
Subscription data lives in Redis (or any key-value store you implement). This is what enables horizontal scaling - any server instance can look up any subscription.
|
|
105
|
+
|
|
106
|
+
```typescript
|
|
107
|
+
interface KeyValueStore {
|
|
108
|
+
get(key: string): Promise<string | null>;
|
|
109
|
+
set(key: string, value: string, ttl?: number): Promise<void>;
|
|
110
|
+
delete(key: string): Promise<void>;
|
|
111
|
+
scan?(pattern: string): Promise<string[]>;
|
|
112
|
+
}
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### First-Class Webhook Support
|
|
116
|
+
|
|
117
|
+
Resources can define subscription handlers that integrate with any third-party webhook provider:
|
|
118
|
+
|
|
119
|
+
```typescript
|
|
120
|
+
resources: [{
|
|
121
|
+
uri: 'github://repo/{owner}/{repo}/issues',
|
|
122
|
+
name: 'GitHub Issues',
|
|
123
|
+
|
|
124
|
+
subscription: {
|
|
125
|
+
// Called when a client subscribes
|
|
126
|
+
onSubscribe: async (uri, subscriptionId, thirdPartyWebhookUrl, context) => {
|
|
127
|
+
// Register webhook with GitHub pointing to thirdPartyWebhookUrl
|
|
128
|
+
const webhook = await octokit.repos.createWebhook({
|
|
129
|
+
owner, repo,
|
|
130
|
+
config: { url: thirdPartyWebhookUrl }
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
return { thirdPartyWebhookId: webhook.id };
|
|
134
|
+
},
|
|
135
|
+
|
|
136
|
+
// Called when GitHub sends us a webhook
|
|
137
|
+
onWebhook: async (subscriptionId, payload, headers) => {
|
|
138
|
+
return {
|
|
139
|
+
resourceUri: `github://repo/${owner}/${repo}/issues`,
|
|
140
|
+
changeType: payload.action === 'opened' ? 'created' : 'updated',
|
|
141
|
+
data: payload.issue
|
|
142
|
+
};
|
|
143
|
+
},
|
|
144
|
+
|
|
145
|
+
// Called when client unsubscribes
|
|
146
|
+
onUnsubscribe: async (uri, subscriptionId, storedData, context) => {
|
|
147
|
+
await octokit.repos.deleteWebhook({ hook_id: storedData.thirdPartyWebhookId });
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}]
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### Production Hardened
|
|
154
|
+
|
|
155
|
+
- **Automatic retry with exponential backoff** for webhook delivery
|
|
156
|
+
- **Signature verification** for incoming and outgoing webhooks (HMAC SHA-256)
|
|
157
|
+
- **Health check endpoints** (`/health`, `/ready`)
|
|
158
|
+
- **Prometheus metrics** integration
|
|
159
|
+
- **Graceful shutdown** handling
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## Real-World Example: MongoDB MCP Server
|
|
164
|
+
|
|
165
|
+
Let's look at how we built a production MongoDB MCP server using this library. This server:
|
|
166
|
+
- Exposes MongoDB operations as MCP tools
|
|
167
|
+
- Lists collections as MCP resources
|
|
168
|
+
- Provides real-time updates via MongoDB change streams
|
|
169
|
+
- Falls back to polling when change streams aren't available
|
|
170
|
+
|
|
171
|
+
### Architecture Overview
|
|
172
|
+
|
|
173
|
+
```
|
|
174
|
+
┌─────────────────────────────────────────────────────────┐
|
|
175
|
+
│ MongoDB MCP Server │
|
|
176
|
+
├─────────────────────────────────────────────────────────┤
|
|
177
|
+
│ Tools: find, insert, update, delete, aggregate │
|
|
178
|
+
│ Resources: Collections with schema inference │
|
|
179
|
+
│ Subscriptions: Change streams + polling fallback │
|
|
180
|
+
├─────────────────────────────────────────────────────────┤
|
|
181
|
+
│ mcp-http-webhook │ MongoManager │ ChangeTracker │
|
|
182
|
+
├─────────────────────────────────────────────────────────┤
|
|
183
|
+
│ Redis Store (subscriptions, credentials) │
|
|
184
|
+
└─────────────────────────────────────────────────────────┘
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
### Defining Tools
|
|
188
|
+
|
|
189
|
+
MongoDB operations become MCP tools with JSON Schema validation:
|
|
190
|
+
|
|
191
|
+
```typescript
|
|
192
|
+
tools: [
|
|
193
|
+
{
|
|
194
|
+
name: 'find_documents',
|
|
195
|
+
description: 'Find documents in a collection using filter, projection, and sorting.',
|
|
196
|
+
inputSchema: {
|
|
197
|
+
type: 'object',
|
|
198
|
+
properties: {
|
|
199
|
+
collection: { type: 'string' },
|
|
200
|
+
filter: { type: 'object', default: {} },
|
|
201
|
+
projection: { type: 'object' },
|
|
202
|
+
sort: { type: 'object' },
|
|
203
|
+
limit: { type: 'number', default: 100 },
|
|
204
|
+
},
|
|
205
|
+
required: ['collection'],
|
|
206
|
+
},
|
|
207
|
+
handler: async (args, context) => {
|
|
208
|
+
const credentials = await getCredentials(context.userId);
|
|
209
|
+
const documents = await mongoManager.findDocuments(
|
|
210
|
+
credentials,
|
|
211
|
+
args.database,
|
|
212
|
+
args.collection,
|
|
213
|
+
args.filter,
|
|
214
|
+
{ projection: args.projection, sort: args.sort, limit: args.limit }
|
|
215
|
+
);
|
|
216
|
+
|
|
217
|
+
return { documents: sanitizeDocuments(documents) };
|
|
218
|
+
},
|
|
219
|
+
},
|
|
220
|
+
// insert_documents, update_documents, delete_documents, aggregate_documents...
|
|
221
|
+
]
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
### Defining Resources with Pagination
|
|
225
|
+
|
|
226
|
+
Collections are exposed as resources with built-in pagination:
|
|
227
|
+
|
|
228
|
+
```typescript
|
|
229
|
+
resources: [
|
|
230
|
+
{
|
|
231
|
+
uri: 'mongodb://{connection}/collection/{database}/{collection}',
|
|
232
|
+
name: 'MongoDB Collection',
|
|
233
|
+
mimeType: 'application/json',
|
|
234
|
+
|
|
235
|
+
// List all collections across all connections
|
|
236
|
+
list: async (context, options) => {
|
|
237
|
+
const connections = await listConnections(context.userId);
|
|
238
|
+
const resources = [];
|
|
239
|
+
|
|
240
|
+
for (const conn of connections) {
|
|
241
|
+
const collections = await mongoManager.listCollections(conn.credentials);
|
|
242
|
+
for (const coll of collections) {
|
|
243
|
+
resources.push({
|
|
244
|
+
uri: buildResourceUri(conn.name, conn.database, coll.name),
|
|
245
|
+
name: `${conn.name}.${coll.name}`,
|
|
246
|
+
metadata: await buildCollectionMetadata(coll),
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
// Apply pagination
|
|
252
|
+
const page = options?.page ?? 1;
|
|
253
|
+
const limit = options?.limit ?? 100;
|
|
254
|
+
const offset = (page - 1) * limit;
|
|
255
|
+
|
|
256
|
+
return {
|
|
257
|
+
resources: resources.slice(offset, offset + limit),
|
|
258
|
+
nextCursor: offset + limit < resources.length ? String(page + 1) : undefined,
|
|
259
|
+
pagination: { page, limit, total: resources.length, hasMore: offset + limit < resources.length }
|
|
260
|
+
};
|
|
261
|
+
},
|
|
262
|
+
|
|
263
|
+
// Read collection data
|
|
264
|
+
read: async (uri, context, options) => {
|
|
265
|
+
const { connection, database, collection } = parseUri(uri);
|
|
266
|
+
const page = options?.pagination?.page ?? 1;
|
|
267
|
+
const limit = options?.pagination?.limit ?? 100;
|
|
268
|
+
|
|
269
|
+
const documents = await mongoManager.findDocuments(
|
|
270
|
+
credentials, database, collection, {},
|
|
271
|
+
{ limit, skip: (page - 1) * limit }
|
|
272
|
+
);
|
|
273
|
+
|
|
274
|
+
return {
|
|
275
|
+
contents: { data: documents.map(convertToRow), mimeType: 'application/json' },
|
|
276
|
+
nextCursorUrl: hasMore ? `${uri}/page/${page + 1}` : undefined,
|
|
277
|
+
pagination: { page, limit, total, hasMore }
|
|
278
|
+
};
|
|
279
|
+
},
|
|
280
|
+
}
|
|
281
|
+
]
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
### Change Stream Subscriptions
|
|
285
|
+
|
|
286
|
+
The real power comes from subscriptions. We use MongoDB change streams when available, with polling fallback:
|
|
287
|
+
|
|
288
|
+
```typescript
|
|
289
|
+
subscription: {
|
|
290
|
+
onSubscribe: async (uri, subscriptionId, webhookUrl, context) => {
|
|
291
|
+
const { database, collection } = parseUri(uri);
|
|
292
|
+
const credentials = await getCredentials(context.userId);
|
|
293
|
+
|
|
294
|
+
// Start tracking changes
|
|
295
|
+
await changeTracker.startTracking(
|
|
296
|
+
subscriptionId,
|
|
297
|
+
credentials,
|
|
298
|
+
database,
|
|
299
|
+
collection,
|
|
300
|
+
webhookUrl,
|
|
301
|
+
uri
|
|
302
|
+
);
|
|
303
|
+
|
|
304
|
+
return { thirdPartyWebhookId: subscriptionId };
|
|
305
|
+
},
|
|
306
|
+
|
|
307
|
+
onUnsubscribe: async (uri, subscriptionId) => {
|
|
308
|
+
await changeTracker.stopTracking(subscriptionId);
|
|
309
|
+
},
|
|
310
|
+
|
|
311
|
+
onWebhook: async (subscriptionId, payload, headers) => {
|
|
312
|
+
// Process incoming change events
|
|
313
|
+
return {
|
|
314
|
+
resourceUri: payload.resourceUri,
|
|
315
|
+
changeType: payload.changeType,
|
|
316
|
+
data: { rows: payload.rows, changes: payload.changes }
|
|
317
|
+
};
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
The `ChangeTracker` class handles the complexity:
|
|
323
|
+
|
|
324
|
+
```typescript
|
|
325
|
+
class ChangeTracker {
|
|
326
|
+
async startTracking(subscriptionId, credentials, database, collection, webhookUrl) {
|
|
327
|
+
try {
|
|
328
|
+
// Try change streams first
|
|
329
|
+
const changeStream = await mongoManager.watchCollection(credentials, collection);
|
|
330
|
+
|
|
331
|
+
changeStream.on('change', async (change) => {
|
|
332
|
+
// Convert MongoDB change event to webhook payload
|
|
333
|
+
await sendWebhook(webhookUrl, {
|
|
334
|
+
resourceUri: buildDocumentUri(change.documentKey._id),
|
|
335
|
+
changeType: change.operationType,
|
|
336
|
+
rows: [change.fullDocument]
|
|
337
|
+
});
|
|
338
|
+
});
|
|
339
|
+
|
|
340
|
+
changeStream.on('error', () => this.startFallback(/*...*/));
|
|
341
|
+
} catch {
|
|
342
|
+
// Fall back to polling for non-replica set deployments
|
|
343
|
+
this.startFallback(subscriptionId, credentials, database, collection, webhookUrl);
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
private async startFallback(/*...*/) {
|
|
348
|
+
setInterval(async () => {
|
|
349
|
+
const newDocs = await mongoManager.findDocuments(
|
|
350
|
+
credentials, database, collection,
|
|
351
|
+
{ updatedAt: { $gt: lastTimestamp } }
|
|
352
|
+
);
|
|
353
|
+
|
|
354
|
+
if (newDocs.length > 0) {
|
|
355
|
+
for (const doc of newDocs) {
|
|
356
|
+
await sendWebhook(webhookUrl, {
|
|
357
|
+
resourceUri: buildDocumentUri(doc._id),
|
|
358
|
+
changeType: 'updated',
|
|
359
|
+
rows: [doc]
|
|
360
|
+
});
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
}, POLLING_INTERVAL);
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
### Credential Discovery
|
|
369
|
+
|
|
370
|
+
A unique feature: we expose a `.well-known/credentials` endpoint that describes what credentials the MCP server needs:
|
|
371
|
+
|
|
372
|
+
```typescript
|
|
373
|
+
credentials: [
|
|
374
|
+
{
|
|
375
|
+
name: 'mongo_uri',
|
|
376
|
+
description: 'MongoDB connection URI',
|
|
377
|
+
type: 'string',
|
|
378
|
+
required: false,
|
|
379
|
+
config: {
|
|
380
|
+
type: 'keyValue',
|
|
381
|
+
inject: [{ location: 'header', key: 'x-mongo-uri', value: '{{mongo_uri}}' }]
|
|
382
|
+
}
|
|
383
|
+
},
|
|
384
|
+
{
|
|
385
|
+
name: 'mongo_database',
|
|
386
|
+
description: 'Default database name',
|
|
387
|
+
type: 'string',
|
|
388
|
+
required: true,
|
|
389
|
+
config: {
|
|
390
|
+
type: 'keyValue',
|
|
391
|
+
inject: [{ location: 'header', key: 'x-mongo-database', value: '{{mongo_database}}' }]
|
|
392
|
+
}
|
|
393
|
+
},
|
|
394
|
+
// More credential fields...
|
|
395
|
+
]
|
|
396
|
+
```
|
|
397
|
+
|
|
398
|
+
This allows orchestration systems to automatically configure connections without hardcoded integrations.
|
|
399
|
+
|
|
400
|
+
---
|
|
401
|
+
|
|
402
|
+
## Building Your Own MCP with This Library
|
|
403
|
+
|
|
404
|
+
Ready to build your own production MCP server? Here's the step-by-step:
|
|
405
|
+
|
|
406
|
+
### 1. Install the Library
|
|
407
|
+
|
|
408
|
+
```bash
|
|
409
|
+
npm install mcp-http-webhook zod
|
|
410
|
+
npm install @modelcontextprotocol/sdk express # peer dependencies
|
|
411
|
+
npm install ioredis # for Redis store
|
|
412
|
+
```
|
|
413
|
+
|
|
414
|
+
### 2. Set Up Basic Server
|
|
415
|
+
|
|
416
|
+
```typescript
|
|
417
|
+
import { createMCPServer } from 'mcp-http-webhook';
|
|
418
|
+
import { RedisStore } from 'mcp-http-webhook/stores';
|
|
419
|
+
import Redis from 'ioredis';
|
|
420
|
+
|
|
421
|
+
const redis = new Redis(process.env.REDIS_URL);
|
|
422
|
+
const store = new RedisStore(redis);
|
|
423
|
+
|
|
424
|
+
const server = createMCPServer({
|
|
425
|
+
name: 'my-custom-mcp',
|
|
426
|
+
version: '1.0.0',
|
|
427
|
+
publicUrl: process.env.PUBLIC_URL, // Your public HTTPS URL
|
|
428
|
+
port: 3000,
|
|
429
|
+
store,
|
|
430
|
+
|
|
431
|
+
// Optional: Add authentication
|
|
432
|
+
authenticate: async (req) => {
|
|
433
|
+
const token = req.headers.authorization?.replace('Bearer ', '');
|
|
434
|
+
const user = await validateToken(token);
|
|
435
|
+
return { userId: user.id };
|
|
436
|
+
},
|
|
437
|
+
|
|
438
|
+
tools: [],
|
|
439
|
+
resources: [],
|
|
440
|
+
});
|
|
441
|
+
|
|
442
|
+
await server.start();
|
|
443
|
+
```
|
|
444
|
+
|
|
445
|
+
### 3. Add Tools
|
|
446
|
+
|
|
447
|
+
```typescript
|
|
448
|
+
tools: [
|
|
449
|
+
{
|
|
450
|
+
name: 'my_tool',
|
|
451
|
+
description: 'Does something useful',
|
|
452
|
+
inputSchema: {
|
|
453
|
+
type: 'object',
|
|
454
|
+
properties: {
|
|
455
|
+
input: { type: 'string', description: 'The input value' }
|
|
456
|
+
},
|
|
457
|
+
required: ['input']
|
|
458
|
+
},
|
|
459
|
+
handler: async (args, context) => {
|
|
460
|
+
// context.userId available from authentication
|
|
461
|
+
const result = await doSomething(args.input);
|
|
462
|
+
return { result };
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
]
|
|
466
|
+
```
|
|
467
|
+
|
|
468
|
+
### 4. Add Resources with Subscriptions
|
|
469
|
+
|
|
470
|
+
```typescript
|
|
471
|
+
resources: [
|
|
472
|
+
{
|
|
473
|
+
uri: 'myservice://{tenant}/data/{id}',
|
|
474
|
+
name: 'My Data Resource',
|
|
475
|
+
|
|
476
|
+
list: async (context) => {
|
|
477
|
+
const items = await getItems(context.userId);
|
|
478
|
+
return items.map(item => ({
|
|
479
|
+
uri: `myservice://${item.tenant}/data/${item.id}`,
|
|
480
|
+
name: item.name
|
|
481
|
+
}));
|
|
482
|
+
},
|
|
483
|
+
|
|
484
|
+
read: async (uri, context) => {
|
|
485
|
+
const { id } = parseUri(uri);
|
|
486
|
+
const data = await getData(id);
|
|
487
|
+
return { contents: { text: JSON.stringify(data) } };
|
|
488
|
+
},
|
|
489
|
+
|
|
490
|
+
// Add subscriptions if your service has webhooks or events
|
|
491
|
+
subscription: {
|
|
492
|
+
onSubscribe: async (uri, subscriptionId, webhookUrl, context) => {
|
|
493
|
+
// Register with your service's webhook system
|
|
494
|
+
const hookId = await registerWebhook(webhookUrl);
|
|
495
|
+
return { thirdPartyWebhookId: hookId };
|
|
496
|
+
},
|
|
497
|
+
|
|
498
|
+
onWebhook: async (subscriptionId, payload, headers) => {
|
|
499
|
+
return {
|
|
500
|
+
resourceUri: payload.resourceUri,
|
|
501
|
+
changeType: payload.type,
|
|
502
|
+
data: payload.data
|
|
503
|
+
};
|
|
504
|
+
},
|
|
505
|
+
|
|
506
|
+
onUnsubscribe: async (uri, subscriptionId, storedData) => {
|
|
507
|
+
await deleteWebhook(storedData.thirdPartyWebhookId);
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
]
|
|
512
|
+
```
|
|
513
|
+
|
|
514
|
+
### 5. Deploy
|
|
515
|
+
|
|
516
|
+
```yaml
|
|
517
|
+
# docker-compose.yml
|
|
518
|
+
services:
|
|
519
|
+
mcp-server:
|
|
520
|
+
build: .
|
|
521
|
+
ports:
|
|
522
|
+
- "3000:3000"
|
|
523
|
+
environment:
|
|
524
|
+
- PUBLIC_URL=https://mcp.example.com
|
|
525
|
+
- REDIS_URL=redis://redis:6379
|
|
526
|
+
depends_on:
|
|
527
|
+
- redis
|
|
528
|
+
deploy:
|
|
529
|
+
replicas: 3 # Scale horizontally!
|
|
530
|
+
|
|
531
|
+
redis:
|
|
532
|
+
image: redis:7-alpine
|
|
533
|
+
```
|
|
534
|
+
|
|
535
|
+
---
|
|
536
|
+
|
|
537
|
+
## Key Differentiators
|
|
538
|
+
|
|
539
|
+
| Feature | Standard MCP (SSE) | Our Approach (HTTP + Webhooks) |
|
|
540
|
+
|---------|-------------------|-------------------------------|
|
|
541
|
+
| **Scaling** | Requires sticky sessions | Stateless, trivial horizontal scaling |
|
|
542
|
+
| **Third-party integration** | Custom adapters needed | Native webhook support |
|
|
543
|
+
| **State management** | In-memory per instance | External store (Redis) |
|
|
544
|
+
| **Load balancing** | Complex | Simple round-robin |
|
|
545
|
+
| **Serverless deployment** | Difficult | Possible |
|
|
546
|
+
| **Protocol compatibility** | Full | Full (uses official SDK) |
|
|
547
|
+
|
|
548
|
+
---
|
|
549
|
+
|
|
550
|
+
## Serverless & Scale-to-Zero Deployment
|
|
551
|
+
|
|
552
|
+
One of the most compelling advantages of our stateless HTTP approach is native compatibility with serverless platforms. Since there's no persistent connection state, MCP servers built with `mcp-http-webhook` can deploy to environments that scale to zero—meaning you only pay for actual usage.
|
|
553
|
+
|
|
554
|
+
### AWS Lambda Deployment
|
|
555
|
+
|
|
556
|
+
AWS Lambda is ideal for MCP servers with variable traffic patterns:
|
|
557
|
+
|
|
558
|
+
```typescript
|
|
559
|
+
// lambda.ts
|
|
560
|
+
import { createMCPServer } from 'mcp-http-webhook';
|
|
561
|
+
import { DynamoDBStore } from 'mcp-http-webhook/stores';
|
|
562
|
+
import { APIGatewayProxyHandler } from 'aws-lambda';
|
|
563
|
+
|
|
564
|
+
const store = new DynamoDBStore(process.env.DYNAMODB_TABLE!);
|
|
565
|
+
|
|
566
|
+
const server = createMCPServer({
|
|
567
|
+
name: 'my-mcp-lambda',
|
|
568
|
+
version: '1.0.0',
|
|
569
|
+
publicUrl: process.env.API_GATEWAY_URL!,
|
|
570
|
+
store,
|
|
571
|
+
tools: [...],
|
|
572
|
+
resources: [...],
|
|
573
|
+
});
|
|
574
|
+
|
|
575
|
+
export const handler: APIGatewayProxyHandler = async (event) => {
|
|
576
|
+
return server.handleLambdaEvent(event);
|
|
577
|
+
};
|
|
578
|
+
```
|
|
579
|
+
|
|
580
|
+
**Benefits:**
|
|
581
|
+
- **Pay-per-invocation** - No cost when idle
|
|
582
|
+
- **Automatic scaling** - Handles traffic spikes without configuration
|
|
583
|
+
- **Managed infrastructure** - No servers to maintain
|
|
584
|
+
- **Global deployment** - Deploy to multiple regions with Lambda@Edge
|
|
585
|
+
|
|
586
|
+
### Kubernetes Knative (Scale-to-Zero)
|
|
587
|
+
|
|
588
|
+
For teams already on Kubernetes, [Knative Serving](https://knative.dev/) provides the same scale-to-zero benefits while staying in the K8s ecosystem:
|
|
589
|
+
|
|
590
|
+
```yaml
|
|
591
|
+
# knative-service.yaml
|
|
592
|
+
apiVersion: serving.knative.dev/v1
|
|
593
|
+
kind: Service
|
|
594
|
+
metadata:
|
|
595
|
+
name: mongodb-mcp
|
|
596
|
+
spec:
|
|
597
|
+
template:
|
|
598
|
+
metadata:
|
|
599
|
+
annotations:
|
|
600
|
+
# Scale to zero after 5 minutes of inactivity
|
|
601
|
+
autoscaling.knative.dev/scale-to-zero-grace-period: "5m"
|
|
602
|
+
# Allow up to 100 concurrent requests per pod
|
|
603
|
+
autoscaling.knative.dev/target: "100"
|
|
604
|
+
spec:
|
|
605
|
+
containerConcurrency: 100
|
|
606
|
+
containers:
|
|
607
|
+
- image: your-registry/mongodb-mcp:latest
|
|
608
|
+
ports:
|
|
609
|
+
- containerPort: 3000
|
|
610
|
+
env:
|
|
611
|
+
- name: REDIS_URL
|
|
612
|
+
valueFrom:
|
|
613
|
+
secretKeyRef:
|
|
614
|
+
name: mcp-secrets
|
|
615
|
+
key: redis-url
|
|
616
|
+
resources:
|
|
617
|
+
requests:
|
|
618
|
+
memory: "256Mi"
|
|
619
|
+
cpu: "100m"
|
|
620
|
+
limits:
|
|
621
|
+
memory: "512Mi"
|
|
622
|
+
cpu: "500m"
|
|
623
|
+
```
|
|
624
|
+
|
|
625
|
+
**Knative advantages:**
|
|
626
|
+
- **Cold start optimization** - Knative keeps pods warm based on traffic patterns
|
|
627
|
+
- **Gradual rollouts** - Built-in traffic splitting for canary deployments
|
|
628
|
+
- **Scale-to-zero** - Pods terminate during inactivity, reducing costs by 60-80%
|
|
629
|
+
- **Kubernetes native** - Use existing observability, security, and networking
|
|
630
|
+
|
|
631
|
+
### Architecture for 1000s of Connectors
|
|
632
|
+
|
|
633
|
+
With scale-to-zero infrastructure, deploying thousands of MCP connectors becomes economically viable:
|
|
634
|
+
|
|
635
|
+
```
|
|
636
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
637
|
+
│ Load Balancer / API Gateway │
|
|
638
|
+
├─────────────────────────────────────────────────────────────────┤
|
|
639
|
+
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
|
|
640
|
+
│ │ MongoDB │ │ Postgres │ │ Salesforce│ │ SAP │ ...x1000 │
|
|
641
|
+
│ │ MCP │ │ MCP │ │ MCP │ │ MCP │ │
|
|
642
|
+
│ │(scaled=0)│ │(scaled=2)│ │(scaled=0)│ │(scaled=1)│ │
|
|
643
|
+
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
|
|
644
|
+
├─────────────────────────────────────────────────────────────────┤
|
|
645
|
+
│ Shared Redis / DynamoDB (Subscription State) │
|
|
646
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
647
|
+
```
|
|
648
|
+
|
|
649
|
+
**Cost model:**
|
|
650
|
+
- Traditional approach: 1000 connectors × 2 pods × $50/month = **$100,000/month**
|
|
651
|
+
- Scale-to-zero approach: Pay only for active connectors = **$5,000-15,000/month**
|
|
652
|
+
|
|
653
|
+
---
|
|
654
|
+
|
|
655
|
+
## Production at Scale: Kaman.ai
|
|
656
|
+
|
|
657
|
+
At [Kaman.ai](https://kaman.ai), we've put this architecture to the test. Our enterprise AI agent platform uses `mcp-http-webhook` to power data integrations across hundreds of customer deployments.
|
|
658
|
+
|
|
659
|
+
### Pre-Built Connectors
|
|
660
|
+
|
|
661
|
+
We've already built production-ready MCP connectors for the most common enterprise data sources:
|
|
662
|
+
|
|
663
|
+
**Databases:**
|
|
664
|
+
- PostgreSQL, MySQL, Microsoft SQL Server
|
|
665
|
+
- MongoDB, DynamoDB
|
|
666
|
+
- SAP HANA, Oracle
|
|
667
|
+
- Snowflake, BigQuery, Redshift
|
|
668
|
+
|
|
669
|
+
**File Systems & Storage:**
|
|
670
|
+
- Google Drive, OneDrive, SharePoint
|
|
671
|
+
- AWS S3, Azure Blob Storage
|
|
672
|
+
- Dropbox, Box
|
|
673
|
+
- Local/network file systems (SFTP, SMB)
|
|
674
|
+
|
|
675
|
+
**Business Applications:**
|
|
676
|
+
- Salesforce (Sales Cloud, Service Cloud)
|
|
677
|
+
- ServiceNow (ITSM, CMDB)
|
|
678
|
+
- HubSpot, Zendesk
|
|
679
|
+
- SAP ERP, SAP S/4HANA
|
|
680
|
+
- Microsoft Dynamics 365
|
|
681
|
+
|
|
682
|
+
**Communication & Collaboration:**
|
|
683
|
+
- Gmail, Outlook/Exchange
|
|
684
|
+
- Slack, Microsoft Teams
|
|
685
|
+
- Google Calendar, Outlook Calendar
|
|
686
|
+
|
|
687
|
+
**Developer Tools:**
|
|
688
|
+
- GitHub, GitLab, Bitbucket
|
|
689
|
+
- Jira, Confluence
|
|
690
|
+
- Linear, Notion
|
|
691
|
+
|
|
692
|
+
### Enterprise-Grade Features
|
|
693
|
+
|
|
694
|
+
Every Kaman connector includes:
|
|
695
|
+
|
|
696
|
+
- **Multi-tenant isolation** - Credentials and data strictly separated per organization
|
|
697
|
+
- **OAuth 2.0 / OIDC** - Secure authentication without storing passwords
|
|
698
|
+
- **Incremental sync** - Only fetch changed data, reducing API costs
|
|
699
|
+
- **Schema mapping** - Transform source schemas to your data lake format
|
|
700
|
+
- **Data lineage** - OpenLineage integration for compliance and debugging
|
|
701
|
+
- **Rate limiting** - Respect API quotas with intelligent backoff
|
|
702
|
+
|
|
703
|
+
### Real Numbers
|
|
704
|
+
|
|
705
|
+
Our production deployment handles:
|
|
706
|
+
- **500+ active MCP connectors** across customer tenants
|
|
707
|
+
- **10M+ tool invocations** per month
|
|
708
|
+
- **99.9% uptime** with zero persistent connection overhead
|
|
709
|
+
- **Cold start times** under 2 seconds (Knative) or 500ms (Lambda)
|
|
710
|
+
|
|
711
|
+
The scale-to-zero architecture means customers only pay for what they use—syncing a SharePoint folder once per hour costs a fraction of a cent, not $50/month for an always-on pod.
|
|
712
|
+
|
|
713
|
+
---
|
|
714
|
+
|
|
715
|
+
## What's Next
|
|
716
|
+
|
|
717
|
+
The `mcp-http-webhook` library is available on npm (package name: `mcp-http-webhook`). We're using it in production to power:
|
|
718
|
+
- MongoDB data integration
|
|
719
|
+
- PostgreSQL connectors
|
|
720
|
+
- Google Drive sync
|
|
721
|
+
- Slack channel integrations
|
|
722
|
+
- And more...
|
|
723
|
+
|
|
724
|
+
If you're building MCP servers that need to scale, integrate with webhooks, or deploy to Kubernetes - this approach might save you months of engineering effort.
|
|
725
|
+
|
|
726
|
+
---
|
|
727
|
+
|
|
728
|
+
## Get Started
|
|
729
|
+
|
|
730
|
+
```bash
|
|
731
|
+
npm install mcp-http-webhook
|
|
732
|
+
```
|
|
733
|
+
|
|
734
|
+
Check out the [examples](./examples) directory for complete implementations, and the [Spec.md](./Spec.md) for detailed API documentation.
|
|
735
|
+
|
|
736
|
+
---
|
|
737
|
+
|
|
738
|
+
*Questions? Found a bug? We'd love to hear from you. Open an issue or reach out to our team.*
|
package/dist/server.js
CHANGED
|
@@ -158,7 +158,7 @@ function createMCPServer(config) {
|
|
|
158
158
|
// Create Express app
|
|
159
159
|
const app = (0, express_1.default)();
|
|
160
160
|
// Middleware
|
|
161
|
-
app.use(express_1.default.json());
|
|
161
|
+
app.use(express_1.default.json({ limit: '50mb' }));
|
|
162
162
|
// allow cors
|
|
163
163
|
app.use((0, cors_1.default)());
|
|
164
164
|
// Custom middleware
|
|
@@ -241,7 +241,7 @@ function createMCPServer(config) {
|
|
|
241
241
|
// The MCP SDK doesn't pass cursor to the list callback - it's handled internally
|
|
242
242
|
// by ResourceTemplate. We need to handle pagination in the MongoDB MCP itself.
|
|
243
243
|
// For now, just fetch all resources without cursor support at this level.
|
|
244
|
-
const cursor =
|
|
244
|
+
const cursor = extra?._meta?.cursor;
|
|
245
245
|
// Build pagination options from cursor
|
|
246
246
|
const options = {};
|
|
247
247
|
if (cursor) {
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,6 +29,12 @@ export declare class SubscriptionManager {
|
|
|
29
29
|
* List subscriptions for a user
|
|
30
30
|
*/
|
|
31
31
|
listSubscriptions(userId: string): Promise<StoredSubscription[]>;
|
|
32
|
+
/**
|
|
33
|
+
* Find existing subscription for a URI and user
|
|
34
|
+
*/
|
|
35
|
+
findSubscriptionByUri(uri: string, userId: string): Promise<(StoredSubscription & {
|
|
36
|
+
subscriptionId: string;
|
|
37
|
+
}) | null>;
|
|
32
38
|
/**
|
|
33
39
|
* Store subscription data
|
|
34
40
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SubscriptionManager.d.ts","sourceRoot":"","sources":["../../src/subscriptions/SubscriptionManager.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EACX,aAAa,EACb,MAAM,EACN,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,UAAU,CAAC;AAGlB,qBAAa,mBAAmB;IAE5B,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,MAAM,CAAC;gBAHP,KAAK,EAAE,aAAa,EACpB,SAAS,EAAE,kBAAkB,EAAE,EAC/B,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,YAAA;IAGzB;;OAEG;IACG,kBAAkB,CAAC,MAAM,EAAE;QAC/B,GAAG,EAAE,MAAM,CAAC;QACZ,iBAAiB,EAAE,MAAM,CAAC;QAC1B,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,OAAO,EAAE,WAAW,CAAC;KACtB,GAAG,OAAO,CAAC;QAAE,cAAc,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"SubscriptionManager.d.ts","sourceRoot":"","sources":["../../src/subscriptions/SubscriptionManager.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EACX,aAAa,EACb,MAAM,EACN,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,UAAU,CAAC;AAGlB,qBAAa,mBAAmB;IAE5B,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,MAAM,CAAC;gBAHP,KAAK,EAAE,aAAa,EACpB,SAAS,EAAE,kBAAkB,EAAE,EAC/B,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,YAAA;IAGzB;;OAEG;IACG,kBAAkB,CAAC,MAAM,EAAE;QAC/B,GAAG,EAAE,MAAM,CAAC;QACZ,iBAAiB,EAAE,MAAM,CAAC;QAC1B,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,OAAO,EAAE,WAAW,CAAC;KACtB,GAAG,OAAO,CAAC;QAAE,cAAc,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IA8EvD;;OAEG;IACG,kBAAkB,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IA6CrF;;OAEG;IACG,eAAe,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAIjF;;OAEG;IACG,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAiBtE;;OAEG;IACG,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,kBAAkB,GAAG;QAAE,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI,CAAC;IAoB3H;;OAEG;YACW,iBAAiB;IAmB/B;;OAEG;YACW,gBAAgB;IAW9B;;OAEG;YACW,kBAAkB;IAehC;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAoB3B"}
|
|
@@ -23,6 +23,23 @@ class SubscriptionManager {
|
|
|
23
23
|
if (!resource.subscription) {
|
|
24
24
|
throw new errors_1.ValidationError(`Resource ${resource.name} does not support subscriptions`);
|
|
25
25
|
}
|
|
26
|
+
// Check for existing subscription for this URI and user - clean up if exists
|
|
27
|
+
const existingSubscription = await this.findSubscriptionByUri(uri, context.userId);
|
|
28
|
+
if (existingSubscription) {
|
|
29
|
+
this.logger?.info('Found existing subscription for URI, cleaning up first', {
|
|
30
|
+
existingSubscriptionId: existingSubscription.subscriptionId,
|
|
31
|
+
uri,
|
|
32
|
+
});
|
|
33
|
+
try {
|
|
34
|
+
await this.deleteSubscription(existingSubscription.subscriptionId, context);
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
this.logger?.warn('Failed to delete existing subscription, continuing anyway', {
|
|
38
|
+
existingSubscriptionId: existingSubscription.subscriptionId,
|
|
39
|
+
error: error instanceof Error ? error.message : String(error),
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
}
|
|
26
43
|
// Generate subscription ID
|
|
27
44
|
const subscriptionId = (0, utils_1.generateSubscriptionId)();
|
|
28
45
|
const thirdPartyWebhookUrl = (0, utils_1.generateWebhookUrl)(this.publicUrl, subscriptionId);
|
|
@@ -116,6 +133,24 @@ class SubscriptionManager {
|
|
|
116
133
|
const subscriptions = await Promise.all(subscriptionIds.map((id) => this.loadSubscription(id)));
|
|
117
134
|
return subscriptions.filter((s) => s !== null);
|
|
118
135
|
}
|
|
136
|
+
/**
|
|
137
|
+
* Find existing subscription for a URI and user
|
|
138
|
+
*/
|
|
139
|
+
async findSubscriptionByUri(uri, userId) {
|
|
140
|
+
const indexKey = `user:${userId}:subscriptions`;
|
|
141
|
+
const indexData = await this.store.get(indexKey);
|
|
142
|
+
if (!indexData) {
|
|
143
|
+
return null;
|
|
144
|
+
}
|
|
145
|
+
const subscriptionIds = JSON.parse(indexData);
|
|
146
|
+
for (const subscriptionId of subscriptionIds) {
|
|
147
|
+
const subscription = await this.loadSubscription(subscriptionId);
|
|
148
|
+
if (subscription && subscription.uri === uri) {
|
|
149
|
+
return { ...subscription, subscriptionId };
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
return null;
|
|
153
|
+
}
|
|
119
154
|
/**
|
|
120
155
|
* Store subscription data
|
|
121
156
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SubscriptionManager.js","sourceRoot":"","sources":["../../src/subscriptions/SubscriptionManager.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"SubscriptionManager.js","sourceRoot":"","sources":["../../src/subscriptions/SubscriptionManager.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/server.ts
CHANGED
|
@@ -184,7 +184,7 @@ export function createMCPServer(config: MCPServerConfig): MCPServer {
|
|
|
184
184
|
const app: Express = express();
|
|
185
185
|
|
|
186
186
|
// Middleware
|
|
187
|
-
app.use(express.json());
|
|
187
|
+
app.use(express.json({ limit: '50mb' }));
|
|
188
188
|
// allow cors
|
|
189
189
|
app.use(cors());
|
|
190
190
|
// Custom middleware
|
|
@@ -288,7 +288,7 @@ export function createMCPServer(config: MCPServerConfig): MCPServer {
|
|
|
288
288
|
// The MCP SDK doesn't pass cursor to the list callback - it's handled internally
|
|
289
289
|
// by ResourceTemplate. We need to handle pagination in the MongoDB MCP itself.
|
|
290
290
|
// For now, just fetch all resources without cursor support at this level.
|
|
291
|
-
const cursor =
|
|
291
|
+
const cursor = extra?._meta?.cursor;
|
|
292
292
|
|
|
293
293
|
// Build pagination options from cursor
|
|
294
294
|
const options: any = {};
|
|
@@ -37,6 +37,23 @@ export class SubscriptionManager {
|
|
|
37
37
|
throw new ValidationError(`Resource ${resource.name} does not support subscriptions`);
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
+
// Check for existing subscription for this URI and user - clean up if exists
|
|
41
|
+
const existingSubscription = await this.findSubscriptionByUri(uri, context.userId);
|
|
42
|
+
if (existingSubscription) {
|
|
43
|
+
this.logger?.info('Found existing subscription for URI, cleaning up first', {
|
|
44
|
+
existingSubscriptionId: existingSubscription.subscriptionId,
|
|
45
|
+
uri,
|
|
46
|
+
});
|
|
47
|
+
try {
|
|
48
|
+
await this.deleteSubscription(existingSubscription.subscriptionId, context);
|
|
49
|
+
} catch (error) {
|
|
50
|
+
this.logger?.warn('Failed to delete existing subscription, continuing anyway', {
|
|
51
|
+
existingSubscriptionId: existingSubscription.subscriptionId,
|
|
52
|
+
error: error instanceof Error ? error.message : String(error),
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
40
57
|
// Generate subscription ID
|
|
41
58
|
const subscriptionId = generateSubscriptionId();
|
|
42
59
|
const thirdPartyWebhookUrl = generateWebhookUrl(this.publicUrl, subscriptionId);
|
|
@@ -160,6 +177,29 @@ export class SubscriptionManager {
|
|
|
160
177
|
return subscriptions.filter((s): s is StoredSubscription => s !== null);
|
|
161
178
|
}
|
|
162
179
|
|
|
180
|
+
/**
|
|
181
|
+
* Find existing subscription for a URI and user
|
|
182
|
+
*/
|
|
183
|
+
async findSubscriptionByUri(uri: string, userId: string): Promise<(StoredSubscription & { subscriptionId: string }) | null> {
|
|
184
|
+
const indexKey = `user:${userId}:subscriptions`;
|
|
185
|
+
const indexData = await this.store.get(indexKey);
|
|
186
|
+
|
|
187
|
+
if (!indexData) {
|
|
188
|
+
return null;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
const subscriptionIds: string[] = JSON.parse(indexData);
|
|
192
|
+
|
|
193
|
+
for (const subscriptionId of subscriptionIds) {
|
|
194
|
+
const subscription = await this.loadSubscription(subscriptionId);
|
|
195
|
+
if (subscription && subscription.uri === uri) {
|
|
196
|
+
return { ...subscription, subscriptionId };
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
return null;
|
|
201
|
+
}
|
|
202
|
+
|
|
163
203
|
/**
|
|
164
204
|
* Store subscription data
|
|
165
205
|
*/
|