integrate-sdk 0.4.7 → 0.4.8

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/server.js CHANGED
@@ -1791,6 +1791,19 @@ function createSimplePlugin(config) {
1791
1791
  }
1792
1792
 
1793
1793
  // src/server.ts
1794
+ var globalServerConfig = null;
1795
+ function getDefaultRedirectUri() {
1796
+ if (typeof window !== "undefined") {
1797
+ return `${window.location.origin}/oauth/callback`;
1798
+ }
1799
+ if (process.env.VERCEL_URL) {
1800
+ return `https://${process.env.VERCEL_URL}/oauth/callback`;
1801
+ }
1802
+ if (process.env.NEXTAUTH_URL) {
1803
+ return `${process.env.NEXTAUTH_URL}/oauth/callback`;
1804
+ }
1805
+ return "http://localhost:3000/oauth/callback";
1806
+ }
1794
1807
  function createMCPServer(config) {
1795
1808
  if (typeof window !== "undefined") {
1796
1809
  throw new Error("createMCPServer() should only be called on the server-side. " + "Use createMCPClient() for client-side code.");
@@ -1798,11 +1811,12 @@ function createMCPServer(config) {
1798
1811
  const providers = {};
1799
1812
  for (const plugin of config.plugins) {
1800
1813
  if (plugin.oauth) {
1801
- const { clientId, clientSecret, redirectUri } = plugin.oauth;
1814
+ const { clientId, clientSecret, redirectUri: pluginRedirectUri } = plugin.oauth;
1802
1815
  if (!clientId || !clientSecret) {
1803
1816
  console.warn(`Warning: Plugin "${plugin.id}" is missing OAuth credentials. ` + `Provide clientId and clientSecret in the plugin configuration.`);
1804
1817
  continue;
1805
1818
  }
1819
+ const redirectUri = pluginRedirectUri || config.redirectUri || getDefaultRedirectUri();
1806
1820
  providers[plugin.id] = {
1807
1821
  clientId,
1808
1822
  clientSecret,
@@ -1810,6 +1824,7 @@ function createMCPServer(config) {
1810
1824
  };
1811
1825
  }
1812
1826
  }
1827
+ globalServerConfig = { providers };
1813
1828
  const client = new MCPClient(config);
1814
1829
  const { POST, GET } = createOAuthRouteHandlers({ providers });
1815
1830
  return {
@@ -1822,10 +1837,28 @@ function createOAuthRouteHandlers(config) {
1822
1837
  const handler = createNextOAuthHandler(config);
1823
1838
  return handler.createRoutes();
1824
1839
  }
1840
+ var POST = async (req, context) => {
1841
+ if (!globalServerConfig) {
1842
+ return Response.json({ error: "OAuth not configured. Call createMCPServer() in your server initialization file first." }, { status: 500 });
1843
+ }
1844
+ const handler = createNextOAuthHandler(globalServerConfig);
1845
+ const routes = handler.createRoutes();
1846
+ return routes.POST(req, context);
1847
+ };
1848
+ var GET = async (req, context) => {
1849
+ if (!globalServerConfig) {
1850
+ return Response.json({ error: "OAuth not configured. Call createMCPServer() in your server initialization file first." }, { status: 500 });
1851
+ }
1852
+ const handler = createNextOAuthHandler(globalServerConfig);
1853
+ const routes = handler.createRoutes();
1854
+ return routes.GET(req, context);
1855
+ };
1825
1856
  export {
1826
1857
  gmailPlugin,
1827
1858
  githubPlugin,
1828
1859
  genericOAuthPlugin,
1829
1860
  createSimplePlugin,
1830
- createMCPServer
1861
+ createMCPServer,
1862
+ POST,
1863
+ GET
1831
1864
  };
@@ -163,6 +163,20 @@ export interface MCPClientConfig<TPlugins extends readonly MCPPlugin[]> {
163
163
  * ```
164
164
  */
165
165
  autoHandleOAuthCallback?: boolean;
166
+ /**
167
+ * Global OAuth redirect URI for all providers
168
+ * Used as fallback when individual plugins don't specify their own redirectUri
169
+ * If not provided, will auto-detect from VERCEL_URL or NEXTAUTH_URL
170
+ *
171
+ * @example
172
+ * ```typescript
173
+ * createMCPServer({
174
+ * redirectUri: 'https://myapp.com/oauth/callback',
175
+ * plugins: [...]
176
+ * })
177
+ * ```
178
+ */
179
+ redirectUri?: string;
166
180
  }
167
181
  /**
168
182
  * Helper type to infer enabled tools from plugins
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/config/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,uDAAuD;IACvD,QAAQ,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,KAAK,EAAE,mBAAmB,CAAC;IAC3B,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,aAAa,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;AAEnF;;GAEG;AACH,MAAM,WAAW,eAAe,CAAC,QAAQ,SAAS,SAAS,SAAS,EAAE;IACpE,iCAAiC;IACjC,OAAO,EAAE,QAAQ,CAAC;IAElB,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEjC,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,yBAAyB;IACzB,UAAU,CAAC,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IAEF;;;;;;;;;;;;;;;;;;;OAmBG;IACH,gBAAgB,CAAC,EAAE,aAAa,CAAC;IAEjC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;;;;;;OAQG;IACH,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IAE7C;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;;;;;;;;;;;;OAcG;IACH,SAAS,CAAC,EAAE;QACV,+DAA+D;QAC/D,IAAI,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;QAC5B,oDAAoD;QACpD,YAAY,CAAC,EAAE;YACb,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,MAAM,CAAC,EAAE,MAAM,CAAC;SACjB,CAAC;QACF,sDAAsD;QACtD,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;KACnF,CAAC;IAEF;;;;;;;;;;;;OAYG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;;;;;;;;;;;;;;;;OAkBG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;;;;;;;;;;;OAaG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,CAAC,QAAQ,SAAS,SAAS,SAAS,EAAE,IACjE,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpC;;GAEG;AACH,MAAM,MAAM,gBAAgB,CAAC,QAAQ,SAAS,SAAS,SAAS,EAAE,IAAI;KACnE,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;CAC/C,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/config/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,uDAAuD;IACvD,QAAQ,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,KAAK,EAAE,mBAAmB,CAAC;IAC3B,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,aAAa,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;AAEnF;;GAEG;AACH,MAAM,WAAW,eAAe,CAAC,QAAQ,SAAS,SAAS,SAAS,EAAE;IACpE,iCAAiC;IACjC,OAAO,EAAE,QAAQ,CAAC;IAElB,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEjC,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,yBAAyB;IACzB,UAAU,CAAC,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IAEF;;;;;;;;;;;;;;;;;;;OAmBG;IACH,gBAAgB,CAAC,EAAE,aAAa,CAAC;IAEjC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;;;;;;OAQG;IACH,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IAE7C;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;;;;;;;;;;;;OAcG;IACH,SAAS,CAAC,EAAE;QACV,+DAA+D;QAC/D,IAAI,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;QAC5B,oDAAoD;QACpD,YAAY,CAAC,EAAE;YACb,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,MAAM,CAAC,EAAE,MAAM,CAAC;SACjB,CAAC;QACF,sDAAsD;QACtD,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;KACnF,CAAC;IAEF;;;;;;;;;;;;OAYG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;;;;;;;;;;;;;;;;OAkBG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;;;;;;;;;;;OAaG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAElC;;;;;;;;;;;;OAYG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,CAAC,QAAQ,SAAS,SAAS,SAAS,EAAE,IACjE,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpC;;GAEG;AACH,MAAM,MAAM,gBAAgB,CAAC,QAAQ,SAAS,SAAS,SAAS,EAAE,IAAI;KACnE,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;CAC/C,CAAC"}
@@ -11,12 +11,18 @@ import type { MCPPlugin } from './plugins/types.js';
11
11
  * This is for SERVER-SIDE ONLY - includes OAuth secrets from environment variables.
12
12
  * Use this in your server configuration file (e.g., lib/integrate-server.ts)
13
13
  *
14
+ * The redirectUri can be specified globally and will be used for all plugins.
15
+ * If not provided, it will auto-detect from VERCEL_URL or NEXTAUTH_URL.
16
+ *
14
17
  * @example
15
18
  * ```typescript
16
19
  * // lib/integrate-server.ts (server-side only!)
17
20
  * import { createMCPServer, githubPlugin, gmailPlugin } from 'integrate-sdk/server';
18
21
  *
19
- * export const { client: serverClient, POST, GET } = createMCPServer({
22
+ * export const { client: serverClient } = createMCPServer({
23
+ * redirectUri: process.env.VERCEL_URL
24
+ * ? `https://${process.env.VERCEL_URL}/oauth/callback`
25
+ * : 'http://localhost:3000/oauth/callback',
20
26
  * plugins: [
21
27
  * githubPlugin({
22
28
  * clientId: process.env.GITHUB_CLIENT_ID!,
@@ -35,7 +41,7 @@ import type { MCPPlugin } from './plugins/types.js';
35
41
  * Then in your route file:
36
42
  * ```typescript
37
43
  * // app/api/integrate/oauth/[action]/route.ts
38
- * export { POST, GET } from '@/lib/integrate-server';
44
+ * export { POST, GET } from 'integrate-sdk/server';
39
45
  * ```
40
46
  */
41
47
  export declare function createMCPServer<TPlugins extends readonly MCPPlugin[]>(config: MCPClientConfig<TPlugins>): {
@@ -63,4 +69,44 @@ export type { MCPClientConfig } from './config/types.js';
63
69
  export { githubPlugin } from './plugins/github.js';
64
70
  export { gmailPlugin } from './plugins/gmail.js';
65
71
  export { genericOAuthPlugin, createSimplePlugin } from './plugins/generic.js';
72
+ /**
73
+ * Singleton POST handler for OAuth routes
74
+ * Uses the configuration from createMCPServer()
75
+ *
76
+ * This handler must be used after calling createMCPServer() to register
77
+ * OAuth provider configuration.
78
+ *
79
+ * @example
80
+ * ```typescript
81
+ * // app/api/integrate/oauth/[action]/route.ts
82
+ * export { POST, GET } from 'integrate-sdk/server';
83
+ * ```
84
+ */
85
+ export declare const POST: (req: any, context: {
86
+ params: {
87
+ action: string;
88
+ } | Promise<{
89
+ action: string;
90
+ }>;
91
+ }) => Promise<any>;
92
+ /**
93
+ * Singleton GET handler for OAuth routes
94
+ * Uses the configuration from createMCPServer()
95
+ *
96
+ * This handler must be used after calling createMCPServer() to register
97
+ * OAuth provider configuration.
98
+ *
99
+ * @example
100
+ * ```typescript
101
+ * // app/api/integrate/oauth/[action]/route.ts
102
+ * export { POST, GET } from 'integrate-sdk/server';
103
+ * ```
104
+ */
105
+ export declare const GET: (req: any, context: {
106
+ params: {
107
+ action: string;
108
+ } | Promise<{
109
+ action: string;
110
+ }>;
111
+ }) => Promise<any>;
66
112
  //# sourceMappingURL=server.d.ts.map
@@ -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;AAGpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,eAAe,CAAC,QAAQ,SAAS,SAAS,SAAS,EAAE,EACnE,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC;IA4C/B,sCAAsC;;IAGtC,4DAA4D;;;;;;;;IAG5D,2DAA2D;;;;;;;;EAG9D;AAYD,YAAY,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGzD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC"}
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;AAyCpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,wBAAgB,eAAe,CAAC,QAAQ,SAAS,SAAS,SAAS,EAAE,EACnE,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC;IAkD/B,sCAAsC;;IAGtC,4DAA4D;;;;;;;;IAG5D,2DAA2D;;;;;;;;EAG9D;AAYD,YAAY,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGzD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE9E;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,IAAI,GACf,KAAK,GAAG,EACR,SAAS;IAAE,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,iBAYtE,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,GAAG,GACd,KAAK,GAAG,EACR,SAAS;IAAE,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,iBAYtE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "integrate-sdk",
3
- "version": "0.4.7",
3
+ "version": "0.4.8",
4
4
  "description": "Type-safe TypeScript SDK for MCP Client with plugin-based OAuth provider configuration",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",