@revealui/mcp 0.1.11 → 0.3.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/LICENSE +104 -17
- package/README.md +18 -13
- package/dist/adapters/db.d.ts +16 -7
- package/dist/adapters/db.d.ts.map +1 -1
- package/dist/adapters/db.js +6 -24
- package/dist/adapters/db.js.map +1 -1
- package/dist/client.d.ts +307 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +492 -0
- package/dist/client.js.map +1 -0
- package/dist/hypervisor.d.ts +18 -0
- package/dist/hypervisor.d.ts.map +1 -1
- package/dist/hypervisor.js +83 -4
- package/dist/hypervisor.js.map +1 -1
- package/dist/index.d.ts +7 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -19
- package/dist/index.js.map +1 -1
- package/dist/metering.d.ts +59 -0
- package/dist/metering.d.ts.map +1 -0
- package/dist/metering.js +25 -0
- package/dist/metering.js.map +1 -0
- package/dist/oauth.d.ts +171 -0
- package/dist/oauth.d.ts.map +1 -0
- package/dist/oauth.js +292 -0
- package/dist/oauth.js.map +1 -0
- package/dist/remote-client.d.ts +86 -0
- package/dist/remote-client.d.ts.map +1 -0
- package/dist/remote-client.js +130 -0
- package/dist/remote-client.js.map +1 -0
- package/dist/servers/adapter.d.ts.map +1 -1
- package/dist/servers/adapter.js +4 -0
- package/dist/servers/adapter.js.map +1 -1
- package/dist/servers/contracts.d.ts +23 -0
- package/dist/servers/contracts.d.ts.map +1 -0
- package/dist/servers/contracts.js +34 -0
- package/dist/servers/contracts.js.map +1 -0
- package/dist/servers/factories/contracts.d.ts +7272 -0
- package/dist/servers/factories/contracts.d.ts.map +1 -0
- package/dist/servers/factories/contracts.js +646 -0
- package/dist/servers/factories/contracts.js.map +1 -0
- package/dist/servers/factories/revealui-content.d.ts +85 -0
- package/dist/servers/factories/revealui-content.d.ts.map +1 -0
- package/dist/servers/factories/revealui-content.js +471 -0
- package/dist/servers/factories/revealui-content.js.map +1 -0
- package/dist/servers/neon.d.ts.map +1 -1
- package/dist/servers/neon.js +1 -5
- package/dist/servers/neon.js.map +1 -1
- package/dist/servers/next-devtools.d.ts.map +1 -1
- package/dist/servers/next-devtools.js +0 -4
- package/dist/servers/next-devtools.js.map +1 -1
- package/dist/servers/playwright.d.ts.map +1 -1
- package/dist/servers/playwright.js +0 -4
- package/dist/servers/playwright.js.map +1 -1
- package/dist/servers/revealui-content.d.ts +12 -18
- package/dist/servers/revealui-content.d.ts.map +1 -1
- package/dist/servers/revealui-content.js +14 -224
- package/dist/servers/revealui-content.js.map +1 -1
- package/dist/servers/revealui-email.d.ts.map +1 -1
- package/dist/servers/revealui-email.js +0 -6
- package/dist/servers/revealui-email.js.map +1 -1
- package/dist/servers/revealui-memory.d.ts +24 -0
- package/dist/servers/revealui-memory.d.ts.map +1 -0
- package/dist/servers/revealui-memory.js +335 -0
- package/dist/servers/revealui-memory.js.map +1 -0
- package/dist/servers/revealui-stripe.d.ts.map +1 -1
- package/dist/servers/revealui-stripe.js +0 -4
- package/dist/servers/revealui-stripe.js.map +1 -1
- package/dist/servers/stripe.d.ts.map +1 -1
- package/dist/servers/stripe.js +1 -5
- package/dist/servers/stripe.js.map +1 -1
- package/dist/servers/supabase.d.ts.map +1 -1
- package/dist/servers/supabase.js +0 -4
- package/dist/servers/supabase.js.map +1 -1
- package/dist/servers/vercel.d.ts.map +1 -1
- package/dist/servers/vercel.js +1 -5
- package/dist/servers/vercel.js.map +1 -1
- package/dist/streamable-http.d.ts +72 -0
- package/dist/streamable-http.d.ts.map +1 -0
- package/dist/streamable-http.js +120 -0
- package/dist/streamable-http.js.map +1 -0
- package/package.json +30 -12
- package/dist/stores/postgres-idempotency.d.ts +0 -32
- package/dist/stores/postgres-idempotency.d.ts.map +0 -1
- package/dist/stores/postgres-idempotency.js +0 -63
- package/dist/stores/postgres-idempotency.js.map +0 -1
|
@@ -0,0 +1,335 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* RevealUI Memory MCP Server
|
|
4
|
+
*
|
|
5
|
+
* Model Context Protocol server that exposes multi-agent shared memory tools.
|
|
6
|
+
* Gives any MCP-compatible agent (Claude Desktop, Cursor, Forge customers)
|
|
7
|
+
* access to shared facts, Yjs scratchpads, and reconciled memories.
|
|
8
|
+
*
|
|
9
|
+
* Environment:
|
|
10
|
+
* REVEALUI_API_URL - Admin API base URL (e.g. https://admin.revealui.com)
|
|
11
|
+
* REVEALUI_API_TOKEN - Device token for authenticated API calls
|
|
12
|
+
*
|
|
13
|
+
* Tools:
|
|
14
|
+
* memory_publish_fact - Publish a discovery to the shared fact log
|
|
15
|
+
* memory_list_facts - List facts for a coordination session
|
|
16
|
+
* memory_create_scratchpad - Create a new shared Yjs scratchpad
|
|
17
|
+
* memory_patch_scratchpad - Apply a structured patch to a scratchpad
|
|
18
|
+
* memory_read_scratchpad - Read current scratchpad content
|
|
19
|
+
* memory_share - Share a memory with all agents in a session
|
|
20
|
+
* memory_list_shared - List shared/reconciled memories for a session
|
|
21
|
+
* memory_reconcile - Trigger LLM reconciliation of shared facts
|
|
22
|
+
*/
|
|
23
|
+
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
24
|
+
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
25
|
+
import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
|
|
26
|
+
import { logger } from '@revealui/core/observability/logger';
|
|
27
|
+
// ---------------------------------------------------------------------------
|
|
28
|
+
// Credential overrides (set by Hypervisor before tool invocations)
|
|
29
|
+
// ---------------------------------------------------------------------------
|
|
30
|
+
let _credentialOverrides = {};
|
|
31
|
+
export function setCredentials(creds) {
|
|
32
|
+
_credentialOverrides = creds;
|
|
33
|
+
}
|
|
34
|
+
// ---------------------------------------------------------------------------
|
|
35
|
+
// API helpers
|
|
36
|
+
// ---------------------------------------------------------------------------
|
|
37
|
+
function getConfig() {
|
|
38
|
+
const apiUrl = _credentialOverrides.REVEALUI_API_URL ?? process.env.REVEALUI_API_URL;
|
|
39
|
+
const token = _credentialOverrides.REVEALUI_API_TOKEN ?? process.env.REVEALUI_API_TOKEN;
|
|
40
|
+
if (!(apiUrl && token)) {
|
|
41
|
+
throw new Error('REVEALUI_API_URL and REVEALUI_API_TOKEN must be set');
|
|
42
|
+
}
|
|
43
|
+
return { apiUrl, token };
|
|
44
|
+
}
|
|
45
|
+
function authHeaders(token) {
|
|
46
|
+
return {
|
|
47
|
+
Authorization: `Bearer ${token}`,
|
|
48
|
+
'Content-Type': 'application/json',
|
|
49
|
+
'User-Agent': 'RevealUI-MCP-Memory/0.1.0',
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
async function apiPost(path, body) {
|
|
53
|
+
const { apiUrl, token } = getConfig();
|
|
54
|
+
const res = await fetch(`${apiUrl}${path}`, {
|
|
55
|
+
method: 'POST',
|
|
56
|
+
headers: authHeaders(token),
|
|
57
|
+
body: JSON.stringify(body),
|
|
58
|
+
});
|
|
59
|
+
const data = await res.json();
|
|
60
|
+
if (!res.ok) {
|
|
61
|
+
throw new Error(data.error ?? `API error ${res.status}`);
|
|
62
|
+
}
|
|
63
|
+
return data;
|
|
64
|
+
}
|
|
65
|
+
async function apiGet(path, params) {
|
|
66
|
+
const { apiUrl, token } = getConfig();
|
|
67
|
+
const url = new URL(`${apiUrl}${path}`);
|
|
68
|
+
if (params) {
|
|
69
|
+
for (const [k, v] of Object.entries(params))
|
|
70
|
+
url.searchParams.set(k, v);
|
|
71
|
+
}
|
|
72
|
+
const res = await fetch(url.toString(), { headers: authHeaders(token) });
|
|
73
|
+
const data = await res.json();
|
|
74
|
+
if (!res.ok) {
|
|
75
|
+
throw new Error(data.error ?? `API error ${res.status}`);
|
|
76
|
+
}
|
|
77
|
+
return data;
|
|
78
|
+
}
|
|
79
|
+
// ---------------------------------------------------------------------------
|
|
80
|
+
// Server
|
|
81
|
+
// ---------------------------------------------------------------------------
|
|
82
|
+
const server = new Server({ name: 'revealui-memory', version: '0.1.0' }, { capabilities: { tools: {} } });
|
|
83
|
+
const TOOLS = [
|
|
84
|
+
// Layer 1: Shared Fact Log
|
|
85
|
+
{
|
|
86
|
+
name: 'memory_publish_fact',
|
|
87
|
+
description: 'Publish a discovery to the shared fact log. All agents in the same ' +
|
|
88
|
+
'coordination session see it in real-time via ElectricSQL.',
|
|
89
|
+
inputSchema: {
|
|
90
|
+
type: 'object',
|
|
91
|
+
properties: {
|
|
92
|
+
session_id: { type: 'string', description: 'Coordination session ID' },
|
|
93
|
+
agent_id: { type: 'string', description: 'Agent publishing this fact' },
|
|
94
|
+
content: { type: 'string', description: 'The fact content' },
|
|
95
|
+
fact_type: {
|
|
96
|
+
type: 'string',
|
|
97
|
+
description: 'Type: discovery, bug, decision, warning, question, answer',
|
|
98
|
+
enum: ['discovery', 'bug', 'decision', 'warning', 'question', 'answer'],
|
|
99
|
+
},
|
|
100
|
+
confidence: { type: 'number', description: 'Confidence 0-1 (default: 1.0)' },
|
|
101
|
+
tags: {
|
|
102
|
+
type: 'array',
|
|
103
|
+
items: { type: 'string' },
|
|
104
|
+
description: 'Tags for grouping and filtering',
|
|
105
|
+
},
|
|
106
|
+
source_ref: {
|
|
107
|
+
type: 'object',
|
|
108
|
+
description: 'Source reference (file path, line number, etc.)',
|
|
109
|
+
},
|
|
110
|
+
},
|
|
111
|
+
required: ['session_id', 'agent_id', 'content', 'fact_type'],
|
|
112
|
+
},
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
name: 'memory_list_facts',
|
|
116
|
+
description: 'List shared facts for a coordination session.',
|
|
117
|
+
inputSchema: {
|
|
118
|
+
type: 'object',
|
|
119
|
+
properties: {
|
|
120
|
+
session_id: { type: 'string', description: 'Coordination session ID' },
|
|
121
|
+
},
|
|
122
|
+
required: ['session_id'],
|
|
123
|
+
},
|
|
124
|
+
},
|
|
125
|
+
// Layer 2: Yjs Scratchpad
|
|
126
|
+
{
|
|
127
|
+
name: 'memory_create_scratchpad',
|
|
128
|
+
description: 'Create a new shared Yjs scratchpad document. Use set_key patch type ' +
|
|
129
|
+
'to initialize with a title.',
|
|
130
|
+
inputSchema: {
|
|
131
|
+
type: 'object',
|
|
132
|
+
properties: {
|
|
133
|
+
document_id: { type: 'string', description: 'Unique document ID' },
|
|
134
|
+
agent_id: { type: 'string', description: 'Agent creating the scratchpad' },
|
|
135
|
+
title: { type: 'string', description: 'Initial title for the scratchpad' },
|
|
136
|
+
},
|
|
137
|
+
required: ['document_id', 'agent_id'],
|
|
138
|
+
},
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
name: 'memory_patch_scratchpad',
|
|
142
|
+
description: 'Apply a structured patch to a shared Yjs scratchpad. Patches are ' +
|
|
143
|
+
'applied server-side and synced to all subscribers via Electric.',
|
|
144
|
+
inputSchema: {
|
|
145
|
+
type: 'object',
|
|
146
|
+
properties: {
|
|
147
|
+
document_id: { type: 'string', description: 'Scratchpad document ID' },
|
|
148
|
+
agent_id: { type: 'string', description: 'Agent submitting the patch' },
|
|
149
|
+
patch_type: {
|
|
150
|
+
type: 'string',
|
|
151
|
+
description: 'Type of edit',
|
|
152
|
+
enum: ['append_section', 'append_item', 'replace_section', 'set_key'],
|
|
153
|
+
},
|
|
154
|
+
path: { type: 'string', description: 'Section path (e.g. "findings" or "plan.phase1")' },
|
|
155
|
+
content: { type: 'string', description: 'Content to insert or replace' },
|
|
156
|
+
},
|
|
157
|
+
required: ['document_id', 'agent_id', 'patch_type', 'path', 'content'],
|
|
158
|
+
},
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
name: 'memory_read_scratchpad',
|
|
162
|
+
description: 'Read the current content of a shared Yjs scratchpad as JSON.',
|
|
163
|
+
inputSchema: {
|
|
164
|
+
type: 'object',
|
|
165
|
+
properties: {
|
|
166
|
+
document_id: { type: 'string', description: 'Scratchpad document ID' },
|
|
167
|
+
},
|
|
168
|
+
required: ['document_id'],
|
|
169
|
+
},
|
|
170
|
+
},
|
|
171
|
+
// Layer 3: Shared Memory + Reconciliation
|
|
172
|
+
{
|
|
173
|
+
name: 'memory_share',
|
|
174
|
+
description: 'Share a memory with all agents in a coordination session. Creates a ' +
|
|
175
|
+
'shared agent_memories entry synced via Electric.',
|
|
176
|
+
inputSchema: {
|
|
177
|
+
type: 'object',
|
|
178
|
+
properties: {
|
|
179
|
+
session_scope: { type: 'string', description: 'Coordination session scope' },
|
|
180
|
+
agent_id: { type: 'string', description: 'Agent sharing this memory' },
|
|
181
|
+
site_id: { type: 'string', description: 'Site ID for ownership' },
|
|
182
|
+
content: { type: 'string', description: 'Memory content' },
|
|
183
|
+
type: {
|
|
184
|
+
type: 'string',
|
|
185
|
+
description: 'Memory type',
|
|
186
|
+
enum: [
|
|
187
|
+
'fact',
|
|
188
|
+
'preference',
|
|
189
|
+
'decision',
|
|
190
|
+
'feedback',
|
|
191
|
+
'example',
|
|
192
|
+
'correction',
|
|
193
|
+
'skill',
|
|
194
|
+
'warning',
|
|
195
|
+
],
|
|
196
|
+
},
|
|
197
|
+
source: { type: 'object', description: 'Source metadata' },
|
|
198
|
+
},
|
|
199
|
+
required: ['session_scope', 'agent_id', 'site_id', 'content', 'type', 'source'],
|
|
200
|
+
},
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
name: 'memory_list_shared',
|
|
204
|
+
description: 'List shared and reconciled memories for a coordination session.',
|
|
205
|
+
inputSchema: {
|
|
206
|
+
type: 'object',
|
|
207
|
+
properties: {
|
|
208
|
+
session_scope: { type: 'string', description: 'Coordination session scope' },
|
|
209
|
+
},
|
|
210
|
+
required: ['session_scope'],
|
|
211
|
+
},
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
name: 'memory_reconcile',
|
|
215
|
+
description: 'Trigger reconciliation of shared facts. Deduplicates, resolves ' +
|
|
216
|
+
'contradictions, and produces canonical reconciled memories.',
|
|
217
|
+
inputSchema: {
|
|
218
|
+
type: 'object',
|
|
219
|
+
properties: {
|
|
220
|
+
session_id: { type: 'string', description: 'Coordination session ID' },
|
|
221
|
+
site_id: { type: 'string', description: 'Site ID for reconciled memories' },
|
|
222
|
+
},
|
|
223
|
+
required: ['session_id', 'site_id'],
|
|
224
|
+
},
|
|
225
|
+
},
|
|
226
|
+
];
|
|
227
|
+
server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: TOOLS }));
|
|
228
|
+
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
229
|
+
const startTime = Date.now();
|
|
230
|
+
const toolName = request.params.name;
|
|
231
|
+
try {
|
|
232
|
+
// Validate credentials early
|
|
233
|
+
getConfig();
|
|
234
|
+
}
|
|
235
|
+
catch {
|
|
236
|
+
return {
|
|
237
|
+
content: [
|
|
238
|
+
{ type: 'text', text: 'Error: REVEALUI_API_URL and REVEALUI_API_TOKEN must be set' },
|
|
239
|
+
],
|
|
240
|
+
isError: true,
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
try {
|
|
244
|
+
let data;
|
|
245
|
+
switch (toolName) {
|
|
246
|
+
// Layer 1
|
|
247
|
+
case 'memory_publish_fact': {
|
|
248
|
+
const args = request.params.arguments;
|
|
249
|
+
data = await apiPost('/api/sync/shared-facts', args);
|
|
250
|
+
break;
|
|
251
|
+
}
|
|
252
|
+
case 'memory_list_facts': {
|
|
253
|
+
const { session_id } = request.params.arguments;
|
|
254
|
+
data = await apiGet('/api/shapes/shared-facts', { session_id });
|
|
255
|
+
break;
|
|
256
|
+
}
|
|
257
|
+
// Layer 2
|
|
258
|
+
case 'memory_create_scratchpad': {
|
|
259
|
+
const { document_id, agent_id, title } = request.params.arguments;
|
|
260
|
+
data = await apiPost('/api/sync/yjs-document-patches', {
|
|
261
|
+
document_id,
|
|
262
|
+
agent_id,
|
|
263
|
+
patch_type: 'set_key',
|
|
264
|
+
path: 'title',
|
|
265
|
+
content: title ?? 'Shared Scratchpad',
|
|
266
|
+
});
|
|
267
|
+
break;
|
|
268
|
+
}
|
|
269
|
+
case 'memory_patch_scratchpad': {
|
|
270
|
+
const args = request.params.arguments;
|
|
271
|
+
data = await apiPost('/api/sync/yjs-document-patches', args);
|
|
272
|
+
break;
|
|
273
|
+
}
|
|
274
|
+
case 'memory_read_scratchpad': {
|
|
275
|
+
const { document_id } = request.params.arguments;
|
|
276
|
+
data = await apiGet('/api/shapes/yjs-documents', { document_id });
|
|
277
|
+
break;
|
|
278
|
+
}
|
|
279
|
+
// Layer 3
|
|
280
|
+
case 'memory_share': {
|
|
281
|
+
const args = request.params.arguments;
|
|
282
|
+
data = await apiPost('/api/sync/shared-memories', args);
|
|
283
|
+
break;
|
|
284
|
+
}
|
|
285
|
+
case 'memory_list_shared': {
|
|
286
|
+
const { session_scope } = request.params.arguments;
|
|
287
|
+
data = await apiGet('/api/shapes/shared-memories', { session_scope });
|
|
288
|
+
break;
|
|
289
|
+
}
|
|
290
|
+
case 'memory_reconcile': {
|
|
291
|
+
const args = request.params.arguments;
|
|
292
|
+
data = await apiPost('/api/sync/reconcile', args);
|
|
293
|
+
break;
|
|
294
|
+
}
|
|
295
|
+
default:
|
|
296
|
+
return {
|
|
297
|
+
content: [{ type: 'text', text: `Error: Unknown tool: ${toolName}` }],
|
|
298
|
+
isError: true,
|
|
299
|
+
};
|
|
300
|
+
}
|
|
301
|
+
return {
|
|
302
|
+
content: [
|
|
303
|
+
{
|
|
304
|
+
type: 'text',
|
|
305
|
+
text: JSON.stringify({
|
|
306
|
+
data,
|
|
307
|
+
_meta: {
|
|
308
|
+
durationMs: Date.now() - startTime,
|
|
309
|
+
server: 'revealui-memory',
|
|
310
|
+
tool: toolName,
|
|
311
|
+
timestamp: new Date().toISOString(),
|
|
312
|
+
},
|
|
313
|
+
}, null, 2),
|
|
314
|
+
},
|
|
315
|
+
],
|
|
316
|
+
};
|
|
317
|
+
}
|
|
318
|
+
catch (err) {
|
|
319
|
+
return {
|
|
320
|
+
content: [
|
|
321
|
+
{ type: 'text', text: `Error: ${err instanceof Error ? err.message : String(err)}` },
|
|
322
|
+
],
|
|
323
|
+
isError: true,
|
|
324
|
+
};
|
|
325
|
+
}
|
|
326
|
+
});
|
|
327
|
+
async function main() {
|
|
328
|
+
const transport = new StdioServerTransport();
|
|
329
|
+
await server.connect(transport);
|
|
330
|
+
}
|
|
331
|
+
main().catch((err) => {
|
|
332
|
+
logger.error('RevealUI Memory MCP error', err instanceof Error ? err : new Error(String(err)));
|
|
333
|
+
process.exit(1);
|
|
334
|
+
});
|
|
335
|
+
//# sourceMappingURL=revealui-memory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"revealui-memory.js","sourceRoot":"","sources":["../../src/servers/revealui-memory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"revealui-stripe.d.ts","sourceRoot":"","sources":["../../src/servers/revealui-stripe.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;GAeG;
|
|
1
|
+
{"version":3,"file":"revealui-stripe.d.ts","sourceRoot":"","sources":["../../src/servers/revealui-stripe.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;GAeG;AAkBH;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAElE"}
|
|
@@ -19,7 +19,6 @@ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
|
19
19
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
20
20
|
import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
|
|
21
21
|
import { logger } from '@revealui/core/observability/logger';
|
|
22
|
-
import { checkMcpLicense } from '../index.js';
|
|
23
22
|
// ---------------------------------------------------------------------------
|
|
24
23
|
// Credential overrides (set by Hypervisor before tool invocations)
|
|
25
24
|
// ---------------------------------------------------------------------------
|
|
@@ -233,9 +232,6 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
233
232
|
}
|
|
234
233
|
});
|
|
235
234
|
async function main() {
|
|
236
|
-
if (!(await checkMcpLicense())) {
|
|
237
|
-
process.exit(1);
|
|
238
|
-
}
|
|
239
235
|
const transport = new StdioServerTransport();
|
|
240
236
|
await server.connect(transport);
|
|
241
237
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"revealui-stripe.js","sourceRoot":"","sources":["../../src/servers/revealui-stripe.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAEL,qBAAqB,EACrB,sBAAsB,GAEvB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"revealui-stripe.js","sourceRoot":"","sources":["../../src/servers/revealui-stripe.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAEL,qBAAqB,EACrB,sBAAsB,GAEvB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAC;AAE7D,8EAA8E;AAC9E,mEAAmE;AACnE,8EAA8E;AAE9E,IAAI,oBAAoB,GAA2B,EAAE,CAAC;AAEtD;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,KAA6B;IAC1D,oBAAoB,GAAG,KAAK,CAAC;AAC/B,CAAC;AAED,8EAA8E;AAC9E,sBAAsB;AACtB,8EAA8E;AAE9E,MAAM,WAAW,GAAG,2BAA2B,CAAC;AAEhD,SAAS,aAAa,CAAC,SAAiB;IACtC,OAAO;QACL,aAAa,EAAE,UAAU,SAAS,EAAE;QACpC,cAAc,EAAE,mCAAmC;QACnD,gBAAgB,EAAE,kBAAkB;QACpC,YAAY,EAAE,kBAAkB;KACjC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,IAAY,EAAE,SAAiB,EAAE,MAA+B;IACvF,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,WAAW,GAAG,IAAI,EAAE,CAAC,CAAC;IAC7C,IAAI,MAAM,EAAE,CAAC;QACX,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1E,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC/E,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAI,CAAC,GAAG,CAAC,EAAE;QACT,MAAM,IAAI,KAAK,CACZ,IAAyC,CAAC,KAAK,EAAE,OAAO,IAAI,UAAU,GAAG,CAAC,MAAM,EAAE,CACpF,CAAC;IACJ,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,IAAY,EAAE,SAAiB,EAAE,IAA4B;IACrF,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,WAAW,GAAG,IAAI,EAAE,EAAE;QAC/C,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC;QACjC,IAAI,EAAE,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;KAC3C,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAI,CAAC,GAAG,CAAC,EAAE;QACT,MAAM,IAAI,KAAK,CACZ,IAAyC,CAAC,KAAK,EAAE,OAAO,IAAI,UAAU,GAAG,CAAC,MAAM,EAAE,CACpF,CAAC;IACJ,OAAO,IAAI,CAAC;AACd,CAAC;AAED,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAE9E,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,OAAO,EAAE,EAC7C,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAChC,CAAC;AAEF,MAAM,KAAK,GAAW;IACpB;QACE,IAAI,EAAE,8BAA8B;QACpC,WAAW,EACT,mEAAmE;YACnE,0DAA0D;QAC5D,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,uDAAuD;iBACrE;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,uCAAuC;oBACpD,OAAO,EAAE,KAAK;iBACf;gBACD,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6CAA6C,EAAE;gBAC3F,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0CAA0C,EAAE;aACzF;YACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;SACrB;KACF;IACD;QACE,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EAAE,4EAA4E;QACzF,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+BAA+B,EAAE;gBACvE,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,wCAAwC;oBACrD,OAAO,EAAE,EAAE;iBACZ;aACF;SACF;KACF;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EACT,mFAAmF;QACrF,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,8BAA8B,EAAE;aAC7E;YACD,QAAQ,EAAE,CAAC,aAAa,CAAC;SAC1B;KACF;IACD;QACE,IAAI,EAAE,2BAA2B;QACjC,WAAW,EAAE,+EAA+E;QAC5F,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yCAAyC,EAAE;gBACvF,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;oBACd,WAAW,EACT,+EAA+E;oBACjF,OAAO,EAAE,QAAQ;iBAClB;gBACD,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,wCAAwC;oBACrD,OAAO,EAAE,EAAE;iBACZ;aACF;SACF;KACF;CACF,CAAC;AAEF,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AAEjF,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAwB,EAAE,EAAE;IACjF,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;IAErC,MAAM,SAAS,GAAG,oBAAoB,CAAC,iBAAiB,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;IAC1F,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,qCAAqC,EAAE,CAAC;YACxE,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,IAAI,IAAa,CAAC;QAElB,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,8BAA8B,CAAC,CAAC,CAAC;gBACpC,MAAM,EACJ,MAAM,EACN,QAAQ,GAAG,KAAK,EAChB,WAAW,EACX,WAAW,GACZ,GAAG,OAAO,CAAC,MAAM,CAAC,SAKlB,CAAC;gBACF,MAAM,IAAI,GAA2B;oBACnC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBAClC,QAAQ;iBACT,CAAC;gBACF,IAAI,WAAW;oBAAE,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC;gBAC7C,IAAI,WAAW;oBAAE,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;gBAEhD,IAAI,GAAG,MAAM,UAAU,CAAC,kBAAkB,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;gBAC7D,MAAM;YACR,CAAC;YAED,KAAK,uBAAuB,CAAC,CAAC,CAAC;gBAC7B,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,SAG5C,CAAC;gBACF,MAAM,MAAM,GAA2B,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;gBAC/E,IAAI,KAAK;oBAAE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;gBAEhC,IAAI,GAAG,MAAM,SAAS,CAAC,YAAY,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;gBACxD,MAAM;YACR,CAAC;YAED,KAAK,qBAAqB,CAAC,CAAC,CAAC;gBAC3B,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,SAAoC,CAAC;gBAC5E,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;oBAClD,SAAS,CAAC,cAAc,WAAW,EAAE,EAAE,SAAS,CAAC;oBACjD,SAAS,CAAC,gBAAgB,EAAE,SAAS,EAAE;wBACrC,QAAQ,EAAE,WAAW;wBACrB,MAAM,EAAE,QAAQ;wBAChB,KAAK,EAAE,GAAG;wBACV,UAAU,EAAE,+BAA+B;qBAC5C,CAAC;iBACH,CAAC,CAAC;gBACH,IAAI,GAAG,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC;gBACnC,MAAM;YACR,CAAC;YAED,KAAK,2BAA2B,CAAC,CAAC,CAAC;gBACjC,MAAM,EACJ,WAAW,EACX,MAAM,GAAG,QAAQ,EACjB,KAAK,GAAG,EAAE,GACX,GAAG,OAAO,CAAC,MAAM,CAAC,SAIlB,CAAC;gBACF,MAAM,MAAM,GAA2B;oBACrC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;oBACnC,MAAM;iBACP,CAAC;gBACF,IAAI,WAAW;oBAAE,MAAM,CAAC,QAAQ,GAAG,WAAW,CAAC;gBAE/C,IAAI,GAAG,MAAM,SAAS,CAAC,gBAAgB,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;gBAC5D,MAAM;YACR,CAAC;YAED;gBACE,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,wBAAwB,QAAQ,EAAE,EAAE,CAAC;oBACrE,OAAO,EAAE,IAAI;iBACd,CAAC;QACN,CAAC;QAED,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;wBACE,IAAI;wBACJ,KAAK,EAAE;4BACL,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;4BAClC,MAAM,EAAE,iBAAiB;4BACzB,IAAI,EAAE,QAAQ;4BACd,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;yBACpC;qBACF,EACD,IAAI,EACJ,CAAC,CACF;iBACF;aACF;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE;aACrF;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC/F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stripe.d.ts","sourceRoot":"","sources":["../../src/servers/stripe.ts"],"names":[],"mappings":";AAEA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"stripe.d.ts","sourceRoot":"","sources":["../../src/servers/stripe.ts"],"names":[],"mappings":";AAEA;;;;;;;GAOG;AAkEH;;;GAGG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAErD"}
|
package/dist/servers/stripe.js
CHANGED
|
@@ -9,7 +9,6 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import { spawn } from 'node:child_process';
|
|
11
11
|
import { config } from 'dotenv';
|
|
12
|
-
import { checkMcpLicense } from '../index.js';
|
|
13
12
|
import { createLauncherLogger, ExitCode } from './_launcher-utils.js';
|
|
14
13
|
const logger = createLauncherLogger();
|
|
15
14
|
// Load environment variables
|
|
@@ -44,7 +43,7 @@ async function startStripeMCP() {
|
|
|
44
43
|
}
|
|
45
44
|
const withRestart = process.argv.includes('--restart');
|
|
46
45
|
logger.header('Starting Stripe MCP Server');
|
|
47
|
-
logger.info(
|
|
46
|
+
logger.info(' Secret Key: [configured]');
|
|
48
47
|
if (withRestart)
|
|
49
48
|
logger.info(' Restart mode: enabled (up to 3 attempts)');
|
|
50
49
|
let attempt = 0;
|
|
@@ -64,9 +63,6 @@ async function startStripeMCP() {
|
|
|
64
63
|
* Exported for programmatic use by the Hypervisor.
|
|
65
64
|
*/
|
|
66
65
|
export async function launchStripeMcp() {
|
|
67
|
-
if (!(await checkMcpLicense())) {
|
|
68
|
-
throw new Error('MCP license check failed');
|
|
69
|
-
}
|
|
70
66
|
await startStripeMCP();
|
|
71
67
|
}
|
|
72
68
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stripe.js","sourceRoot":"","sources":["../../src/servers/stripe.ts"],"names":[],"mappings":";AAEA;;;;;;;GAOG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"stripe.js","sourceRoot":"","sources":["../../src/servers/stripe.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"supabase.d.ts","sourceRoot":"","sources":["../../src/servers/supabase.ts"],"names":[],"mappings":";AAEA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"supabase.d.ts","sourceRoot":"","sources":["../../src/servers/supabase.ts"],"names":[],"mappings":";AAEA;;;;;;;GAOG;AAgIH;;;GAGG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAEvD"}
|
package/dist/servers/supabase.js
CHANGED
|
@@ -10,7 +10,6 @@
|
|
|
10
10
|
import { spawn } from 'node:child_process';
|
|
11
11
|
import { randomBytes } from 'node:crypto';
|
|
12
12
|
import { config } from 'dotenv';
|
|
13
|
-
import { checkMcpLicense } from '../index.js';
|
|
14
13
|
import { createLauncherLogger, ExitCode } from './_launcher-utils.js';
|
|
15
14
|
const logger = createLauncherLogger();
|
|
16
15
|
// Load environment variables
|
|
@@ -122,9 +121,6 @@ async function startSupabaseMCP() {
|
|
|
122
121
|
* Exported for programmatic use by the Hypervisor.
|
|
123
122
|
*/
|
|
124
123
|
export async function launchSupabaseMcp() {
|
|
125
|
-
if (!(await checkMcpLicense())) {
|
|
126
|
-
throw new Error('MCP license check failed');
|
|
127
|
-
}
|
|
128
124
|
await startSupabaseMCP();
|
|
129
125
|
}
|
|
130
126
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"supabase.js","sourceRoot":"","sources":["../../src/servers/supabase.ts"],"names":[],"mappings":";AAEA;;;;;;;GAOG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"supabase.js","sourceRoot":"","sources":["../../src/servers/supabase.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vercel.d.ts","sourceRoot":"","sources":["../../src/servers/vercel.ts"],"names":[],"mappings":";AAEA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"vercel.d.ts","sourceRoot":"","sources":["../../src/servers/vercel.ts"],"names":[],"mappings":";AAEA;;;;;;;GAOG;AAmEH;;;GAGG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAErD"}
|
package/dist/servers/vercel.js
CHANGED
|
@@ -9,7 +9,6 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import { spawn } from 'node:child_process';
|
|
11
11
|
import { config } from 'dotenv';
|
|
12
|
-
import { checkMcpLicense } from '../index.js';
|
|
13
12
|
import { createLauncherLogger, ExitCode } from './_launcher-utils.js';
|
|
14
13
|
const logger = createLauncherLogger();
|
|
15
14
|
// Load environment variables
|
|
@@ -45,7 +44,7 @@ async function startVercelMCP() {
|
|
|
45
44
|
}
|
|
46
45
|
const withRestart = process.argv.includes('--restart');
|
|
47
46
|
logger.header('Starting Vercel MCP Server');
|
|
48
|
-
logger.info(
|
|
47
|
+
logger.info(' API Key: [configured]');
|
|
49
48
|
if (withRestart)
|
|
50
49
|
logger.info(' Restart mode: enabled (up to 3 attempts)');
|
|
51
50
|
let attempt = 0;
|
|
@@ -65,9 +64,6 @@ async function startVercelMCP() {
|
|
|
65
64
|
* Exported for programmatic use by the Hypervisor.
|
|
66
65
|
*/
|
|
67
66
|
export async function launchVercelMcp() {
|
|
68
|
-
if (!(await checkMcpLicense())) {
|
|
69
|
-
throw new Error('MCP license check failed');
|
|
70
|
-
}
|
|
71
67
|
await startVercelMCP();
|
|
72
68
|
}
|
|
73
69
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vercel.js","sourceRoot":"","sources":["../../src/servers/vercel.ts"],"names":[],"mappings":";AAEA;;;;;;;GAOG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"vercel.js","sourceRoot":"","sources":["../../src/servers/vercel.ts"],"names":[],"mappings":";AAEA;;;;;;;GAOG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEtE,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAC;AAEtC,6BAA6B;AAC7B,MAAM,EAAE,CAAC;AAET,MAAM,YAAY,GAAG,CAAC,CAAC;AACvB,MAAM,iBAAiB,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAE7C,KAAK,UAAU,WAAW,CAAC,YAAoB;IAC7C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,wFAAwF;QACxF,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE;YAClD,KAAK,EAAE,SAAS;YAChB,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,cAAc,EAAE,YAAY,EAAE;SACtD,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAC1B,MAAM,CAAC,KAAK,CAAC,sCAAsC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACpE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;QAE/C,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;YACxB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;YACzB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,cAAc;IAC3B,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;IAE5E,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;QAChE,MAAM,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;QACzE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACvD,MAAM,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAC;IAC5C,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IACxC,IAAI,WAAW;QAAE,MAAM,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;IAE5E,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,YAAY,CAAC,CAAC;QAC7C,IAAI,CAAC,WAAW,IAAI,OAAO,IAAI,YAAY,EAAE,CAAC;YAC5C,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;QAC1B,CAAC;QACD,MAAM,KAAK,GAAG,iBAAiB,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;QACjD,OAAO,EAAE,CAAC;QACV,MAAM,CAAC,OAAO,CACZ,0BAA0B,IAAI,oBAAoB,KAAK,GAAG,IAAI,cAAc,OAAO,IAAI,YAAY,MAAM,CAC1G,CAAC;QACF,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,MAAM,cAAc,EAAE,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC;QACH,MAAM,eAAe,EAAE,CAAC;IAC1B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,kBAAkB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACzF,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IACzC,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Streamable HTTP server helper for `@revealui/mcp` (Stage 1 PR-1.1).
|
|
3
|
+
*
|
|
4
|
+
* Wraps `@modelcontextprotocol/sdk`'s `StreamableHTTPServerTransport` with
|
|
5
|
+
* session routing: one `MCP Server` + transport pair per concurrent client,
|
|
6
|
+
* identified by the `Mcp-Session-Id` header. Initialize requests without a
|
|
7
|
+
* session header allocate a new server via `createServer()`; subsequent
|
|
8
|
+
* requests route to the matching session.
|
|
9
|
+
*
|
|
10
|
+
* Returns a Node `(req, res) => Promise<void>` handler suitable for use with
|
|
11
|
+
* `http.createServer`, Express, Fastify, or any framework that exposes the
|
|
12
|
+
* raw Node request/response pair. A Web-Standard (Request → Response)
|
|
13
|
+
* variant can layer on top later — the session-routing logic is independent
|
|
14
|
+
* of the concrete transport flavour.
|
|
15
|
+
*
|
|
16
|
+
* The SDK's `StreamableHTTPServerTransport` is a one-session-per-instance
|
|
17
|
+
* primitive (see the `this.sessionId` field in its implementation). That's
|
|
18
|
+
* why we maintain an external `Map<sessionId, { server, transport }>` and
|
|
19
|
+
* not rely on a single transport to multiplex.
|
|
20
|
+
*/
|
|
21
|
+
import type { IncomingMessage, ServerResponse } from 'node:http';
|
|
22
|
+
import type { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
23
|
+
export type StreamableHttpHandlerOptions = {
|
|
24
|
+
/**
|
|
25
|
+
* Called once per new session — returns a fresh `Server` instance to
|
|
26
|
+
* connect to the session's transport. Keep this function pure; do not
|
|
27
|
+
* share Server instances across sessions.
|
|
28
|
+
*/
|
|
29
|
+
createServer: () => Server | Promise<Server>;
|
|
30
|
+
/** Generate session IDs. Default: `crypto.randomUUID()`. */
|
|
31
|
+
sessionIdGenerator?: () => string;
|
|
32
|
+
/** Called when a new session is initialized. */
|
|
33
|
+
onSessionInitialized?: (sessionId: string) => void | Promise<void>;
|
|
34
|
+
/** Called when a session is terminated (DELETE or transport close). */
|
|
35
|
+
onSessionClosed?: (sessionId: string) => void | Promise<void>;
|
|
36
|
+
/**
|
|
37
|
+
* Allowed `Origin` headers for DNS rebinding protection. If set, requests
|
|
38
|
+
* with other origins are rejected. Mirrors the SDK's option.
|
|
39
|
+
*/
|
|
40
|
+
allowedOrigins?: string[];
|
|
41
|
+
/**
|
|
42
|
+
* Allowed `Host` headers for DNS rebinding protection. If set, requests
|
|
43
|
+
* with other hosts are rejected.
|
|
44
|
+
*/
|
|
45
|
+
allowedHosts?: string[];
|
|
46
|
+
/**
|
|
47
|
+
* If true, responses are raw JSON instead of SSE streams. Useful for
|
|
48
|
+
* deployments that can't hold open long-lived connections (many
|
|
49
|
+
* serverless request/response platforms). Default: false.
|
|
50
|
+
*/
|
|
51
|
+
enableJsonResponse?: boolean;
|
|
52
|
+
};
|
|
53
|
+
export type StreamableHttpHandler = (req: IncomingMessage, res: ServerResponse) => Promise<void>;
|
|
54
|
+
/**
|
|
55
|
+
* Build a Node HTTP request handler that routes MCP Streamable HTTP traffic
|
|
56
|
+
* to per-session `Server` + `Transport` pairs, allocating new sessions on
|
|
57
|
+
* InitializeRequest and reusing them on follow-up requests via the
|
|
58
|
+
* `Mcp-Session-Id` header.
|
|
59
|
+
*
|
|
60
|
+
* ```ts
|
|
61
|
+
* import { createServer as createHttpServer } from 'node:http';
|
|
62
|
+
* import { createNodeStreamableHttpHandler } from '@revealui/mcp/streamable-http';
|
|
63
|
+
*
|
|
64
|
+
* const mcpHandler = createNodeStreamableHttpHandler({
|
|
65
|
+
* createServer: () => makeMyMcpServer(),
|
|
66
|
+
* });
|
|
67
|
+
*
|
|
68
|
+
* createHttpServer(mcpHandler).listen(3000);
|
|
69
|
+
* ```
|
|
70
|
+
*/
|
|
71
|
+
export declare function createNodeStreamableHttpHandler(options: StreamableHttpHandlerOptions): StreamableHttpHandler;
|
|
72
|
+
//# sourceMappingURL=streamable-http.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streamable-http.d.ts","sourceRoot":"","sources":["../src/streamable-http.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAWxE,MAAM,MAAM,4BAA4B,GAAG;IACzC;;;;OAIG;IACH,YAAY,EAAE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE7C,4DAA4D;IAC5D,kBAAkB,CAAC,EAAE,MAAM,MAAM,CAAC;IAElC,gDAAgD;IAChD,oBAAoB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnE,uEAAuE;IACvE,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9D;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAE1B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IAExB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAWjG;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,4BAA4B,GACpC,qBAAqB,CAqDvB"}
|