integrate-sdk 0.7.10 → 0.7.12
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/dist/adapters/solid-start.js +28 -8
- package/dist/adapters/svelte-kit.js +28 -8
- package/dist/index.js +64 -21
- package/dist/server.js +64 -21
- package/dist/src/server.d.ts +71 -46
- package/dist/src/server.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1735,9 +1735,9 @@ class MCPClient {
|
|
|
1735
1735
|
}
|
|
1736
1736
|
}
|
|
1737
1737
|
// src/server.ts
|
|
1738
|
-
function toSolidStartHandler(
|
|
1739
|
-
if (typeof
|
|
1740
|
-
const baseHandler =
|
|
1738
|
+
function toSolidStartHandler(clientOrHandlerOrOptions, _redirectOptions) {
|
|
1739
|
+
if (clientOrHandlerOrOptions && clientOrHandlerOrOptions.handler && typeof clientOrHandlerOrOptions.handler === "function") {
|
|
1740
|
+
const baseHandler = clientOrHandlerOrOptions.handler;
|
|
1741
1741
|
const handler2 = async (event) => {
|
|
1742
1742
|
return baseHandler(event.request);
|
|
1743
1743
|
};
|
|
@@ -1749,7 +1749,20 @@ function toSolidStartHandler(handlerOrOptions) {
|
|
|
1749
1749
|
DELETE: handler2
|
|
1750
1750
|
};
|
|
1751
1751
|
}
|
|
1752
|
-
|
|
1752
|
+
if (typeof clientOrHandlerOrOptions === "function") {
|
|
1753
|
+
const baseHandler = clientOrHandlerOrOptions;
|
|
1754
|
+
const handler2 = async (event) => {
|
|
1755
|
+
return baseHandler(event.request);
|
|
1756
|
+
};
|
|
1757
|
+
return {
|
|
1758
|
+
GET: handler2,
|
|
1759
|
+
POST: handler2,
|
|
1760
|
+
PATCH: handler2,
|
|
1761
|
+
PUT: handler2,
|
|
1762
|
+
DELETE: handler2
|
|
1763
|
+
};
|
|
1764
|
+
}
|
|
1765
|
+
const options = clientOrHandlerOrOptions;
|
|
1753
1766
|
if (!options.providers || Object.keys(options.providers).length === 0) {
|
|
1754
1767
|
throw new Error("toSolidStartHandler requires either a handler function or a providers config object");
|
|
1755
1768
|
}
|
|
@@ -1788,15 +1801,22 @@ function toSolidStartHandler(handlerOrOptions) {
|
|
|
1788
1801
|
DELETE: handler
|
|
1789
1802
|
};
|
|
1790
1803
|
}
|
|
1791
|
-
function toSvelteKitHandler(
|
|
1792
|
-
if (typeof
|
|
1793
|
-
const baseHandler =
|
|
1804
|
+
function toSvelteKitHandler(clientOrHandlerOrOptions, _redirectOptions) {
|
|
1805
|
+
if (clientOrHandlerOrOptions && clientOrHandlerOrOptions.handler && typeof clientOrHandlerOrOptions.handler === "function") {
|
|
1806
|
+
const baseHandler = clientOrHandlerOrOptions.handler;
|
|
1807
|
+
return async (event) => {
|
|
1808
|
+
const all = event.params?.all;
|
|
1809
|
+
return baseHandler(event.request, { params: { all } });
|
|
1810
|
+
};
|
|
1811
|
+
}
|
|
1812
|
+
if (typeof clientOrHandlerOrOptions === "function") {
|
|
1813
|
+
const baseHandler = clientOrHandlerOrOptions;
|
|
1794
1814
|
return async (event) => {
|
|
1795
1815
|
const all = event.params?.all;
|
|
1796
1816
|
return baseHandler(event.request, { params: { all } });
|
|
1797
1817
|
};
|
|
1798
1818
|
}
|
|
1799
|
-
const options =
|
|
1819
|
+
const options = clientOrHandlerOrOptions;
|
|
1800
1820
|
if (!options.providers || Object.keys(options.providers).length === 0) {
|
|
1801
1821
|
throw new Error("toSvelteKitHandler requires either a handler function or a providers config object");
|
|
1802
1822
|
}
|
|
@@ -1735,9 +1735,9 @@ class MCPClient {
|
|
|
1735
1735
|
}
|
|
1736
1736
|
}
|
|
1737
1737
|
// src/server.ts
|
|
1738
|
-
function toSolidStartHandler(
|
|
1739
|
-
if (typeof
|
|
1740
|
-
const baseHandler =
|
|
1738
|
+
function toSolidStartHandler(clientOrHandlerOrOptions, _redirectOptions) {
|
|
1739
|
+
if (clientOrHandlerOrOptions && clientOrHandlerOrOptions.handler && typeof clientOrHandlerOrOptions.handler === "function") {
|
|
1740
|
+
const baseHandler = clientOrHandlerOrOptions.handler;
|
|
1741
1741
|
const handler2 = async (event) => {
|
|
1742
1742
|
return baseHandler(event.request);
|
|
1743
1743
|
};
|
|
@@ -1749,7 +1749,20 @@ function toSolidStartHandler(handlerOrOptions) {
|
|
|
1749
1749
|
DELETE: handler2
|
|
1750
1750
|
};
|
|
1751
1751
|
}
|
|
1752
|
-
|
|
1752
|
+
if (typeof clientOrHandlerOrOptions === "function") {
|
|
1753
|
+
const baseHandler = clientOrHandlerOrOptions;
|
|
1754
|
+
const handler2 = async (event) => {
|
|
1755
|
+
return baseHandler(event.request);
|
|
1756
|
+
};
|
|
1757
|
+
return {
|
|
1758
|
+
GET: handler2,
|
|
1759
|
+
POST: handler2,
|
|
1760
|
+
PATCH: handler2,
|
|
1761
|
+
PUT: handler2,
|
|
1762
|
+
DELETE: handler2
|
|
1763
|
+
};
|
|
1764
|
+
}
|
|
1765
|
+
const options = clientOrHandlerOrOptions;
|
|
1753
1766
|
if (!options.providers || Object.keys(options.providers).length === 0) {
|
|
1754
1767
|
throw new Error("toSolidStartHandler requires either a handler function or a providers config object");
|
|
1755
1768
|
}
|
|
@@ -1788,15 +1801,22 @@ function toSolidStartHandler(handlerOrOptions) {
|
|
|
1788
1801
|
DELETE: handler
|
|
1789
1802
|
};
|
|
1790
1803
|
}
|
|
1791
|
-
function toSvelteKitHandler(
|
|
1792
|
-
if (typeof
|
|
1793
|
-
const baseHandler =
|
|
1804
|
+
function toSvelteKitHandler(clientOrHandlerOrOptions, _redirectOptions) {
|
|
1805
|
+
if (clientOrHandlerOrOptions && clientOrHandlerOrOptions.handler && typeof clientOrHandlerOrOptions.handler === "function") {
|
|
1806
|
+
const baseHandler = clientOrHandlerOrOptions.handler;
|
|
1807
|
+
return async (event) => {
|
|
1808
|
+
const all = event.params?.all;
|
|
1809
|
+
return baseHandler(event.request, { params: { all } });
|
|
1810
|
+
};
|
|
1811
|
+
}
|
|
1812
|
+
if (typeof clientOrHandlerOrOptions === "function") {
|
|
1813
|
+
const baseHandler = clientOrHandlerOrOptions;
|
|
1794
1814
|
return async (event) => {
|
|
1795
1815
|
const all = event.params?.all;
|
|
1796
1816
|
return baseHandler(event.request, { params: { all } });
|
|
1797
1817
|
};
|
|
1798
1818
|
}
|
|
1799
|
-
const options =
|
|
1819
|
+
const options = clientOrHandlerOrOptions;
|
|
1800
1820
|
if (!options.providers || Object.keys(options.providers).length === 0) {
|
|
1801
1821
|
throw new Error("toSvelteKitHandler requires either a handler function or a providers config object");
|
|
1802
1822
|
}
|
package/dist/index.js
CHANGED
|
@@ -2378,6 +2378,9 @@ function createMCPServer(config) {
|
|
|
2378
2378
|
return Response.json({ error: `Method ${method} not allowed` }, { status: 405 });
|
|
2379
2379
|
}
|
|
2380
2380
|
};
|
|
2381
|
+
client.handler = handler;
|
|
2382
|
+
client.POST = POST;
|
|
2383
|
+
client.GET = GET;
|
|
2381
2384
|
return {
|
|
2382
2385
|
client,
|
|
2383
2386
|
POST,
|
|
@@ -2405,28 +2408,48 @@ var GET = async (req, context) => {
|
|
|
2405
2408
|
const routes = handler.createRoutes();
|
|
2406
2409
|
return routes.GET(req, context);
|
|
2407
2410
|
};
|
|
2408
|
-
function toNextJsHandler(
|
|
2411
|
+
function toNextJsHandler(clientOrOptions, redirectOptions) {
|
|
2412
|
+
let config;
|
|
2413
|
+
let redirectUrl;
|
|
2414
|
+
let errorRedirectUrl;
|
|
2415
|
+
if (!clientOrOptions) {
|
|
2416
|
+
config = globalServerConfig;
|
|
2417
|
+
redirectUrl = redirectOptions?.redirectUrl;
|
|
2418
|
+
errorRedirectUrl = redirectOptions?.errorRedirectUrl;
|
|
2419
|
+
} else if (clientOrOptions.__oauthConfig) {
|
|
2420
|
+
config = clientOrOptions.__oauthConfig;
|
|
2421
|
+
redirectUrl = redirectOptions?.redirectUrl;
|
|
2422
|
+
errorRedirectUrl = redirectOptions?.errorRedirectUrl;
|
|
2423
|
+
} else if (typeof clientOrOptions === "object" && clientOrOptions.providers) {
|
|
2424
|
+
config = {
|
|
2425
|
+
providers: clientOrOptions.providers,
|
|
2426
|
+
serverUrl: clientOrOptions.serverUrl,
|
|
2427
|
+
apiKey: clientOrOptions.apiKey
|
|
2428
|
+
};
|
|
2429
|
+
redirectUrl = clientOrOptions.redirectUrl;
|
|
2430
|
+
errorRedirectUrl = clientOrOptions.errorRedirectUrl;
|
|
2431
|
+
} else {
|
|
2432
|
+
config = null;
|
|
2433
|
+
}
|
|
2434
|
+
if (!config) {
|
|
2435
|
+
throw new Error(`toNextJsHandler requires either:
|
|
2436
|
+
1. A client instance from createMCPServer()
|
|
2437
|
+
2. A config object with providers property
|
|
2438
|
+
3. No arguments (uses global config from createMCPServer)`);
|
|
2439
|
+
}
|
|
2409
2440
|
const POST2 = async (req, context) => {
|
|
2410
|
-
const config = options.config || options.client?.__oauthConfig;
|
|
2411
|
-
if (!config) {
|
|
2412
|
-
return Response.json({ error: 'OAuth not configured. You must pass either "client" (from createMCPServer) or "config" to toNextJsHandler().' }, { status: 500 });
|
|
2413
|
-
}
|
|
2414
2441
|
const handler = createNextOAuthHandler(config);
|
|
2415
2442
|
const routes = handler.toNextJsHandler({
|
|
2416
|
-
redirectUrl
|
|
2417
|
-
errorRedirectUrl
|
|
2443
|
+
redirectUrl,
|
|
2444
|
+
errorRedirectUrl
|
|
2418
2445
|
});
|
|
2419
2446
|
return routes.POST(req, context);
|
|
2420
2447
|
};
|
|
2421
2448
|
const GET2 = async (req, context) => {
|
|
2422
|
-
const config = options.config || options.client?.__oauthConfig;
|
|
2423
|
-
if (!config) {
|
|
2424
|
-
return Response.json({ error: 'OAuth not configured. You must pass either "client" (from createMCPServer) or "config" to toNextJsHandler().' }, { status: 500 });
|
|
2425
|
-
}
|
|
2426
2449
|
const handler = createNextOAuthHandler(config);
|
|
2427
2450
|
const routes = handler.toNextJsHandler({
|
|
2428
|
-
redirectUrl
|
|
2429
|
-
errorRedirectUrl
|
|
2451
|
+
redirectUrl,
|
|
2452
|
+
errorRedirectUrl
|
|
2430
2453
|
});
|
|
2431
2454
|
return routes.GET(req, context);
|
|
2432
2455
|
};
|
|
@@ -2484,9 +2507,22 @@ function toAstroHandler(baseHandler, options) {
|
|
|
2484
2507
|
return wrappedHandler(ctx.request, { params: { all: ctx.params.all } });
|
|
2485
2508
|
};
|
|
2486
2509
|
}
|
|
2487
|
-
function toSolidStartHandler(
|
|
2488
|
-
if (typeof
|
|
2489
|
-
const baseHandler =
|
|
2510
|
+
function toSolidStartHandler(clientOrHandlerOrOptions, _redirectOptions) {
|
|
2511
|
+
if (clientOrHandlerOrOptions && clientOrHandlerOrOptions.handler && typeof clientOrHandlerOrOptions.handler === "function") {
|
|
2512
|
+
const baseHandler = clientOrHandlerOrOptions.handler;
|
|
2513
|
+
const handler2 = async (event) => {
|
|
2514
|
+
return baseHandler(event.request);
|
|
2515
|
+
};
|
|
2516
|
+
return {
|
|
2517
|
+
GET: handler2,
|
|
2518
|
+
POST: handler2,
|
|
2519
|
+
PATCH: handler2,
|
|
2520
|
+
PUT: handler2,
|
|
2521
|
+
DELETE: handler2
|
|
2522
|
+
};
|
|
2523
|
+
}
|
|
2524
|
+
if (typeof clientOrHandlerOrOptions === "function") {
|
|
2525
|
+
const baseHandler = clientOrHandlerOrOptions;
|
|
2490
2526
|
const handler2 = async (event) => {
|
|
2491
2527
|
return baseHandler(event.request);
|
|
2492
2528
|
};
|
|
@@ -2498,7 +2534,7 @@ function toSolidStartHandler(handlerOrOptions) {
|
|
|
2498
2534
|
DELETE: handler2
|
|
2499
2535
|
};
|
|
2500
2536
|
}
|
|
2501
|
-
const options =
|
|
2537
|
+
const options = clientOrHandlerOrOptions;
|
|
2502
2538
|
if (!options.providers || Object.keys(options.providers).length === 0) {
|
|
2503
2539
|
throw new Error("toSolidStartHandler requires either a handler function or a providers config object");
|
|
2504
2540
|
}
|
|
@@ -2537,15 +2573,22 @@ function toSolidStartHandler(handlerOrOptions) {
|
|
|
2537
2573
|
DELETE: handler
|
|
2538
2574
|
};
|
|
2539
2575
|
}
|
|
2540
|
-
function toSvelteKitHandler(
|
|
2541
|
-
if (typeof
|
|
2542
|
-
const baseHandler =
|
|
2576
|
+
function toSvelteKitHandler(clientOrHandlerOrOptions, _redirectOptions) {
|
|
2577
|
+
if (clientOrHandlerOrOptions && clientOrHandlerOrOptions.handler && typeof clientOrHandlerOrOptions.handler === "function") {
|
|
2578
|
+
const baseHandler = clientOrHandlerOrOptions.handler;
|
|
2579
|
+
return async (event) => {
|
|
2580
|
+
const all = event.params?.all;
|
|
2581
|
+
return baseHandler(event.request, { params: { all } });
|
|
2582
|
+
};
|
|
2583
|
+
}
|
|
2584
|
+
if (typeof clientOrHandlerOrOptions === "function") {
|
|
2585
|
+
const baseHandler = clientOrHandlerOrOptions;
|
|
2543
2586
|
return async (event) => {
|
|
2544
2587
|
const all = event.params?.all;
|
|
2545
2588
|
return baseHandler(event.request, { params: { all } });
|
|
2546
2589
|
};
|
|
2547
2590
|
}
|
|
2548
|
-
const options =
|
|
2591
|
+
const options = clientOrHandlerOrOptions;
|
|
2549
2592
|
if (!options.providers || Object.keys(options.providers).length === 0) {
|
|
2550
2593
|
throw new Error("toSvelteKitHandler requires either a handler function or a providers config object");
|
|
2551
2594
|
}
|
package/dist/server.js
CHANGED
|
@@ -2204,6 +2204,9 @@ function createMCPServer(config) {
|
|
|
2204
2204
|
return Response.json({ error: `Method ${method} not allowed` }, { status: 405 });
|
|
2205
2205
|
}
|
|
2206
2206
|
};
|
|
2207
|
+
client.handler = handler;
|
|
2208
|
+
client.POST = POST;
|
|
2209
|
+
client.GET = GET;
|
|
2207
2210
|
return {
|
|
2208
2211
|
client,
|
|
2209
2212
|
POST,
|
|
@@ -2231,28 +2234,48 @@ var GET = async (req, context) => {
|
|
|
2231
2234
|
const routes = handler.createRoutes();
|
|
2232
2235
|
return routes.GET(req, context);
|
|
2233
2236
|
};
|
|
2234
|
-
function toNextJsHandler(
|
|
2237
|
+
function toNextJsHandler(clientOrOptions, redirectOptions) {
|
|
2238
|
+
let config;
|
|
2239
|
+
let redirectUrl;
|
|
2240
|
+
let errorRedirectUrl;
|
|
2241
|
+
if (!clientOrOptions) {
|
|
2242
|
+
config = globalServerConfig;
|
|
2243
|
+
redirectUrl = redirectOptions?.redirectUrl;
|
|
2244
|
+
errorRedirectUrl = redirectOptions?.errorRedirectUrl;
|
|
2245
|
+
} else if (clientOrOptions.__oauthConfig) {
|
|
2246
|
+
config = clientOrOptions.__oauthConfig;
|
|
2247
|
+
redirectUrl = redirectOptions?.redirectUrl;
|
|
2248
|
+
errorRedirectUrl = redirectOptions?.errorRedirectUrl;
|
|
2249
|
+
} else if (typeof clientOrOptions === "object" && clientOrOptions.providers) {
|
|
2250
|
+
config = {
|
|
2251
|
+
providers: clientOrOptions.providers,
|
|
2252
|
+
serverUrl: clientOrOptions.serverUrl,
|
|
2253
|
+
apiKey: clientOrOptions.apiKey
|
|
2254
|
+
};
|
|
2255
|
+
redirectUrl = clientOrOptions.redirectUrl;
|
|
2256
|
+
errorRedirectUrl = clientOrOptions.errorRedirectUrl;
|
|
2257
|
+
} else {
|
|
2258
|
+
config = null;
|
|
2259
|
+
}
|
|
2260
|
+
if (!config) {
|
|
2261
|
+
throw new Error(`toNextJsHandler requires either:
|
|
2262
|
+
1. A client instance from createMCPServer()
|
|
2263
|
+
2. A config object with providers property
|
|
2264
|
+
3. No arguments (uses global config from createMCPServer)`);
|
|
2265
|
+
}
|
|
2235
2266
|
const POST2 = async (req, context) => {
|
|
2236
|
-
const config = options.config || options.client?.__oauthConfig;
|
|
2237
|
-
if (!config) {
|
|
2238
|
-
return Response.json({ error: 'OAuth not configured. You must pass either "client" (from createMCPServer) or "config" to toNextJsHandler().' }, { status: 500 });
|
|
2239
|
-
}
|
|
2240
2267
|
const handler = createNextOAuthHandler(config);
|
|
2241
2268
|
const routes = handler.toNextJsHandler({
|
|
2242
|
-
redirectUrl
|
|
2243
|
-
errorRedirectUrl
|
|
2269
|
+
redirectUrl,
|
|
2270
|
+
errorRedirectUrl
|
|
2244
2271
|
});
|
|
2245
2272
|
return routes.POST(req, context);
|
|
2246
2273
|
};
|
|
2247
2274
|
const GET2 = async (req, context) => {
|
|
2248
|
-
const config = options.config || options.client?.__oauthConfig;
|
|
2249
|
-
if (!config) {
|
|
2250
|
-
return Response.json({ error: 'OAuth not configured. You must pass either "client" (from createMCPServer) or "config" to toNextJsHandler().' }, { status: 500 });
|
|
2251
|
-
}
|
|
2252
2275
|
const handler = createNextOAuthHandler(config);
|
|
2253
2276
|
const routes = handler.toNextJsHandler({
|
|
2254
|
-
redirectUrl
|
|
2255
|
-
errorRedirectUrl
|
|
2277
|
+
redirectUrl,
|
|
2278
|
+
errorRedirectUrl
|
|
2256
2279
|
});
|
|
2257
2280
|
return routes.GET(req, context);
|
|
2258
2281
|
};
|
|
@@ -2310,9 +2333,22 @@ function toAstroHandler(baseHandler, options) {
|
|
|
2310
2333
|
return wrappedHandler(ctx.request, { params: { all: ctx.params.all } });
|
|
2311
2334
|
};
|
|
2312
2335
|
}
|
|
2313
|
-
function toSolidStartHandler(
|
|
2314
|
-
if (typeof
|
|
2315
|
-
const baseHandler =
|
|
2336
|
+
function toSolidStartHandler(clientOrHandlerOrOptions, _redirectOptions) {
|
|
2337
|
+
if (clientOrHandlerOrOptions && clientOrHandlerOrOptions.handler && typeof clientOrHandlerOrOptions.handler === "function") {
|
|
2338
|
+
const baseHandler = clientOrHandlerOrOptions.handler;
|
|
2339
|
+
const handler2 = async (event) => {
|
|
2340
|
+
return baseHandler(event.request);
|
|
2341
|
+
};
|
|
2342
|
+
return {
|
|
2343
|
+
GET: handler2,
|
|
2344
|
+
POST: handler2,
|
|
2345
|
+
PATCH: handler2,
|
|
2346
|
+
PUT: handler2,
|
|
2347
|
+
DELETE: handler2
|
|
2348
|
+
};
|
|
2349
|
+
}
|
|
2350
|
+
if (typeof clientOrHandlerOrOptions === "function") {
|
|
2351
|
+
const baseHandler = clientOrHandlerOrOptions;
|
|
2316
2352
|
const handler2 = async (event) => {
|
|
2317
2353
|
return baseHandler(event.request);
|
|
2318
2354
|
};
|
|
@@ -2324,7 +2360,7 @@ function toSolidStartHandler(handlerOrOptions) {
|
|
|
2324
2360
|
DELETE: handler2
|
|
2325
2361
|
};
|
|
2326
2362
|
}
|
|
2327
|
-
const options =
|
|
2363
|
+
const options = clientOrHandlerOrOptions;
|
|
2328
2364
|
if (!options.providers || Object.keys(options.providers).length === 0) {
|
|
2329
2365
|
throw new Error("toSolidStartHandler requires either a handler function or a providers config object");
|
|
2330
2366
|
}
|
|
@@ -2363,15 +2399,22 @@ function toSolidStartHandler(handlerOrOptions) {
|
|
|
2363
2399
|
DELETE: handler
|
|
2364
2400
|
};
|
|
2365
2401
|
}
|
|
2366
|
-
function toSvelteKitHandler(
|
|
2367
|
-
if (typeof
|
|
2368
|
-
const baseHandler =
|
|
2402
|
+
function toSvelteKitHandler(clientOrHandlerOrOptions, _redirectOptions) {
|
|
2403
|
+
if (clientOrHandlerOrOptions && clientOrHandlerOrOptions.handler && typeof clientOrHandlerOrOptions.handler === "function") {
|
|
2404
|
+
const baseHandler = clientOrHandlerOrOptions.handler;
|
|
2405
|
+
return async (event) => {
|
|
2406
|
+
const all = event.params?.all;
|
|
2407
|
+
return baseHandler(event.request, { params: { all } });
|
|
2408
|
+
};
|
|
2409
|
+
}
|
|
2410
|
+
if (typeof clientOrHandlerOrOptions === "function") {
|
|
2411
|
+
const baseHandler = clientOrHandlerOrOptions;
|
|
2369
2412
|
return async (event) => {
|
|
2370
2413
|
const all = event.params?.all;
|
|
2371
2414
|
return baseHandler(event.request, { params: { all } });
|
|
2372
2415
|
};
|
|
2373
2416
|
}
|
|
2374
|
-
const options =
|
|
2417
|
+
const options = clientOrHandlerOrOptions;
|
|
2375
2418
|
if (!options.providers || Object.keys(options.providers).length === 0) {
|
|
2376
2419
|
throw new Error("toSvelteKitHandler requires either a handler function or a providers config object");
|
|
2377
2420
|
}
|
package/dist/src/server.d.ts
CHANGED
|
@@ -14,6 +14,8 @@ import type { MCPPlugin } from './plugins/types.js';
|
|
|
14
14
|
* The redirectUri can be specified globally and will be used for all plugins.
|
|
15
15
|
* If not provided, it will auto-detect from INTEGRATE_URL or VERCEL_URL
|
|
16
16
|
*
|
|
17
|
+
* The returned client has `handler`, `POST`, and `GET` attached for easy access.
|
|
18
|
+
*
|
|
17
19
|
* ⚠️ SECURITY: The API key should NEVER be exposed to client-side code.
|
|
18
20
|
* Use environment variables WITHOUT the NEXT_PUBLIC_ prefix.
|
|
19
21
|
*
|
|
@@ -43,14 +45,17 @@ import type { MCPPlugin } from './plugins/types.js';
|
|
|
43
45
|
* });
|
|
44
46
|
* ```
|
|
45
47
|
*
|
|
46
|
-
* Then
|
|
48
|
+
* Then use the handler directly from the client:
|
|
47
49
|
* ```typescript
|
|
48
|
-
* //
|
|
49
|
-
*
|
|
50
|
+
* // routes/api/integrate/[...all]/+server.ts (SvelteKit)
|
|
51
|
+
* import { serverClient } from '$lib/integrate-server';
|
|
52
|
+
*
|
|
53
|
+
* export const POST = serverClient.handler;
|
|
54
|
+
* export const GET = serverClient.handler;
|
|
50
55
|
* ```
|
|
51
56
|
*/
|
|
52
57
|
export declare function createMCPServer<TPlugins extends readonly MCPPlugin[]>(config: MCPServerConfig<TPlugins>): {
|
|
53
|
-
/** Server-side MCP client instance with auto-connection */
|
|
58
|
+
/** Server-side MCP client instance with auto-connection and attached handler */
|
|
54
59
|
client: MCPClient<TPlugins>;
|
|
55
60
|
/** OAuth POST handler - export this from your route file */
|
|
56
61
|
POST: (req: any, context: {
|
|
@@ -122,15 +127,18 @@ export declare const GET: (req: any, context: {
|
|
|
122
127
|
}>;
|
|
123
128
|
}) => Promise<any>;
|
|
124
129
|
/**
|
|
125
|
-
* Create catch-all route handlers
|
|
130
|
+
* Create catch-all route handlers for Next.js
|
|
126
131
|
*
|
|
127
|
-
*
|
|
128
|
-
*
|
|
132
|
+
* Supports two usage patterns:
|
|
133
|
+
* 1. Pass a client instance from createMCPServer
|
|
134
|
+
* 2. Pass config object directly (for inline configuration)
|
|
129
135
|
*
|
|
130
|
-
* @param
|
|
136
|
+
* @param clientOrOptions - Client instance from createMCPServer, or config options
|
|
137
|
+
* @param redirectOptions - Redirect URL configuration (when first param is a client)
|
|
131
138
|
* @returns Object with POST and GET handlers for Next.js catch-all routes
|
|
132
139
|
*
|
|
133
140
|
* @example
|
|
141
|
+
* **Pattern 1: Using client from createMCPServer (Recommended)**
|
|
134
142
|
* ```typescript
|
|
135
143
|
* // lib/integrate-server.ts
|
|
136
144
|
* import { createMCPServer, githubPlugin } from 'integrate-sdk/server';
|
|
@@ -146,45 +154,52 @@ export declare const GET: (req: any, context: {
|
|
|
146
154
|
* });
|
|
147
155
|
*
|
|
148
156
|
* // app/api/integrate/[...all]/route.ts
|
|
149
|
-
*
|
|
150
|
-
* // RECOMMENDED: Import serverClient from your server setup file
|
|
151
157
|
* import { serverClient } from '@/lib/integrate-server';
|
|
152
158
|
* import { toNextJsHandler } from 'integrate-sdk/server';
|
|
153
159
|
*
|
|
154
|
-
* export const { POST, GET } = toNextJsHandler({
|
|
155
|
-
* client: serverClient, // Pass the client from createMCPServer
|
|
160
|
+
* export const { POST, GET } = toNextJsHandler(serverClient, {
|
|
156
161
|
* redirectUrl: '/dashboard',
|
|
162
|
+
* errorRedirectUrl: '/auth-error',
|
|
157
163
|
* });
|
|
164
|
+
* ```
|
|
165
|
+
*
|
|
166
|
+
* @example
|
|
167
|
+
* **Pattern 2: Inline configuration**
|
|
168
|
+
* ```typescript
|
|
169
|
+
* // app/api/integrate/[...all]/route.ts
|
|
170
|
+
* import { toNextJsHandler } from 'integrate-sdk/server';
|
|
158
171
|
*
|
|
159
|
-
* // Alternative: Provide config inline
|
|
160
172
|
* export const { POST, GET } = toNextJsHandler({
|
|
161
|
-
*
|
|
162
|
-
*
|
|
163
|
-
*
|
|
164
|
-
*
|
|
165
|
-
* clientSecret: process.env.GITHUB_CLIENT_SECRET!,
|
|
166
|
-
* },
|
|
173
|
+
* providers: {
|
|
174
|
+
* github: {
|
|
175
|
+
* clientId: process.env.GITHUB_CLIENT_ID!,
|
|
176
|
+
* clientSecret: process.env.GITHUB_CLIENT_SECRET!,
|
|
167
177
|
* },
|
|
168
178
|
* },
|
|
169
179
|
* redirectUrl: '/dashboard',
|
|
180
|
+
* errorRedirectUrl: '/auth-error',
|
|
170
181
|
* });
|
|
171
182
|
* ```
|
|
172
183
|
*/
|
|
173
|
-
export declare function toNextJsHandler(
|
|
174
|
-
/**
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
184
|
+
export declare function toNextJsHandler(clientOrOptions?: any | {
|
|
185
|
+
/** OAuth provider configurations */
|
|
186
|
+
providers?: Record<string, {
|
|
187
|
+
clientId: string;
|
|
188
|
+
clientSecret: string;
|
|
189
|
+
redirectUri?: string;
|
|
190
|
+
}>;
|
|
191
|
+
/** Server URL for MCP server */
|
|
192
|
+
serverUrl?: string;
|
|
193
|
+
/** API key for authentication */
|
|
194
|
+
apiKey?: string;
|
|
195
|
+
/** URL to redirect to after successful OAuth callback (default: '/') */
|
|
196
|
+
redirectUrl?: string;
|
|
197
|
+
/** URL to redirect to on OAuth error (default: '/auth-error') */
|
|
198
|
+
errorRedirectUrl?: string;
|
|
199
|
+
}, redirectOptions?: {
|
|
200
|
+
/** URL to redirect to after successful OAuth callback (default: '/') */
|
|
186
201
|
redirectUrl?: string;
|
|
187
|
-
/** URL to redirect to on OAuth error */
|
|
202
|
+
/** URL to redirect to on OAuth error (default: '/auth-error') */
|
|
188
203
|
errorRedirectUrl?: string;
|
|
189
204
|
}): {
|
|
190
205
|
POST: (req: any, context: {
|
|
@@ -216,7 +231,7 @@ export declare function toNextJsHandler(options: {
|
|
|
216
231
|
* // lib/integrate-server.ts
|
|
217
232
|
* import { createMCPServer, githubPlugin } from 'integrate-sdk/server';
|
|
218
233
|
*
|
|
219
|
-
* export const {
|
|
234
|
+
* export const { client: serverClient } = createMCPServer({
|
|
220
235
|
* plugins: [
|
|
221
236
|
* githubPlugin({
|
|
222
237
|
* clientId: import.meta.env.GITHUB_CLIENT_ID!,
|
|
@@ -227,9 +242,9 @@ export declare function toNextJsHandler(options: {
|
|
|
227
242
|
*
|
|
228
243
|
* // pages/api/integrate/[...all].ts
|
|
229
244
|
* import { toAstroHandler } from 'integrate-sdk/server';
|
|
230
|
-
* import {
|
|
245
|
+
* import { serverClient } from '@/lib/integrate-server';
|
|
231
246
|
*
|
|
232
|
-
* export const ALL = toAstroHandler(handler, {
|
|
247
|
+
* export const ALL = toAstroHandler(serverClient.handler, {
|
|
233
248
|
* redirectUrl: '/dashboard',
|
|
234
249
|
* errorRedirectUrl: '/auth-error',
|
|
235
250
|
* });
|
|
@@ -263,12 +278,12 @@ export declare function toAstroHandler(baseHandler: (request: Request, context?:
|
|
|
263
278
|
* @returns Object with GET, POST, PATCH, PUT, DELETE handlers
|
|
264
279
|
*
|
|
265
280
|
* @example
|
|
266
|
-
* **Pattern 1: Using
|
|
281
|
+
* **Pattern 1: Using serverClient from createMCPServer (Recommended)**
|
|
267
282
|
* ```typescript
|
|
268
283
|
* // lib/integrate-server.ts
|
|
269
284
|
* import { createMCPServer, githubPlugin } from 'integrate-sdk/server';
|
|
270
285
|
*
|
|
271
|
-
* export const {
|
|
286
|
+
* export const { client: serverClient } = createMCPServer({
|
|
272
287
|
* plugins: [
|
|
273
288
|
* githubPlugin({
|
|
274
289
|
* clientId: process.env.GITHUB_CLIENT_ID!,
|
|
@@ -279,9 +294,9 @@ export declare function toAstroHandler(baseHandler: (request: Request, context?:
|
|
|
279
294
|
*
|
|
280
295
|
* // src/routes/api/integrate/[...all].ts
|
|
281
296
|
* import { toSolidStartHandler } from 'integrate-sdk/server';
|
|
282
|
-
* import {
|
|
297
|
+
* import { serverClient } from '@/lib/integrate-server';
|
|
283
298
|
*
|
|
284
|
-
* const handlers = toSolidStartHandler(
|
|
299
|
+
* const handlers = toSolidStartHandler(serverClient, {
|
|
285
300
|
* redirectUrl: '/dashboard',
|
|
286
301
|
* errorRedirectUrl: '/auth-error',
|
|
287
302
|
* });
|
|
@@ -309,7 +324,7 @@ export declare function toAstroHandler(baseHandler: (request: Request, context?:
|
|
|
309
324
|
* export const { GET, POST, PATCH, PUT, DELETE } = handlers;
|
|
310
325
|
* ```
|
|
311
326
|
*/
|
|
312
|
-
export declare function toSolidStartHandler(
|
|
327
|
+
export declare function toSolidStartHandler(clientOrHandlerOrOptions: any | ((request: Request, context?: {
|
|
313
328
|
params?: {
|
|
314
329
|
action?: string;
|
|
315
330
|
all?: string | string[];
|
|
@@ -329,6 +344,11 @@ export declare function toSolidStartHandler(handlerOrOptions: ((request: Request
|
|
|
329
344
|
redirectUrl?: string;
|
|
330
345
|
/** URL to redirect to on OAuth error (default: '/auth-error') */
|
|
331
346
|
errorRedirectUrl?: string;
|
|
347
|
+
}, _redirectOptions?: {
|
|
348
|
+
/** URL to redirect to after successful OAuth callback (default: '/') */
|
|
349
|
+
redirectUrl?: string;
|
|
350
|
+
/** URL to redirect to on OAuth error (default: '/auth-error') */
|
|
351
|
+
errorRedirectUrl?: string;
|
|
332
352
|
}): {
|
|
333
353
|
GET: (event: {
|
|
334
354
|
request: Request;
|
|
@@ -358,12 +378,12 @@ export declare function toSolidStartHandler(handlerOrOptions: ((request: Request
|
|
|
358
378
|
* @returns Handler function for SvelteKit routes
|
|
359
379
|
*
|
|
360
380
|
* @example
|
|
361
|
-
* **Pattern 1: Using
|
|
381
|
+
* **Pattern 1: Using serverClient from createMCPServer (Recommended)**
|
|
362
382
|
* ```typescript
|
|
363
383
|
* // lib/integrate-server.ts
|
|
364
384
|
* import { createMCPServer, githubPlugin } from 'integrate-sdk/server';
|
|
365
385
|
*
|
|
366
|
-
* export const {
|
|
386
|
+
* export const { client: serverClient } = createMCPServer({
|
|
367
387
|
* plugins: [
|
|
368
388
|
* githubPlugin({
|
|
369
389
|
* clientId: process.env.GITHUB_CLIENT_ID!,
|
|
@@ -374,9 +394,9 @@ export declare function toSolidStartHandler(handlerOrOptions: ((request: Request
|
|
|
374
394
|
*
|
|
375
395
|
* // routes/api/integrate/[...all]/+server.ts
|
|
376
396
|
* import { toSvelteKitHandler } from 'integrate-sdk/server';
|
|
377
|
-
* import {
|
|
397
|
+
* import { serverClient } from '$lib/integrate-server';
|
|
378
398
|
*
|
|
379
|
-
* const svelteKitRoute = toSvelteKitHandler(
|
|
399
|
+
* const svelteKitRoute = toSvelteKitHandler(serverClient, {
|
|
380
400
|
* redirectUrl: '/dashboard',
|
|
381
401
|
* errorRedirectUrl: '/auth-error',
|
|
382
402
|
* });
|
|
@@ -406,7 +426,7 @@ export declare function toSolidStartHandler(handlerOrOptions: ((request: Request
|
|
|
406
426
|
* export const GET = handler;
|
|
407
427
|
* ```
|
|
408
428
|
*/
|
|
409
|
-
export declare function toSvelteKitHandler(
|
|
429
|
+
export declare function toSvelteKitHandler(clientOrHandlerOrOptions: any | ((request: Request, context?: {
|
|
410
430
|
params?: {
|
|
411
431
|
action?: string;
|
|
412
432
|
all?: string | string[];
|
|
@@ -426,5 +446,10 @@ export declare function toSvelteKitHandler(handlerOrOptions: ((request: Request,
|
|
|
426
446
|
redirectUrl?: string;
|
|
427
447
|
/** URL to redirect to on OAuth error (default: '/auth-error') */
|
|
428
448
|
errorRedirectUrl?: string;
|
|
449
|
+
}, _redirectOptions?: {
|
|
450
|
+
/** URL to redirect to after successful OAuth callback (default: '/') */
|
|
451
|
+
redirectUrl?: string;
|
|
452
|
+
/** URL to redirect to on OAuth error (default: '/auth-error') */
|
|
453
|
+
errorRedirectUrl?: string;
|
|
429
454
|
}): (event: any) => Promise<Response>;
|
|
430
455
|
//# sourceMappingURL=server.d.ts.map
|
package/dist/src/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AA8CpD
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"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"}
|