@metorial/mcp-server 1.0.0-rc.3 → 1.0.0-rc.5

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/index.d.ts CHANGED
@@ -7,21 +7,21 @@ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
7
7
  import { ClientCapabilities, JSONRPCMessage } from '@modelcontextprotocol/sdk/types.js';
8
8
  import * as _modelcontextprotocol_sdk_types from '@modelcontextprotocol/sdk/types';
9
9
 
10
- type McpServerAuthUrlHandlerParams<AuthConfig extends {}> = {
11
- authConfig: AuthConfig;
10
+ type McpServerOAuthUrlHandlerParams<OAuthConfig extends {}> = {
11
+ authConfig: OAuthConfig;
12
12
  clientId: string;
13
13
  clientSecret: string;
14
14
  state: string;
15
15
  redirectUri: string;
16
16
  };
17
- type McpServerAuthUrlHandlerResult = {
17
+ type McpServerOAuthUrlHandlerResult = {
18
18
  authorizationUrl: string;
19
19
  authState?: Record<string, string> | null;
20
20
  };
21
- type McpServerAuthUrlHandlerInternal = <AuthConfig extends {}>(d: McpServerAuthUrlHandlerParams<AuthConfig>) => Promise<McpServerAuthUrlHandlerResult>;
22
- type McpServerAuthUrlHandler = <AuthConfig extends {}>(d: McpServerAuthUrlHandlerParams<AuthConfig>) => Promise<string | McpServerAuthUrlHandlerResult>;
23
- type McpServerAuthCallbackHandlerParams<AuthConfig extends {}> = {
24
- authConfig: AuthConfig;
21
+ type McpServerOAuthUrlHandlerInternal = <OAuthConfig extends {}>(d: McpServerOAuthUrlHandlerParams<OAuthConfig>) => Promise<McpServerOAuthUrlHandlerResult>;
22
+ type McpServerOAuthUrlHandler = <OAuthConfig extends {}>(d: McpServerOAuthUrlHandlerParams<OAuthConfig>) => Promise<string | McpServerOAuthUrlHandlerResult>;
23
+ type McpServerOAuthCallbackHandlerParams<OAuthConfig extends {}> = {
24
+ authConfig: OAuthConfig;
25
25
  authState: Record<string, string>;
26
26
  clientId: string;
27
27
  clientSecret: string;
@@ -31,7 +31,7 @@ type McpServerAuthCallbackHandlerParams<AuthConfig extends {}> = {
31
31
  callbackUrl: string;
32
32
  authorizationUrl: string;
33
33
  };
34
- type McpServerAuthCallbackHandlerResult = {
34
+ type McpServerOAuthCallbackHandlerResult = {
35
35
  accessToken: string;
36
36
  refreshToken?: string;
37
37
  expiresIn?: number;
@@ -39,15 +39,15 @@ type McpServerAuthCallbackHandlerResult = {
39
39
  tokenType?: string;
40
40
  [key: string]: any;
41
41
  };
42
- type McpServerAuthCallbackHandler = <AuthConfig extends {}>(d: McpServerAuthCallbackHandlerParams<AuthConfig>) => Promise<McpServerAuthCallbackHandlerResult>;
43
- type McpServerAuthTokenRefreshHandlerParams<AuthConfig extends {}> = {
44
- authConfig: AuthConfig;
42
+ type McpServerOAuthCallbackHandler = <OAuthConfig extends {}>(d: McpServerOAuthCallbackHandlerParams<OAuthConfig>) => Promise<McpServerOAuthCallbackHandlerResult>;
43
+ type McpServerOAuthTokenRefreshHandlerParams<OAuthConfig extends {}> = {
44
+ authConfig: OAuthConfig;
45
45
  authState: Record<string, string>;
46
46
  refreshToken: string;
47
47
  clientId: string;
48
48
  clientSecret: string;
49
49
  };
50
- type McpServerAuthTokenRefreshHandlerResult = {
50
+ type McpServerOAuthTokenRefreshHandlerResult = {
51
51
  accessToken: string;
52
52
  refreshToken?: string;
53
53
  expiresIn?: number;
@@ -55,32 +55,41 @@ type McpServerAuthTokenRefreshHandlerResult = {
55
55
  tokenType?: string;
56
56
  [key: string]: any;
57
57
  };
58
- type McpServerAuthTokenRefreshHandler = <AuthConfig extends {}>(d: McpServerAuthTokenRefreshHandlerParams<AuthConfig>) => Promise<McpServerAuthTokenRefreshHandlerResult>;
59
- type McpServerAuthValue = {
58
+ type McpServerOAuthTokenHandlers = {
59
+ getAuthorizationUrl: McpServerOAuthUrlHandler;
60
+ handleCallback: McpServerOAuthCallbackHandler;
61
+ refreshToken?: McpServerOAuthTokenRefreshHandler;
62
+ };
63
+ type McpServerOAuthTokenRefreshHandler = <OAuthConfig extends {}>(d: McpServerOAuthTokenRefreshHandlerParams<OAuthConfig>) => Promise<McpServerOAuthTokenRefreshHandlerResult>;
64
+ type McpServerOAuthValue = {
60
65
  accessToken: string;
61
66
  expiresIn?: number;
62
67
  scope?: string;
63
68
  tokenType?: string;
64
69
  [key: string]: any;
65
70
  };
66
- declare class McpServerAuthConfig<AuthConfig extends {}> {
71
+ declare class McpServerOAuthConfig<OAuthConfig extends {}> {
67
72
  #private;
68
- readonly schema: z__default.ZodType<AuthConfig>;
73
+ readonly schema: z__default.ZodType<OAuthConfig>;
69
74
  private constructor();
70
- static create<AuthConfig extends {}>(schema?: z__default.ZodType<AuthConfig>): McpServerAuthConfig<AuthConfig>;
71
- static getImplementation(config: McpServerAuthConfig<any>): {
72
- getAuthUrlHandler: McpServerAuthUrlHandlerInternal;
73
- callbackHandler: McpServerAuthCallbackHandler;
74
- tokenRefreshHandler: McpServerAuthTokenRefreshHandler | undefined;
75
+ static create<OAuthConfig extends {}>(...args: [z__default.ZodType<OAuthConfig>, McpServerOAuthTokenHandlers] | [McpServerOAuthTokenHandlers]): OAuthConfig;
76
+ static getImplementation(config: McpServerOAuthConfig<any>): {
77
+ setValue: (value: McpServerOAuthValue) => void;
78
+ registered: () => void;
79
+ getAuthUrlHandler: McpServerOAuthUrlHandlerInternal;
80
+ callbackHandler: McpServerOAuthCallbackHandler;
81
+ tokenRefreshHandler: McpServerOAuthTokenRefreshHandler | undefined;
75
82
  };
76
- setValue(value: McpServerAuthValue): void;
77
- getAuthorizationUrl(cb: McpServerAuthUrlHandler): this;
78
- handleCallback(cb: McpServerAuthCallbackHandler): this;
79
- refreshToken(cb: McpServerAuthTokenRefreshHandler): this;
80
- build(): AuthConfig;
83
+ static assertRegistered(config: McpServerOAuthConfig<any>): void;
84
+ getAuthorizationUrl(cb: McpServerOAuthUrlHandler): this;
85
+ handleCallback(cb: McpServerOAuthCallbackHandler): this;
86
+ refreshToken(cb: McpServerOAuthTokenRefreshHandler): this;
87
+ build(): OAuthConfig;
88
+ private setValue;
89
+ private registered;
81
90
  }
82
- declare let createAuth: <Config extends {}>(schema?: z__default.ZodType<Config>) => McpServerAuthConfig<Config>;
83
- declare let auth: <Config extends {}>(schema?: z__default.ZodType<Config>) => McpServerAuthConfig<Config>;
91
+ declare let createOAuth: <Config extends {}>(...args: [z__default.ZodType<Config>, McpServerOAuthTokenHandlers] | [McpServerOAuthTokenHandlers]) => Config;
92
+ declare let oAuth: <Config extends {}>(...args: [z__default.ZodType<Config>, McpServerOAuthTokenHandlers] | [McpServerOAuthTokenHandlers]) => Config;
84
93
 
85
94
  interface ClientOpts {
86
95
  client: {
@@ -123,9 +132,9 @@ declare class McpServerInstance {
123
132
  messages: JSONRPCMessage[];
124
133
  error: Error | null;
125
134
  }>;
126
- getOauthAuthorizationUrl(d: McpServerAuthUrlHandlerParams<any>): Promise<McpServerAuthUrlHandlerResult> | null;
127
- handleOauthCallback(d: McpServerAuthCallbackHandlerParams<any>): Promise<McpServerAuthCallbackHandlerResult> | null;
128
- handleOauthTokenRefresh(d: McpServerAuthTokenRefreshHandlerParams<any>): Promise<McpServerAuthTokenRefreshHandlerResult> | null;
135
+ getOauthAuthorizationUrl(d: McpServerOAuthUrlHandlerParams<any>): Promise<McpServerOAuthUrlHandlerResult> | null;
136
+ handleOauthCallback(d: McpServerOAuthCallbackHandlerParams<any>): Promise<McpServerOAuthCallbackHandlerResult> | null;
137
+ handleOauthTokenRefresh(d: McpServerOAuthTokenRefreshHandlerParams<any>): Promise<McpServerOAuthTokenRefreshHandlerResult> | null;
129
138
  }
130
139
  declare let createMcpServer: (instance: McpServerInstanceOpts) => McpServerInstance;
131
140
 
@@ -184,7 +193,7 @@ declare let handleMcpMessage: z__default.ZodObject<{
184
193
  }, z__default.core.$strip>;
185
194
  type HandleMcpMessage = z__default.infer<typeof handleMcpMessage>;
186
195
  type McpServerInstanceMessage = DiscoverMessage | AuthUrlMessage | OauthCallbackMessage | OauthTokenRefreshMessage | HandleMcpMessage;
187
- declare let serverAdapter: (instance: McpServerInstance, messages: McpServerInstanceMessage[]) => Promise<(McpServerAuthUrlHandlerResult | McpServerAuthCallbackHandlerResult | {
196
+ declare let serverAdapter: (instance: McpServerInstance, messages: McpServerInstanceMessage[]) => Promise<(McpServerOAuthUrlHandlerResult | McpServerOAuthCallbackHandlerResult | {
188
197
  messages: _modelcontextprotocol_sdk_types.JSONRPCMessage[];
189
198
  error: Error | null;
190
199
  } | {
@@ -213,9 +222,9 @@ declare let clientAdapter: (transport: (messages: McpServerInstanceMessage[]) =>
213
222
  hasTokenRefresh?: undefined;
214
223
  };
215
224
  }>;
216
- getOauthAuthorizationUrl: (d: Parameters<McpServerInstance["getOauthAuthorizationUrl"]>[0]) => Promise<McpServerAuthUrlHandlerResult | null>;
217
- handleOauthCallback: (d: Parameters<McpServerInstance["handleOauthCallback"]>[0]) => Promise<McpServerAuthCallbackHandlerResult | null>;
218
- handleOauthTokenRefresh: (d: Parameters<McpServerInstance["handleOauthTokenRefresh"]>[0]) => Promise<McpServerAuthTokenRefreshHandlerResult | null>;
225
+ getOauthAuthorizationUrl: (d: Parameters<McpServerInstance["getOauthAuthorizationUrl"]>[0]) => Promise<McpServerOAuthUrlHandlerResult | null>;
226
+ handleOauthCallback: (d: Parameters<McpServerInstance["handleOauthCallback"]>[0]) => Promise<McpServerOAuthCallbackHandlerResult | null>;
227
+ handleOauthTokenRefresh: (d: Parameters<McpServerInstance["handleOauthTokenRefresh"]>[0]) => Promise<McpServerOAuthTokenRefreshHandlerResult | null>;
219
228
  };
220
229
 
221
230
  declare class McpServerConfig<Config extends {}> {
@@ -223,10 +232,12 @@ declare class McpServerConfig<Config extends {}> {
223
232
  readonly schema: z__default.ZodType<Config>;
224
233
  private constructor();
225
234
  static create<Config extends {}>(schema: z__default.ZodType<Config>): McpServerConfig<Config>;
235
+ static assertRegistered(config: McpServerConfig<any>): void;
226
236
  setValue(value: unknown): void;
237
+ registered(): void;
227
238
  value(): Config;
228
239
  }
229
240
  declare let createConfig: <Config extends {}>(schema: z__default.ZodType<Config>) => Config;
230
241
  declare let config: <Config extends {}>(schema: z__default.ZodType<Config>) => Config;
231
242
 
232
- export { type McpServerAuthCallbackHandler, type McpServerAuthCallbackHandlerParams, type McpServerAuthCallbackHandlerResult, McpServerAuthConfig, type McpServerAuthTokenRefreshHandler, type McpServerAuthTokenRefreshHandlerParams, type McpServerAuthTokenRefreshHandlerResult, type McpServerAuthUrlHandler, type McpServerAuthUrlHandlerInternal, type McpServerAuthUrlHandlerParams, type McpServerAuthUrlHandlerResult, type McpServerAuthValue, McpServerConfig, McpServerInstance, type McpServerInstanceAdapterResponses, type McpServerInstanceMessage, type McpServerInstanceOpts, type McpServerInstanceServer, auth, clientAdapter, config, createAuth, createConfig, createMcpServer, serverAdapter };
243
+ export { McpServerConfig, McpServerInstance, type McpServerInstanceAdapterResponses, type McpServerInstanceMessage, type McpServerInstanceOpts, type McpServerInstanceServer, type McpServerOAuthCallbackHandler, type McpServerOAuthCallbackHandlerParams, type McpServerOAuthCallbackHandlerResult, McpServerOAuthConfig, type McpServerOAuthTokenRefreshHandler, type McpServerOAuthTokenRefreshHandlerParams, type McpServerOAuthTokenRefreshHandlerResult, type McpServerOAuthUrlHandler, type McpServerOAuthUrlHandlerInternal, type McpServerOAuthUrlHandlerParams, type McpServerOAuthUrlHandlerResult, type McpServerOAuthValue, clientAdapter, config, createConfig, createMcpServer, createOAuth, oAuth, serverAdapter };
package/dist/index.js CHANGED
@@ -5,29 +5,46 @@ import {
5
5
 
6
6
  // src/auth.ts
7
7
  import z from "zod";
8
- var McpServerAuthConfig = class _McpServerAuthConfig {
8
+ var authConfigs = /* @__PURE__ */ new Set();
9
+ var McpServerOAuthConfig = class _McpServerOAuthConfig {
9
10
  constructor(schema) {
10
11
  this.schema = schema;
12
+ authConfigs.add(this);
11
13
  }
12
14
  #value = null;
15
+ #isRegistered = false;
13
16
  #getAuthUrlHandler;
14
17
  #callbackHandler;
15
18
  #tokenRefreshHandler;
16
- static create(schema) {
17
- return new _McpServerAuthConfig(schema ?? z.object({}));
19
+ static create(...args) {
20
+ let schema = args.length == 2 ? args[0] : void 0;
21
+ let handlers = args.length == 2 ? args[1] : args[0];
22
+ let config2 = new _McpServerOAuthConfig(schema ?? z.object({}));
23
+ config2.getAuthorizationUrl(handlers.getAuthorizationUrl);
24
+ config2.handleCallback(handlers.handleCallback);
25
+ if (handlers.refreshToken) {
26
+ config2.refreshToken(handlers.refreshToken);
27
+ }
28
+ return config2.build();
18
29
  }
19
30
  static getImplementation(config2) {
20
31
  if (!config2.#getAuthUrlHandler || !config2.#callbackHandler) {
21
32
  throw new Error("MCP Server auth config is missing required handlers");
22
33
  }
23
34
  return {
35
+ setValue: config2.setValue.bind(config2),
36
+ registered: config2.registered.bind(config2),
24
37
  getAuthUrlHandler: config2.#getAuthUrlHandler,
25
38
  callbackHandler: config2.#callbackHandler,
26
39
  tokenRefreshHandler: config2.#tokenRefreshHandler
27
40
  };
28
41
  }
29
- setValue(value) {
30
- this.#value = value;
42
+ static assertRegistered(config2) {
43
+ if (!config2.#isRegistered) {
44
+ throw new Error(
45
+ "MCP Server auth config is not registered with `createMcpServer`. Please pass your OAuth config as `authConfig` when creating the server."
46
+ );
47
+ }
31
48
  }
32
49
  getAuthorizationUrl(cb) {
33
50
  this.#getAuthUrlHandler = async (d) => {
@@ -59,28 +76,41 @@ var McpServerAuthConfig = class _McpServerAuthConfig {
59
76
  if (prop == "__config__") {
60
77
  return self;
61
78
  }
62
- if (self.#value === null) {
63
- throw new Error("MCP Server auth config value not set");
79
+ if (self.#value === null || !self.#isRegistered) {
80
+ throw new Error(
81
+ "MCP Server auth config is not registered with `createMcpServer`. Please pass your OAuth config as `authConfig` when creating the server."
82
+ );
64
83
  }
65
84
  return self.#value[prop];
66
85
  }
67
86
  }
68
87
  );
69
88
  }
89
+ setValue(value) {
90
+ this.#value = value;
91
+ }
92
+ registered() {
93
+ this.#isRegistered = true;
94
+ }
70
95
  };
71
- var createAuth = (schema) => {
72
- return McpServerAuthConfig.create(schema);
96
+ var createOAuth = (...args) => McpServerOAuthConfig.create(...args);
97
+ var oAuth = createOAuth;
98
+ var getOAuthConfigImplementation = (configValue) => {
99
+ let self = configValue["__config__"];
100
+ return McpServerOAuthConfig.getImplementation(self);
73
101
  };
74
- var auth = (schema) => createAuth(schema);
75
- var getAuthConfigImplementation = (configValue) => {
102
+ var setOAuthConfigValue = (configValue, value) => {
76
103
  let self = configValue["__config__"];
77
- return McpServerAuthConfig.getImplementation(self);
104
+ let impl = McpServerOAuthConfig.getImplementation(self);
105
+ impl.setValue(value);
106
+ impl.registered();
78
107
  };
79
- var setAuthConfigValue = (configValue, value) => {
108
+ var registerOAuthConfig = (configValue) => {
80
109
  let self = configValue["__config__"];
81
- self.setValue(value);
110
+ let impl = McpServerOAuthConfig.getImplementation(self);
111
+ impl.registered();
82
112
  };
83
- var getAuthConfigSchema = (configValue) => {
113
+ var getOAuthConfigSchema = (configValue) => {
84
114
  let self = configValue["__config__"];
85
115
  return self.schema.toJSONSchema({
86
116
  unrepresentable: "any",
@@ -137,18 +167,31 @@ var handleMcpMessages = async (server, opts, messages) => {
137
167
  };
138
168
 
139
169
  // src/config.ts
170
+ var configs = /* @__PURE__ */ new Set();
140
171
  var McpServerConfig = class _McpServerConfig {
141
172
  constructor(schema) {
142
173
  this.schema = schema;
174
+ configs.add(this);
143
175
  }
144
176
  #value = null;
177
+ #isRegistered = false;
145
178
  static create(schema) {
146
179
  return new _McpServerConfig(schema);
147
180
  }
181
+ static assertRegistered(config2) {
182
+ if (!config2.#isRegistered) {
183
+ throw new Error(
184
+ "MCP Server config is not registered with `createMcpServer`. Please pass your config as `config` when creating the server."
185
+ );
186
+ }
187
+ }
148
188
  setValue(value) {
149
189
  let parsed = this.schema.parse(value);
150
190
  this.#value = parsed;
151
191
  }
192
+ registered() {
193
+ this.#isRegistered = true;
194
+ }
152
195
  value() {
153
196
  let self = this;
154
197
  return new Proxy(
@@ -158,8 +201,10 @@ var McpServerConfig = class _McpServerConfig {
158
201
  if (prop == "__config__") {
159
202
  return self;
160
203
  }
161
- if (self.#value === null) {
162
- throw new Error("MCP Server config value not set");
204
+ if (self.#value === null || !self.#isRegistered) {
205
+ throw new Error(
206
+ "MCP Server config is not registered with `createMcpServer`. Please pass your config as `config` when creating the server."
207
+ );
163
208
  }
164
209
  return self.#value[prop];
165
210
  }
@@ -174,6 +219,11 @@ var config = (schema) => createConfig(schema);
174
219
  var setConfigValue = (configValue, value) => {
175
220
  let self = configValue["__config__"];
176
221
  self.setValue(value);
222
+ self.registered();
223
+ };
224
+ var registerConfig = (configValue) => {
225
+ let self = configValue["__config__"];
226
+ self.registered();
177
227
  };
178
228
  var getConfigSchema = (configValue) => {
179
229
  let self = configValue["__config__"];
@@ -203,6 +253,10 @@ var getServer = (instance) => {
203
253
  var McpServerInstance = class _McpServerInstance {
204
254
  constructor(instance) {
205
255
  this.instance = instance;
256
+ if (instance.config) registerConfig(instance.config);
257
+ if (instance.authConfig) registerOAuthConfig(instance.authConfig);
258
+ for (let ac of authConfigs) McpServerOAuthConfig.assertRegistered(ac);
259
+ for (let co of configs) McpServerConfig.assertRegistered(co);
206
260
  this.#server = getServer(instance);
207
261
  }
208
262
  #server;
@@ -214,8 +268,8 @@ var McpServerInstance = class _McpServerInstance {
214
268
  configSchema: this.instance.config ? getConfigSchema(this.instance.config) : null,
215
269
  oauth: this.instance.authConfig ? {
216
270
  status: "enabled",
217
- authConfig: getAuthConfigSchema(this.instance.authConfig),
218
- hasTokenRefresh: !!getAuthConfigImplementation(this.instance.authConfig).tokenRefreshHandler
271
+ authConfig: getOAuthConfigSchema(this.instance.authConfig),
272
+ hasTokenRefresh: !!getOAuthConfigImplementation(this.instance.authConfig).tokenRefreshHandler
219
273
  } : {
220
274
  status: "disabled"
221
275
  }
@@ -226,23 +280,23 @@ var McpServerInstance = class _McpServerInstance {
226
280
  setConfigValue(this.instance.config, opts.config);
227
281
  }
228
282
  if (opts.authConfig && this.instance.authConfig) {
229
- setAuthConfigValue(this.instance.authConfig, opts.authConfig);
283
+ setOAuthConfigValue(this.instance.authConfig, opts.authConfig);
230
284
  }
231
285
  return handleMcpMessages(this.#server, opts.client, opts.message);
232
286
  }
233
287
  getOauthAuthorizationUrl(d) {
234
288
  if (!this.instance.authConfig) return null;
235
- let impl = getAuthConfigImplementation(this.instance.authConfig);
289
+ let impl = getOAuthConfigImplementation(this.instance.authConfig);
236
290
  return impl.getAuthUrlHandler(d);
237
291
  }
238
292
  handleOauthCallback(d) {
239
293
  if (!this.instance.authConfig) return null;
240
- let impl = getAuthConfigImplementation(this.instance.authConfig);
294
+ let impl = getOAuthConfigImplementation(this.instance.authConfig);
241
295
  return impl.callbackHandler(d);
242
296
  }
243
297
  handleOauthTokenRefresh(d) {
244
298
  if (!this.instance.authConfig) return null;
245
- let impl = getAuthConfigImplementation(this.instance.authConfig);
299
+ let impl = getOAuthConfigImplementation(this.instance.authConfig);
246
300
  if (!impl.tokenRefreshHandler) {
247
301
  return null;
248
302
  }
@@ -398,12 +452,12 @@ import {
398
452
  } from "@metorial/mcp";
399
453
  export {
400
454
  McpTool,
401
- auth,
402
455
  clientAdapter,
403
456
  config,
404
- createAuth,
405
457
  createConfig,
406
458
  createMcpServer,
459
+ createOAuth,
460
+ oAuth,
407
461
  serverAdapter
408
462
  };
409
463
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/instance.ts","../src/auth.ts","../src/client.ts","../src/config.ts","../src/adapter.ts","../src/index.ts"],"sourcesContent":["import {\n createMcpServer as createMcpServerInternal,\n CreateMcpServerOpts\n} from '@metorial/mcp';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { JSONRPCMessage } from '@modelcontextprotocol/sdk/types.js';\nimport {\n getAuthConfigImplementation,\n getAuthConfigSchema,\n McpServerAuthCallbackHandlerParams,\n McpServerAuthTokenRefreshHandlerParams,\n McpServerAuthUrlHandlerParams,\n setAuthConfigValue\n} from './auth';\nimport { ClientOpts, handleMcpMessages } from './client';\nimport { getConfigSchema, setConfigValue } from './config';\n\nexport type McpServerInstanceServer = CreateMcpServerOpts | { server: McpServer };\nlet getServer = (instance: McpServerInstanceServer) => {\n if ('server' in instance) {\n return instance.server;\n } else {\n return createMcpServerInternal(instance);\n }\n};\n\nexport type McpServerInstanceOpts = McpServerInstanceServer & {\n config?: any;\n authConfig?: any;\n};\n\nexport class McpServerInstance {\n #server: McpServer;\n\n private constructor(private instance: McpServerInstanceOpts) {\n this.#server = getServer(instance);\n }\n\n static create(instance: McpServerInstanceOpts) {\n return new McpServerInstance(instance);\n }\n\n discover() {\n return {\n configSchema: this.instance.config ? getConfigSchema(this.instance.config) : null,\n oauth: this.instance.authConfig\n ? {\n status: 'enabled' as const,\n authConfig: getAuthConfigSchema(this.instance.authConfig),\n hasTokenRefresh: !!getAuthConfigImplementation(this.instance.authConfig)\n .tokenRefreshHandler\n }\n : {\n status: 'disabled' as const\n }\n };\n }\n\n handleMcpMessages(opts: {\n config: any;\n authConfig: any;\n client: ClientOpts;\n message: JSONRPCMessage[];\n }) {\n if (this.instance.config) {\n setConfigValue(this.instance.config, opts.config);\n }\n if (opts.authConfig && this.instance.authConfig) {\n setAuthConfigValue(this.instance.authConfig, opts.authConfig);\n }\n\n return handleMcpMessages(this.#server, opts.client, opts.message);\n }\n\n getOauthAuthorizationUrl(d: McpServerAuthUrlHandlerParams<any>) {\n if (!this.instance.authConfig) return null;\n let impl = getAuthConfigImplementation(this.instance.authConfig);\n\n return impl.getAuthUrlHandler(d);\n }\n\n handleOauthCallback(d: McpServerAuthCallbackHandlerParams<any>) {\n if (!this.instance.authConfig) return null;\n let impl = getAuthConfigImplementation(this.instance.authConfig);\n\n return impl.callbackHandler(d);\n }\n\n handleOauthTokenRefresh(d: McpServerAuthTokenRefreshHandlerParams<any>) {\n if (!this.instance.authConfig) return null;\n let impl = getAuthConfigImplementation(this.instance.authConfig);\n\n if (!impl.tokenRefreshHandler) {\n return null;\n }\n\n return impl.tokenRefreshHandler(d);\n }\n}\n\nexport let createMcpServer = (instance: McpServerInstanceOpts) => {\n return McpServerInstance.create(instance);\n};\n","import z from 'zod';\n\nexport type McpServerAuthUrlHandlerParams<AuthConfig extends {}> = {\n authConfig: AuthConfig;\n clientId: string;\n clientSecret: string;\n state: string;\n redirectUri: string;\n};\n\nexport type McpServerAuthUrlHandlerResult = {\n authorizationUrl: string;\n authState?: Record<string, string> | null;\n};\n\nexport type McpServerAuthUrlHandlerInternal = <AuthConfig extends {}>(\n d: McpServerAuthUrlHandlerParams<AuthConfig>\n) => Promise<McpServerAuthUrlHandlerResult>;\n\nexport type McpServerAuthUrlHandler = <AuthConfig extends {}>(\n d: McpServerAuthUrlHandlerParams<AuthConfig>\n) => Promise<string | McpServerAuthUrlHandlerResult>;\n\nexport type McpServerAuthCallbackHandlerParams<AuthConfig extends {}> = {\n authConfig: AuthConfig;\n authState: Record<string, string>;\n clientId: string;\n clientSecret: string;\n code: string;\n state: string;\n redirectUri: string;\n callbackUrl: string;\n authorizationUrl: string;\n};\n\nexport type McpServerAuthCallbackHandlerResult = {\n accessToken: string;\n refreshToken?: string;\n expiresIn?: number;\n scope?: string;\n tokenType?: string;\n [key: string]: any;\n};\n\nexport type McpServerAuthCallbackHandler = <AuthConfig extends {}>(\n d: McpServerAuthCallbackHandlerParams<AuthConfig>\n) => Promise<McpServerAuthCallbackHandlerResult>;\n\nexport type McpServerAuthTokenRefreshHandlerParams<AuthConfig extends {}> = {\n authConfig: AuthConfig;\n authState: Record<string, string>;\n refreshToken: string;\n clientId: string;\n clientSecret: string;\n};\n\nexport type McpServerAuthTokenRefreshHandlerResult = {\n accessToken: string;\n refreshToken?: string;\n expiresIn?: number;\n scope?: string;\n tokenType?: string;\n [key: string]: any;\n};\n\nexport type McpServerAuthTokenRefreshHandler = <AuthConfig extends {}>(\n d: McpServerAuthTokenRefreshHandlerParams<AuthConfig>\n) => Promise<McpServerAuthTokenRefreshHandlerResult>;\n\nexport type McpServerAuthValue = {\n accessToken: string;\n expiresIn?: number;\n scope?: string;\n tokenType?: string;\n [key: string]: any;\n};\n\nexport class McpServerAuthConfig<AuthConfig extends {}> {\n #value: McpServerAuthValue | null = null;\n\n #getAuthUrlHandler?: McpServerAuthUrlHandlerInternal;\n #callbackHandler?: McpServerAuthCallbackHandler;\n #tokenRefreshHandler?: McpServerAuthTokenRefreshHandler;\n\n private constructor(public readonly schema: z.ZodType<AuthConfig>) {}\n\n static create<AuthConfig extends {}>(schema?: z.ZodType<AuthConfig>) {\n return new McpServerAuthConfig(schema ?? (z.object({}) as z.ZodType<AuthConfig>));\n }\n\n static getImplementation(config: McpServerAuthConfig<any>) {\n if (!config.#getAuthUrlHandler || !config.#callbackHandler) {\n throw new Error('MCP Server auth config is missing required handlers');\n }\n\n return {\n getAuthUrlHandler: config.#getAuthUrlHandler,\n callbackHandler: config.#callbackHandler,\n tokenRefreshHandler: config.#tokenRefreshHandler\n };\n }\n\n setValue(value: McpServerAuthValue) {\n this.#value = value;\n }\n\n getAuthorizationUrl(cb: McpServerAuthUrlHandler) {\n this.#getAuthUrlHandler = async d => {\n let res = await cb(d);\n if (typeof res == 'string') {\n return { authorizationUrl: res };\n }\n return res;\n };\n return this;\n }\n\n handleCallback(cb: McpServerAuthCallbackHandler) {\n this.#callbackHandler = cb;\n return this;\n }\n\n refreshToken(cb: McpServerAuthTokenRefreshHandler) {\n this.#tokenRefreshHandler = cb;\n return this;\n }\n\n build(): AuthConfig {\n if (!this.#getAuthUrlHandler || !this.#callbackHandler) {\n throw new Error('MCP Server auth config is missing required handlers');\n }\n\n let self = this;\n\n // Proxy for getting the config values\n // or throwing an error if not set\n return new Proxy(\n {},\n {\n get: (target, prop, receiver) => {\n if (prop == '__config__') {\n return self;\n }\n\n if (self.#value === null) {\n throw new Error('MCP Server auth config value not set');\n }\n\n return (self.#value as any)[prop];\n }\n }\n ) as any as AuthConfig;\n }\n}\n\nexport let createAuth = <Config extends {}>(schema?: z.ZodType<Config>) => {\n return McpServerAuthConfig.create(schema);\n};\n\nexport let auth = <Config extends {}>(schema?: z.ZodType<Config>) => createAuth(schema);\n\nexport let getAuthConfigImplementation = <Config extends {}>(configValue: any) => {\n let self = configValue['__config__'] as McpServerAuthConfig<Config>;\n return McpServerAuthConfig.getImplementation(self);\n};\n\nexport let setAuthConfigValue = <Config extends {}>(\n configValue: any,\n value: McpServerAuthValue\n) => {\n let self = configValue['__config__'] as McpServerAuthConfig<Config>;\n self.setValue(value);\n};\n\nexport let getAuthConfigSchema = <Config extends {}>(configValue: any) => {\n let self = configValue['__config__'] as McpServerAuthConfig<Config>;\n return self.schema.toJSONSchema({\n unrepresentable: 'any',\n override: ctx => {\n let def = ctx.zodSchema._zod.def;\n\n if (def.type === 'date') {\n ctx.jsonSchema.type = 'string';\n ctx.jsonSchema.format = 'date-time';\n }\n if (def.type === 'bigint') {\n ctx.jsonSchema.type = 'number';\n }\n }\n });\n};\n","import { createInMemoryTransport } from '@metorial/mcp-transport-memory';\nimport { Client } from '@modelcontextprotocol/sdk/client/index.js';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport {\n ClientCapabilities,\n JSONRPCMessage,\n Notification\n} from '@modelcontextprotocol/sdk/types.js';\nimport z from 'zod';\n\nexport interface ClientOpts {\n client: {\n name: string;\n version: string;\n };\n capabilities: ClientCapabilities;\n}\n\nexport let getClient = async (\n server: McpServer,\n notificationListener: (notification: Notification) => Promise<void>,\n opts: ClientOpts\n) => {\n let transport = createInMemoryTransport();\n await server.connect(transport.server);\n\n let client = new Client(opts.client);\n\n client.registerCapabilities(opts.capabilities);\n client.fallbackNotificationHandler = notificationListener;\n\n await client.connect(transport.client);\n\n return client;\n};\n\nexport let handleMcpMessages = async (\n server: McpServer,\n opts: ClientOpts,\n messages: JSONRPCMessage[]\n) => {\n let responses: JSONRPCMessage[] = [];\n\n let client = await getClient(\n server,\n async notification => {\n responses.push(notification as JSONRPCMessage);\n },\n opts\n );\n\n let error: Error | null = null;\n\n for (let message of messages) {\n try {\n if ('id' in message) {\n let res = await client.request(message as any, z.any());\n responses.push(res);\n } else {\n await client.notification(message as any);\n }\n } catch (err) {\n error = err as Error;\n break;\n }\n }\n\n return { messages: responses, error };\n};\n","import z from 'zod';\n\nexport class McpServerConfig<Config extends {}> {\n #value: Config | null = null;\n\n private constructor(public readonly schema: z.ZodType<Config>) {}\n\n static create<Config extends {}>(schema: z.ZodType<Config>) {\n return new McpServerConfig(schema);\n }\n\n setValue(value: unknown) {\n let parsed = this.schema.parse(value);\n this.#value = parsed;\n }\n\n value(): Config {\n let self = this;\n\n // Proxy for getting the config values\n // or throwing an error if not set\n return new Proxy(\n {},\n {\n get: (target, prop, receiver) => {\n if (prop == '__config__') {\n return self;\n }\n\n if (self.#value === null) {\n throw new Error('MCP Server config value not set');\n }\n\n return (self.#value as any)[prop];\n }\n }\n ) as any as Config;\n }\n}\n\nexport let createConfig = <Config extends {}>(schema: z.ZodType<Config>) => {\n return McpServerConfig.create(schema).value();\n};\n\nexport let config = <Config extends {}>(schema: z.ZodType<Config>) => createConfig(schema);\n\nexport let setConfigValue = <Config extends {}>(configValue: any, value: Config) => {\n let self = configValue['__config__'] as McpServerConfig<Config>;\n self.setValue(value);\n};\n\nexport let getConfigSchema = <Config extends {}>(configValue: any) => {\n let self = configValue['__config__'] as McpServerConfig<Config>;\n return self.schema.toJSONSchema({\n unrepresentable: 'any',\n override: ctx => {\n let def = ctx.zodSchema._zod.def;\n\n if (def.type === 'date') {\n ctx.jsonSchema.type = 'string';\n ctx.jsonSchema.format = 'date-time';\n }\n if (def.type === 'bigint') {\n ctx.jsonSchema.type = 'number';\n }\n }\n });\n};\n","import z from 'zod';\nimport { McpServerInstance } from './instance';\n\nlet discoverMessage = z.object({\n type: z.literal('metorial-mcp.discover')\n});\ntype DiscoverMessage = z.infer<typeof discoverMessage>;\n\nlet authUrlMessage = z.object({\n type: z.literal('metorial-mcp.get-oauth-authorization-url'),\n params: z.object({\n authConfig: z.record(z.string(), z.any()),\n clientId: z.string(),\n clientSecret: z.string(),\n state: z.string(),\n redirectUri: z.string()\n })\n});\ntype AuthUrlMessage = z.infer<typeof authUrlMessage>;\n\nlet oauthCallbackMessage = z.object({\n type: z.literal('metorial-mcp.handle-oauth-callback'),\n params: z.object({\n authConfig: z.record(z.string(), z.any()),\n authState: z.record(z.string(), z.string()),\n clientId: z.string(),\n clientSecret: z.string(),\n code: z.string(),\n state: z.string(),\n redirectUri: z.string(),\n callbackUrl: z.string(),\n authorizationUrl: z.string()\n })\n});\ntype OauthCallbackMessage = z.infer<typeof oauthCallbackMessage>;\n\nlet oauthTokenRefreshMessage = z.object({\n type: z.literal('metorial-mcp.handle-oauth-token-refresh'),\n params: z.object({\n authConfig: z.record(z.string(), z.any()),\n authState: z.record(z.string(), z.string()),\n refreshToken: z.string(),\n clientId: z.string(),\n clientSecret: z.string()\n })\n});\ntype OauthTokenRefreshMessage = z.infer<typeof oauthTokenRefreshMessage>;\n\nlet handleMcpMessage = z.object({\n type: z.literal('metorial-mcp.handle-mcp-message'),\n params: z.object({\n authConfig: z.optional(z.record(z.string(), z.any())),\n config: z.record(z.string(), z.any()),\n client: z.object({\n client: z.record(z.string(), z.any()),\n capabilities: z.record(z.string(), z.any())\n }),\n messages: z.array(z.any())\n })\n});\ntype HandleMcpMessage = z.infer<typeof handleMcpMessage>;\n\nlet allMessages = z.union([\n discoverMessage,\n authUrlMessage,\n oauthCallbackMessage,\n oauthTokenRefreshMessage,\n handleMcpMessage\n]);\n\nexport type McpServerInstanceMessage =\n | DiscoverMessage\n | AuthUrlMessage\n | OauthCallbackMessage\n | OauthTokenRefreshMessage\n | HandleMcpMessage;\n\nexport let serverAdapter = async (\n instance: McpServerInstance,\n messages: McpServerInstanceMessage[]\n) =>\n Promise.all(\n messages.map(async message => {\n let parsed = allMessages.parse(message);\n\n switch (parsed.type) {\n case 'metorial-mcp.discover': {\n return instance.discover();\n }\n case 'metorial-mcp.get-oauth-authorization-url': {\n return instance.getOauthAuthorizationUrl(parsed.params);\n }\n case 'metorial-mcp.handle-oauth-callback': {\n return instance.handleOauthCallback(parsed.params);\n }\n case 'metorial-mcp.handle-oauth-token-refresh': {\n return instance.handleOauthTokenRefresh(parsed.params);\n }\n case 'metorial-mcp.handle-mcp-message': {\n return instance.handleMcpMessages({\n config: parsed.params.config || {},\n authConfig: parsed.params.authConfig || {},\n client: parsed.params.client as any,\n message: parsed.params.messages\n });\n }\n }\n\n throw new Error(`Unknown message type: ${(message as any).type}`);\n })\n );\n\nexport type McpServerInstanceAdapterResponses = Awaited<ReturnType<typeof serverAdapter>>;\n\nexport let clientAdapter = (\n transport: (\n messages: McpServerInstanceMessage[]\n ) => Promise<McpServerInstanceAdapterResponses>\n) => {\n let queue: {\n msg: McpServerInstanceMessage;\n resolve: (res: any) => void;\n reject: (err: any) => void;\n }[] = [];\n let isSent = { current: false };\n let isSending = { current: false };\n\n let send = async (message: McpServerInstanceMessage) => {\n let promise = new Promise<any>((resolve, reject) => {\n queue.push({ msg: message, resolve, reject });\n });\n\n if (!isSending.current) {\n isSending.current = true;\n\n setTimeout(async () => {\n isSent.current = true;\n\n try {\n let res = await transport(queue.map(q => q.msg));\n res.forEach((r, i) => {\n queue[i].resolve(r);\n });\n } catch (err) {\n queue.forEach(q => {\n q.reject(err);\n });\n } finally {\n queue = [];\n }\n }, 2);\n }\n\n return promise;\n };\n\n return {\n discover: async () => {\n return send({ type: 'metorial-mcp.discover' }) as Promise<\n Awaited<ReturnType<McpServerInstance['discover']>>\n >;\n },\n\n getOauthAuthorizationUrl: async (\n d: Parameters<McpServerInstance['getOauthAuthorizationUrl']>[0]\n ) => {\n return send({\n type: 'metorial-mcp.get-oauth-authorization-url',\n params: d\n }) as Promise<Awaited<ReturnType<McpServerInstance['getOauthAuthorizationUrl']>>>;\n },\n\n handleOauthCallback: async (\n d: Parameters<McpServerInstance['handleOauthCallback']>[0]\n ) => {\n return send({\n type: 'metorial-mcp.handle-oauth-callback',\n params: d\n }) as Promise<Awaited<ReturnType<McpServerInstance['handleOauthCallback']>>>;\n },\n\n handleOauthTokenRefresh: async (\n d: Parameters<McpServerInstance['handleOauthTokenRefresh']>[0]\n ) => {\n return send({\n type: 'metorial-mcp.handle-oauth-token-refresh',\n params: d\n }) as Promise<Awaited<ReturnType<McpServerInstance['handleOauthTokenRefresh']>>>;\n }\n };\n};\n","export {\n createMcpServer,\n type McpServerInstance,\n type McpServerInstanceOpts,\n type McpServerInstanceServer\n} from './instance';\n\nexport {\n clientAdapter,\n serverAdapter,\n type McpServerInstanceAdapterResponses,\n type McpServerInstanceMessage\n} from './adapter';\n\nexport {\n auth,\n createAuth,\n type McpServerAuthCallbackHandler,\n type McpServerAuthCallbackHandlerParams,\n type McpServerAuthCallbackHandlerResult,\n type McpServerAuthConfig,\n type McpServerAuthTokenRefreshHandler,\n type McpServerAuthTokenRefreshHandlerParams,\n type McpServerAuthTokenRefreshHandlerResult,\n type McpServerAuthUrlHandler,\n type McpServerAuthUrlHandlerInternal,\n type McpServerAuthUrlHandlerParams,\n type McpServerAuthUrlHandlerResult,\n type McpServerAuthValue\n} from './auth';\n\nexport { config, createConfig, type McpServerConfig } from './config';\n\nexport {\n McpTool,\n type McpServerInfo,\n type McpToolAnnotations,\n type McpToolHandlerOutput,\n type McpToolHandlerOutputSync,\n type McpToolImplementation,\n type McpToolOpts\n} from '@metorial/mcp';\n"],"mappings":"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","names":["config","z","z"]}
1
+ {"version":3,"sources":["../src/instance.ts","../src/auth.ts","../src/client.ts","../src/config.ts","../src/adapter.ts","../src/index.ts"],"sourcesContent":["import {\n createMcpServer as createMcpServerInternal,\n CreateMcpServerOpts\n} from '@metorial/mcp';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { JSONRPCMessage } from '@modelcontextprotocol/sdk/types.js';\nimport {\n authConfigs,\n getOAuthConfigImplementation,\n getOAuthConfigSchema,\n McpServerOAuthCallbackHandlerParams,\n McpServerOAuthConfig,\n McpServerOAuthTokenRefreshHandlerParams,\n McpServerOAuthUrlHandlerParams,\n registerOAuthConfig,\n setOAuthConfigValue\n} from './auth';\nimport { ClientOpts, handleMcpMessages } from './client';\nimport {\n configs,\n getConfigSchema,\n McpServerConfig,\n registerConfig,\n setConfigValue\n} from './config';\n\nexport type McpServerInstanceServer = CreateMcpServerOpts | { server: McpServer };\nlet getServer = (instance: McpServerInstanceServer) => {\n if ('server' in instance) {\n return instance.server;\n } else {\n return createMcpServerInternal(instance);\n }\n};\n\nexport type McpServerInstanceOpts = McpServerInstanceServer & {\n config?: any;\n authConfig?: any;\n};\n\nexport class McpServerInstance {\n #server: McpServer;\n\n private constructor(private instance: McpServerInstanceOpts) {\n if (instance.config) registerConfig(instance.config);\n if (instance.authConfig) registerOAuthConfig(instance.authConfig);\n\n for (let ac of authConfigs) McpServerOAuthConfig.assertRegistered(ac);\n for (let co of configs) McpServerConfig.assertRegistered(co);\n\n this.#server = getServer(instance);\n }\n\n static create(instance: McpServerInstanceOpts) {\n return new McpServerInstance(instance);\n }\n\n discover() {\n return {\n configSchema: this.instance.config ? getConfigSchema(this.instance.config) : null,\n oauth: this.instance.authConfig\n ? {\n status: 'enabled' as const,\n authConfig: getOAuthConfigSchema(this.instance.authConfig),\n hasTokenRefresh: !!getOAuthConfigImplementation(this.instance.authConfig)\n .tokenRefreshHandler\n }\n : {\n status: 'disabled' as const\n }\n };\n }\n\n handleMcpMessages(opts: {\n config: any;\n authConfig: any;\n client: ClientOpts;\n message: JSONRPCMessage[];\n }) {\n if (this.instance.config) {\n setConfigValue(this.instance.config, opts.config);\n }\n if (opts.authConfig && this.instance.authConfig) {\n setOAuthConfigValue(this.instance.authConfig, opts.authConfig);\n }\n\n return handleMcpMessages(this.#server, opts.client, opts.message);\n }\n\n getOauthAuthorizationUrl(d: McpServerOAuthUrlHandlerParams<any>) {\n if (!this.instance.authConfig) return null;\n let impl = getOAuthConfigImplementation(this.instance.authConfig);\n\n return impl.getAuthUrlHandler(d);\n }\n\n handleOauthCallback(d: McpServerOAuthCallbackHandlerParams<any>) {\n if (!this.instance.authConfig) return null;\n let impl = getOAuthConfigImplementation(this.instance.authConfig);\n\n return impl.callbackHandler(d);\n }\n\n handleOauthTokenRefresh(d: McpServerOAuthTokenRefreshHandlerParams<any>) {\n if (!this.instance.authConfig) return null;\n let impl = getOAuthConfigImplementation(this.instance.authConfig);\n\n if (!impl.tokenRefreshHandler) {\n return null;\n }\n\n return impl.tokenRefreshHandler(d);\n }\n}\n\nexport let createMcpServer = (instance: McpServerInstanceOpts) => {\n return McpServerInstance.create(instance);\n};\n","import z from 'zod';\n\nexport type McpServerOAuthUrlHandlerParams<OAuthConfig extends {}> = {\n authConfig: OAuthConfig;\n clientId: string;\n clientSecret: string;\n state: string;\n redirectUri: string;\n};\n\nexport type McpServerOAuthUrlHandlerResult = {\n authorizationUrl: string;\n authState?: Record<string, string> | null;\n};\n\nexport type McpServerOAuthUrlHandlerInternal = <OAuthConfig extends {}>(\n d: McpServerOAuthUrlHandlerParams<OAuthConfig>\n) => Promise<McpServerOAuthUrlHandlerResult>;\n\nexport type McpServerOAuthUrlHandler = <OAuthConfig extends {}>(\n d: McpServerOAuthUrlHandlerParams<OAuthConfig>\n) => Promise<string | McpServerOAuthUrlHandlerResult>;\n\nexport type McpServerOAuthCallbackHandlerParams<OAuthConfig extends {}> = {\n authConfig: OAuthConfig;\n authState: Record<string, string>;\n clientId: string;\n clientSecret: string;\n code: string;\n state: string;\n redirectUri: string;\n callbackUrl: string;\n authorizationUrl: string;\n};\n\nexport type McpServerOAuthCallbackHandlerResult = {\n accessToken: string;\n refreshToken?: string;\n expiresIn?: number;\n scope?: string;\n tokenType?: string;\n [key: string]: any;\n};\n\nexport type McpServerOAuthCallbackHandler = <OAuthConfig extends {}>(\n d: McpServerOAuthCallbackHandlerParams<OAuthConfig>\n) => Promise<McpServerOAuthCallbackHandlerResult>;\n\nexport type McpServerOAuthTokenRefreshHandlerParams<OAuthConfig extends {}> = {\n authConfig: OAuthConfig;\n authState: Record<string, string>;\n refreshToken: string;\n clientId: string;\n clientSecret: string;\n};\n\nexport type McpServerOAuthTokenRefreshHandlerResult = {\n accessToken: string;\n refreshToken?: string;\n expiresIn?: number;\n scope?: string;\n tokenType?: string;\n [key: string]: any;\n};\n\nexport type McpServerOAuthTokenHandlers = {\n getAuthorizationUrl: McpServerOAuthUrlHandler;\n handleCallback: McpServerOAuthCallbackHandler;\n refreshToken?: McpServerOAuthTokenRefreshHandler;\n};\n\nexport type McpServerOAuthTokenRefreshHandler = <OAuthConfig extends {}>(\n d: McpServerOAuthTokenRefreshHandlerParams<OAuthConfig>\n) => Promise<McpServerOAuthTokenRefreshHandlerResult>;\n\nexport type McpServerOAuthValue = {\n accessToken: string;\n expiresIn?: number;\n scope?: string;\n tokenType?: string;\n [key: string]: any;\n};\n\nexport let authConfigs = new Set<McpServerOAuthConfig<any>>();\n\nexport class McpServerOAuthConfig<OAuthConfig extends {}> {\n #value: McpServerOAuthValue | null = null;\n #isRegistered = false;\n\n #getAuthUrlHandler?: McpServerOAuthUrlHandlerInternal;\n #callbackHandler?: McpServerOAuthCallbackHandler;\n #tokenRefreshHandler?: McpServerOAuthTokenRefreshHandler;\n\n private constructor(public readonly schema: z.ZodType<OAuthConfig>) {\n authConfigs.add(this);\n }\n\n static create<OAuthConfig extends {}>(\n ...args:\n | [z.ZodType<OAuthConfig>, McpServerOAuthTokenHandlers]\n | [McpServerOAuthTokenHandlers]\n ) {\n let schema = args.length == 2 ? args[0] : undefined;\n let handlers = args.length == 2 ? args[1] : args[0];\n\n let config = new McpServerOAuthConfig(schema ?? (z.object({}) as z.ZodType<OAuthConfig>));\n\n config.getAuthorizationUrl(handlers.getAuthorizationUrl);\n config.handleCallback(handlers.handleCallback);\n if (handlers.refreshToken) {\n config.refreshToken(handlers.refreshToken);\n }\n\n return config.build();\n }\n\n static getImplementation(config: McpServerOAuthConfig<any>) {\n if (!config.#getAuthUrlHandler || !config.#callbackHandler) {\n throw new Error('MCP Server auth config is missing required handlers');\n }\n\n return {\n setValue: config.setValue.bind(config),\n registered: config.registered.bind(config),\n\n getAuthUrlHandler: config.#getAuthUrlHandler,\n callbackHandler: config.#callbackHandler,\n tokenRefreshHandler: config.#tokenRefreshHandler\n };\n }\n\n static assertRegistered(config: McpServerOAuthConfig<any>) {\n if (!config.#isRegistered) {\n throw new Error(\n 'MCP Server auth config is not registered with `createMcpServer`. Please pass your OAuth config as `authConfig` when creating the server.'\n );\n }\n }\n\n getAuthorizationUrl(cb: McpServerOAuthUrlHandler) {\n this.#getAuthUrlHandler = async d => {\n let res = await cb(d);\n if (typeof res == 'string') {\n return { authorizationUrl: res };\n }\n return res;\n };\n return this;\n }\n\n handleCallback(cb: McpServerOAuthCallbackHandler) {\n this.#callbackHandler = cb;\n return this;\n }\n\n refreshToken(cb: McpServerOAuthTokenRefreshHandler) {\n this.#tokenRefreshHandler = cb;\n return this;\n }\n\n build(): OAuthConfig {\n if (!this.#getAuthUrlHandler || !this.#callbackHandler) {\n throw new Error('MCP Server auth config is missing required handlers');\n }\n\n let self = this;\n\n // Proxy for getting the config values\n // or throwing an error if not set\n return new Proxy(\n {},\n {\n get: (target, prop, receiver) => {\n if (prop == '__config__') {\n return self;\n }\n\n if (self.#value === null || !self.#isRegistered) {\n throw new Error(\n 'MCP Server auth config is not registered with `createMcpServer`. Please pass your OAuth config as `authConfig` when creating the server.'\n );\n }\n\n return (self.#value as any)[prop];\n }\n }\n ) as any as OAuthConfig;\n }\n\n private setValue(value: McpServerOAuthValue) {\n this.#value = value;\n }\n\n private registered() {\n this.#isRegistered = true;\n }\n}\n\nexport let createOAuth = <Config extends {}>(\n ...args: [z.ZodType<Config>, McpServerOAuthTokenHandlers] | [McpServerOAuthTokenHandlers]\n) => McpServerOAuthConfig.create(...args);\n\nexport let oAuth = createOAuth;\n\nexport let getOAuthConfigImplementation = <Config extends {}>(configValue: any) => {\n let self = configValue['__config__'] as McpServerOAuthConfig<Config>;\n return McpServerOAuthConfig.getImplementation(self);\n};\n\nexport let setOAuthConfigValue = <Config extends {}>(\n configValue: any,\n value: McpServerOAuthValue\n) => {\n let self = configValue['__config__'] as McpServerOAuthConfig<Config>;\n let impl = McpServerOAuthConfig.getImplementation(self);\n\n impl.setValue(value);\n impl.registered();\n};\n\nexport let registerOAuthConfig = <Config extends {}>(configValue: any) => {\n let self = configValue['__config__'] as McpServerOAuthConfig<Config>;\n let impl = McpServerOAuthConfig.getImplementation(self);\n impl.registered();\n};\n\nexport let getOAuthConfigSchema = <Config extends {}>(configValue: any) => {\n let self = configValue['__config__'] as McpServerOAuthConfig<Config>;\n return self.schema.toJSONSchema({\n unrepresentable: 'any',\n override: ctx => {\n let def = ctx.zodSchema._zod.def;\n\n if (def.type === 'date') {\n ctx.jsonSchema.type = 'string';\n ctx.jsonSchema.format = 'date-time';\n }\n if (def.type === 'bigint') {\n ctx.jsonSchema.type = 'number';\n }\n }\n });\n};\n","import { createInMemoryTransport } from '@metorial/mcp-transport-memory';\nimport { Client } from '@modelcontextprotocol/sdk/client/index.js';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport {\n ClientCapabilities,\n JSONRPCMessage,\n Notification\n} from '@modelcontextprotocol/sdk/types.js';\nimport z from 'zod';\n\nexport interface ClientOpts {\n client: {\n name: string;\n version: string;\n };\n capabilities: ClientCapabilities;\n}\n\nexport let getClient = async (\n server: McpServer,\n notificationListener: (notification: Notification) => Promise<void>,\n opts: ClientOpts\n) => {\n let transport = createInMemoryTransport();\n await server.connect(transport.server);\n\n let client = new Client(opts.client);\n\n client.registerCapabilities(opts.capabilities);\n client.fallbackNotificationHandler = notificationListener;\n\n await client.connect(transport.client);\n\n return client;\n};\n\nexport let handleMcpMessages = async (\n server: McpServer,\n opts: ClientOpts,\n messages: JSONRPCMessage[]\n) => {\n let responses: JSONRPCMessage[] = [];\n\n let client = await getClient(\n server,\n async notification => {\n responses.push(notification as JSONRPCMessage);\n },\n opts\n );\n\n let error: Error | null = null;\n\n for (let message of messages) {\n try {\n if ('id' in message) {\n let res = await client.request(message as any, z.any());\n responses.push(res);\n } else {\n await client.notification(message as any);\n }\n } catch (err) {\n error = err as Error;\n break;\n }\n }\n\n return { messages: responses, error };\n};\n","import z from 'zod';\n\nexport let configs = new Set<McpServerConfig<any>>();\n\nexport class McpServerConfig<Config extends {}> {\n #value: Config | null = null;\n #isRegistered = false;\n\n private constructor(public readonly schema: z.ZodType<Config>) {\n configs.add(this);\n }\n\n static create<Config extends {}>(schema: z.ZodType<Config>) {\n return new McpServerConfig(schema);\n }\n\n static assertRegistered(config: McpServerConfig<any>) {\n if (!config.#isRegistered) {\n throw new Error(\n 'MCP Server config is not registered with `createMcpServer`. Please pass your config as `config` when creating the server.'\n );\n }\n }\n\n setValue(value: unknown) {\n let parsed = this.schema.parse(value);\n this.#value = parsed;\n }\n\n registered() {\n this.#isRegistered = true;\n }\n\n value(): Config {\n let self = this;\n\n // Proxy for getting the config values\n // or throwing an error if not set\n return new Proxy(\n {},\n {\n get: (target, prop, receiver) => {\n if (prop == '__config__') {\n return self;\n }\n\n if (self.#value === null || !self.#isRegistered) {\n throw new Error(\n 'MCP Server config is not registered with `createMcpServer`. Please pass your config as `config` when creating the server.'\n );\n }\n\n return (self.#value as any)[prop];\n }\n }\n ) as any as Config;\n }\n}\n\nexport let createConfig = <Config extends {}>(schema: z.ZodType<Config>) => {\n return McpServerConfig.create(schema).value();\n};\n\nexport let config = <Config extends {}>(schema: z.ZodType<Config>) => createConfig(schema);\n\nexport let setConfigValue = <Config extends {}>(configValue: any, value: Config) => {\n let self = configValue['__config__'] as McpServerConfig<Config>;\n self.setValue(value);\n self.registered();\n};\n\nexport let registerConfig = <Config extends {}>(configValue: any) => {\n let self = configValue['__config__'] as McpServerConfig<Config>;\n self.registered();\n};\n\nexport let getConfigSchema = <Config extends {}>(configValue: any) => {\n let self = configValue['__config__'] as McpServerConfig<Config>;\n return self.schema.toJSONSchema({\n unrepresentable: 'any',\n override: ctx => {\n let def = ctx.zodSchema._zod.def;\n\n if (def.type === 'date') {\n ctx.jsonSchema.type = 'string';\n ctx.jsonSchema.format = 'date-time';\n }\n if (def.type === 'bigint') {\n ctx.jsonSchema.type = 'number';\n }\n }\n });\n};\n","import z from 'zod';\nimport { McpServerInstance } from './instance';\n\nlet discoverMessage = z.object({\n type: z.literal('metorial-mcp.discover')\n});\ntype DiscoverMessage = z.infer<typeof discoverMessage>;\n\nlet authUrlMessage = z.object({\n type: z.literal('metorial-mcp.get-oauth-authorization-url'),\n params: z.object({\n authConfig: z.record(z.string(), z.any()),\n clientId: z.string(),\n clientSecret: z.string(),\n state: z.string(),\n redirectUri: z.string()\n })\n});\ntype AuthUrlMessage = z.infer<typeof authUrlMessage>;\n\nlet oauthCallbackMessage = z.object({\n type: z.literal('metorial-mcp.handle-oauth-callback'),\n params: z.object({\n authConfig: z.record(z.string(), z.any()),\n authState: z.record(z.string(), z.string()),\n clientId: z.string(),\n clientSecret: z.string(),\n code: z.string(),\n state: z.string(),\n redirectUri: z.string(),\n callbackUrl: z.string(),\n authorizationUrl: z.string()\n })\n});\ntype OauthCallbackMessage = z.infer<typeof oauthCallbackMessage>;\n\nlet oauthTokenRefreshMessage = z.object({\n type: z.literal('metorial-mcp.handle-oauth-token-refresh'),\n params: z.object({\n authConfig: z.record(z.string(), z.any()),\n authState: z.record(z.string(), z.string()),\n refreshToken: z.string(),\n clientId: z.string(),\n clientSecret: z.string()\n })\n});\ntype OauthTokenRefreshMessage = z.infer<typeof oauthTokenRefreshMessage>;\n\nlet handleMcpMessage = z.object({\n type: z.literal('metorial-mcp.handle-mcp-message'),\n params: z.object({\n authConfig: z.optional(z.record(z.string(), z.any())),\n config: z.record(z.string(), z.any()),\n client: z.object({\n client: z.record(z.string(), z.any()),\n capabilities: z.record(z.string(), z.any())\n }),\n messages: z.array(z.any())\n })\n});\ntype HandleMcpMessage = z.infer<typeof handleMcpMessage>;\n\nlet allMessages = z.union([\n discoverMessage,\n authUrlMessage,\n oauthCallbackMessage,\n oauthTokenRefreshMessage,\n handleMcpMessage\n]);\n\nexport type McpServerInstanceMessage =\n | DiscoverMessage\n | AuthUrlMessage\n | OauthCallbackMessage\n | OauthTokenRefreshMessage\n | HandleMcpMessage;\n\nexport let serverAdapter = async (\n instance: McpServerInstance,\n messages: McpServerInstanceMessage[]\n) =>\n Promise.all(\n messages.map(async message => {\n let parsed = allMessages.parse(message);\n\n switch (parsed.type) {\n case 'metorial-mcp.discover': {\n return instance.discover();\n }\n case 'metorial-mcp.get-oauth-authorization-url': {\n return instance.getOauthAuthorizationUrl(parsed.params);\n }\n case 'metorial-mcp.handle-oauth-callback': {\n return instance.handleOauthCallback(parsed.params);\n }\n case 'metorial-mcp.handle-oauth-token-refresh': {\n return instance.handleOauthTokenRefresh(parsed.params);\n }\n case 'metorial-mcp.handle-mcp-message': {\n return instance.handleMcpMessages({\n config: parsed.params.config || {},\n authConfig: parsed.params.authConfig || {},\n client: parsed.params.client as any,\n message: parsed.params.messages\n });\n }\n }\n\n throw new Error(`Unknown message type: ${(message as any).type}`);\n })\n );\n\nexport type McpServerInstanceAdapterResponses = Awaited<ReturnType<typeof serverAdapter>>;\n\nexport let clientAdapter = (\n transport: (\n messages: McpServerInstanceMessage[]\n ) => Promise<McpServerInstanceAdapterResponses>\n) => {\n let queue: {\n msg: McpServerInstanceMessage;\n resolve: (res: any) => void;\n reject: (err: any) => void;\n }[] = [];\n let isSent = { current: false };\n let isSending = { current: false };\n\n let send = async (message: McpServerInstanceMessage) => {\n let promise = new Promise<any>((resolve, reject) => {\n queue.push({ msg: message, resolve, reject });\n });\n\n if (!isSending.current) {\n isSending.current = true;\n\n setTimeout(async () => {\n isSent.current = true;\n\n try {\n let res = await transport(queue.map(q => q.msg));\n res.forEach((r, i) => {\n queue[i].resolve(r);\n });\n } catch (err) {\n queue.forEach(q => {\n q.reject(err);\n });\n } finally {\n queue = [];\n }\n }, 2);\n }\n\n return promise;\n };\n\n return {\n discover: async () => {\n return send({ type: 'metorial-mcp.discover' }) as Promise<\n Awaited<ReturnType<McpServerInstance['discover']>>\n >;\n },\n\n getOauthAuthorizationUrl: async (\n d: Parameters<McpServerInstance['getOauthAuthorizationUrl']>[0]\n ) => {\n return send({\n type: 'metorial-mcp.get-oauth-authorization-url',\n params: d\n }) as Promise<Awaited<ReturnType<McpServerInstance['getOauthAuthorizationUrl']>>>;\n },\n\n handleOauthCallback: async (\n d: Parameters<McpServerInstance['handleOauthCallback']>[0]\n ) => {\n return send({\n type: 'metorial-mcp.handle-oauth-callback',\n params: d\n }) as Promise<Awaited<ReturnType<McpServerInstance['handleOauthCallback']>>>;\n },\n\n handleOauthTokenRefresh: async (\n d: Parameters<McpServerInstance['handleOauthTokenRefresh']>[0]\n ) => {\n return send({\n type: 'metorial-mcp.handle-oauth-token-refresh',\n params: d\n }) as Promise<Awaited<ReturnType<McpServerInstance['handleOauthTokenRefresh']>>>;\n }\n };\n};\n","export {\n createMcpServer,\n type McpServerInstance,\n type McpServerInstanceOpts,\n type McpServerInstanceServer\n} from './instance';\n\nexport {\n clientAdapter,\n serverAdapter,\n type McpServerInstanceAdapterResponses,\n type McpServerInstanceMessage\n} from './adapter';\n\nexport {\n createOAuth,\n oAuth,\n type McpServerOAuthCallbackHandler,\n type McpServerOAuthCallbackHandlerParams,\n type McpServerOAuthCallbackHandlerResult,\n type McpServerOAuthConfig,\n type McpServerOAuthTokenRefreshHandler,\n type McpServerOAuthTokenRefreshHandlerParams,\n type McpServerOAuthTokenRefreshHandlerResult,\n type McpServerOAuthUrlHandler,\n type McpServerOAuthUrlHandlerInternal,\n type McpServerOAuthUrlHandlerParams,\n type McpServerOAuthUrlHandlerResult,\n type McpServerOAuthValue\n} from './auth';\n\nexport { config, createConfig, type McpServerConfig } from './config';\n\nexport {\n McpTool,\n type McpServerInfo,\n type McpToolAnnotations,\n type McpToolHandlerOutput,\n type McpToolHandlerOutputSync,\n type McpToolImplementation,\n type McpToolOpts\n} from '@metorial/mcp';\n"],"mappings":"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","names":["config","z","config","z"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@metorial/mcp-server",
3
- "version": "1.0.0-rc.3",
3
+ "version": "1.0.0-rc.5",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },