@metorial/mcp-server 1.0.0-rc.6 → 1.0.0-rc.7

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.cjs CHANGED
@@ -195,7 +195,10 @@ var handleMcpMessages = async (server, opts, messages) => {
195
195
  try {
196
196
  if ("id" in message) {
197
197
  let res = await client.request(message, import_zod2.default.any());
198
- responses.push(res);
198
+ responses.push({
199
+ ...res,
200
+ id: message.id
201
+ });
199
202
  } else {
200
203
  await client.notification(message);
201
204
  }
@@ -304,8 +307,24 @@ var McpServerInstance = class _McpServerInstance {
304
307
  static create(instance) {
305
308
  return new _McpServerInstance(instance);
306
309
  }
307
- discover() {
310
+ async discover() {
311
+ let client = await getClient(this.#server, async (notification) => {
312
+ }, {
313
+ client: {
314
+ name: "Metorial Discovery",
315
+ version: "1.0.0"
316
+ },
317
+ capabilities: {}
318
+ });
319
+ let info = client.getServerVersion();
320
+ let capabilities = client.getServerCapabilities();
321
+ let instructions = client.getInstructions();
308
322
  return {
323
+ server: {
324
+ info,
325
+ capabilities,
326
+ instructions
327
+ },
309
328
  configSchema: this.instance.config ? getConfigSchema(this.instance.config) : null,
310
329
  oauth: this.instance.authConfig ? {
311
330
  status: "enabled",
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/instance.ts","../src/auth.ts","../src/client.ts","../src/config.ts","../src/adapter.ts"],"sourcesContent":["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","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 handleMcpMessages: async (d: Parameters<McpServerInstance['handleMcpMessages']>[0]) => {\n return send({\n type: 'metorial-mcp.handle-mcp-message',\n params: {\n config: d.config,\n authConfig: d.authConfig,\n client: d.client,\n messages: d.message\n }\n }) as Promise<Awaited<ReturnType<McpServerInstance['handleMcpMessages']>>>;\n }\n };\n};\n"],"mappings":"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","names":["config","z","import_zod","z","config","createMcpServerInternal","import_zod","z","import_mcp"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/instance.ts","../src/auth.ts","../src/client.ts","../src/config.ts","../src/adapter.ts"],"sourcesContent":["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","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, getClient, 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 async discover() {\n let client = await getClient(this.#server, async notification => {}, {\n client: {\n name: 'Metorial Discovery',\n version: '1.0.0'\n },\n capabilities: {}\n });\n\n let info = client.getServerVersion();\n let capabilities = client.getServerCapabilities();\n let instructions = client.getInstructions();\n\n return {\n server: {\n info,\n capabilities,\n instructions\n },\n\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({\n ...res,\n id: message.id\n });\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 handleMcpMessages: async (d: Parameters<McpServerInstance['handleMcpMessages']>[0]) => {\n return send({\n type: 'metorial-mcp.handle-mcp-message',\n params: {\n config: d.config,\n authConfig: d.authConfig,\n client: d.client,\n messages: d.message\n }\n }) as Promise<Awaited<ReturnType<McpServerInstance['handleMcpMessages']>>>;\n }\n };\n};\n"],"mappings":"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","names":["config","z","import_zod","z","config","createMcpServerInternal","import_zod","z","import_mcp"]}
package/dist/index.d.cts CHANGED
@@ -111,7 +111,52 @@ declare class McpServerInstance {
111
111
  private instance;
112
112
  private constructor();
113
113
  static create(instance: McpServerInstanceOpts): McpServerInstance;
114
- discover(): {
114
+ discover(): Promise<{
115
+ server: {
116
+ info: {
117
+ version: string;
118
+ name: string;
119
+ websiteUrl?: string | undefined;
120
+ description?: string | undefined;
121
+ icons?: {
122
+ src: string;
123
+ mimeType?: string | undefined;
124
+ sizes?: string[] | undefined;
125
+ theme?: "light" | "dark" | undefined;
126
+ }[] | undefined;
127
+ title?: string | undefined;
128
+ } | undefined;
129
+ capabilities: {
130
+ experimental?: {
131
+ [x: string]: object;
132
+ } | undefined;
133
+ logging?: object | undefined;
134
+ completions?: object | undefined;
135
+ prompts?: {
136
+ listChanged?: boolean | undefined;
137
+ } | undefined;
138
+ resources?: {
139
+ subscribe?: boolean | undefined;
140
+ listChanged?: boolean | undefined;
141
+ } | undefined;
142
+ tools?: {
143
+ listChanged?: boolean | undefined;
144
+ } | undefined;
145
+ tasks?: {
146
+ [x: string]: unknown;
147
+ list?: object | undefined;
148
+ cancel?: object | undefined;
149
+ requests?: {
150
+ [x: string]: unknown;
151
+ tools?: {
152
+ [x: string]: unknown;
153
+ call?: object | undefined;
154
+ } | undefined;
155
+ } | undefined;
156
+ } | undefined;
157
+ } | undefined;
158
+ instructions: string | undefined;
159
+ };
115
160
  configSchema: zod_v4_core.ZodStandardJSONSchemaPayload<z.ZodType<{}, unknown, zod_v4_core.$ZodTypeInternals<{}, unknown>>> | null;
116
161
  oauth: {
117
162
  status: "enabled";
@@ -122,7 +167,7 @@ declare class McpServerInstance {
122
167
  authConfig?: undefined;
123
168
  hasTokenRefresh?: undefined;
124
169
  };
125
- };
170
+ }>;
126
171
  handleMcpMessages(opts: {
127
172
  config: any;
128
173
  authConfig: any;
@@ -197,6 +242,51 @@ declare let serverAdapter: (instance: McpServerInstance, messages: McpServerInst
197
242
  messages: _modelcontextprotocol_sdk_types.JSONRPCMessage[];
198
243
  error: Error | null;
199
244
  } | {
245
+ server: {
246
+ info: {
247
+ version: string;
248
+ name: string;
249
+ websiteUrl?: string | undefined;
250
+ description?: string | undefined;
251
+ icons?: {
252
+ src: string;
253
+ mimeType?: string | undefined;
254
+ sizes?: string[] | undefined;
255
+ theme?: "light" | "dark" | undefined;
256
+ }[] | undefined;
257
+ title?: string | undefined;
258
+ } | undefined;
259
+ capabilities: {
260
+ experimental?: {
261
+ [x: string]: object;
262
+ } | undefined;
263
+ logging?: object | undefined;
264
+ completions?: object | undefined;
265
+ prompts?: {
266
+ listChanged?: boolean | undefined;
267
+ } | undefined;
268
+ resources?: {
269
+ subscribe?: boolean | undefined;
270
+ listChanged?: boolean | undefined;
271
+ } | undefined;
272
+ tools?: {
273
+ listChanged?: boolean | undefined;
274
+ } | undefined;
275
+ tasks?: {
276
+ [x: string]: unknown;
277
+ list?: object | undefined;
278
+ cancel?: object | undefined;
279
+ requests?: {
280
+ [x: string]: unknown;
281
+ tools?: {
282
+ [x: string]: unknown;
283
+ call?: object | undefined;
284
+ } | undefined;
285
+ } | undefined;
286
+ } | undefined;
287
+ } | undefined;
288
+ instructions: string | undefined;
289
+ };
200
290
  configSchema: z__default.core.ZodStandardJSONSchemaPayload<z__default.ZodType<{}, unknown, z__default.core.$ZodTypeInternals<{}, unknown>>> | null;
201
291
  oauth: {
202
292
  status: "enabled";
@@ -211,6 +301,51 @@ declare let serverAdapter: (instance: McpServerInstance, messages: McpServerInst
211
301
  type McpServerInstanceAdapterResponses = Awaited<ReturnType<typeof serverAdapter>>;
212
302
  declare let clientAdapter: (transport: (messages: McpServerInstanceMessage[]) => Promise<McpServerInstanceAdapterResponses>) => {
213
303
  discover: () => Promise<{
304
+ server: {
305
+ info: {
306
+ version: string;
307
+ name: string;
308
+ websiteUrl?: string | undefined;
309
+ description?: string | undefined;
310
+ icons?: {
311
+ src: string;
312
+ mimeType?: string | undefined;
313
+ sizes?: string[] | undefined;
314
+ theme?: "light" | "dark" | undefined;
315
+ }[] | undefined;
316
+ title?: string | undefined;
317
+ } | undefined;
318
+ capabilities: {
319
+ experimental?: {
320
+ [x: string]: object;
321
+ } | undefined;
322
+ logging?: object | undefined;
323
+ completions?: object | undefined;
324
+ prompts?: {
325
+ listChanged?: boolean | undefined;
326
+ } | undefined;
327
+ resources?: {
328
+ subscribe?: boolean | undefined;
329
+ listChanged?: boolean | undefined;
330
+ } | undefined;
331
+ tools?: {
332
+ listChanged?: boolean | undefined;
333
+ } | undefined;
334
+ tasks?: {
335
+ [x: string]: unknown;
336
+ list?: object | undefined;
337
+ cancel?: object | undefined;
338
+ requests?: {
339
+ [x: string]: unknown;
340
+ tools?: {
341
+ [x: string]: unknown;
342
+ call?: object | undefined;
343
+ } | undefined;
344
+ } | undefined;
345
+ } | undefined;
346
+ } | undefined;
347
+ instructions: string | undefined;
348
+ };
214
349
  configSchema: z__default.core.ZodStandardJSONSchemaPayload<z__default.ZodType<{}, unknown, z__default.core.$ZodTypeInternals<{}, unknown>>> | null;
215
350
  oauth: {
216
351
  status: "enabled";
package/dist/index.d.ts CHANGED
@@ -111,7 +111,52 @@ declare class McpServerInstance {
111
111
  private instance;
112
112
  private constructor();
113
113
  static create(instance: McpServerInstanceOpts): McpServerInstance;
114
- discover(): {
114
+ discover(): Promise<{
115
+ server: {
116
+ info: {
117
+ version: string;
118
+ name: string;
119
+ websiteUrl?: string | undefined;
120
+ description?: string | undefined;
121
+ icons?: {
122
+ src: string;
123
+ mimeType?: string | undefined;
124
+ sizes?: string[] | undefined;
125
+ theme?: "light" | "dark" | undefined;
126
+ }[] | undefined;
127
+ title?: string | undefined;
128
+ } | undefined;
129
+ capabilities: {
130
+ experimental?: {
131
+ [x: string]: object;
132
+ } | undefined;
133
+ logging?: object | undefined;
134
+ completions?: object | undefined;
135
+ prompts?: {
136
+ listChanged?: boolean | undefined;
137
+ } | undefined;
138
+ resources?: {
139
+ subscribe?: boolean | undefined;
140
+ listChanged?: boolean | undefined;
141
+ } | undefined;
142
+ tools?: {
143
+ listChanged?: boolean | undefined;
144
+ } | undefined;
145
+ tasks?: {
146
+ [x: string]: unknown;
147
+ list?: object | undefined;
148
+ cancel?: object | undefined;
149
+ requests?: {
150
+ [x: string]: unknown;
151
+ tools?: {
152
+ [x: string]: unknown;
153
+ call?: object | undefined;
154
+ } | undefined;
155
+ } | undefined;
156
+ } | undefined;
157
+ } | undefined;
158
+ instructions: string | undefined;
159
+ };
115
160
  configSchema: zod_v4_core.ZodStandardJSONSchemaPayload<z.ZodType<{}, unknown, zod_v4_core.$ZodTypeInternals<{}, unknown>>> | null;
116
161
  oauth: {
117
162
  status: "enabled";
@@ -122,7 +167,7 @@ declare class McpServerInstance {
122
167
  authConfig?: undefined;
123
168
  hasTokenRefresh?: undefined;
124
169
  };
125
- };
170
+ }>;
126
171
  handleMcpMessages(opts: {
127
172
  config: any;
128
173
  authConfig: any;
@@ -197,6 +242,51 @@ declare let serverAdapter: (instance: McpServerInstance, messages: McpServerInst
197
242
  messages: _modelcontextprotocol_sdk_types.JSONRPCMessage[];
198
243
  error: Error | null;
199
244
  } | {
245
+ server: {
246
+ info: {
247
+ version: string;
248
+ name: string;
249
+ websiteUrl?: string | undefined;
250
+ description?: string | undefined;
251
+ icons?: {
252
+ src: string;
253
+ mimeType?: string | undefined;
254
+ sizes?: string[] | undefined;
255
+ theme?: "light" | "dark" | undefined;
256
+ }[] | undefined;
257
+ title?: string | undefined;
258
+ } | undefined;
259
+ capabilities: {
260
+ experimental?: {
261
+ [x: string]: object;
262
+ } | undefined;
263
+ logging?: object | undefined;
264
+ completions?: object | undefined;
265
+ prompts?: {
266
+ listChanged?: boolean | undefined;
267
+ } | undefined;
268
+ resources?: {
269
+ subscribe?: boolean | undefined;
270
+ listChanged?: boolean | undefined;
271
+ } | undefined;
272
+ tools?: {
273
+ listChanged?: boolean | undefined;
274
+ } | undefined;
275
+ tasks?: {
276
+ [x: string]: unknown;
277
+ list?: object | undefined;
278
+ cancel?: object | undefined;
279
+ requests?: {
280
+ [x: string]: unknown;
281
+ tools?: {
282
+ [x: string]: unknown;
283
+ call?: object | undefined;
284
+ } | undefined;
285
+ } | undefined;
286
+ } | undefined;
287
+ } | undefined;
288
+ instructions: string | undefined;
289
+ };
200
290
  configSchema: z__default.core.ZodStandardJSONSchemaPayload<z__default.ZodType<{}, unknown, z__default.core.$ZodTypeInternals<{}, unknown>>> | null;
201
291
  oauth: {
202
292
  status: "enabled";
@@ -211,6 +301,51 @@ declare let serverAdapter: (instance: McpServerInstance, messages: McpServerInst
211
301
  type McpServerInstanceAdapterResponses = Awaited<ReturnType<typeof serverAdapter>>;
212
302
  declare let clientAdapter: (transport: (messages: McpServerInstanceMessage[]) => Promise<McpServerInstanceAdapterResponses>) => {
213
303
  discover: () => Promise<{
304
+ server: {
305
+ info: {
306
+ version: string;
307
+ name: string;
308
+ websiteUrl?: string | undefined;
309
+ description?: string | undefined;
310
+ icons?: {
311
+ src: string;
312
+ mimeType?: string | undefined;
313
+ sizes?: string[] | undefined;
314
+ theme?: "light" | "dark" | undefined;
315
+ }[] | undefined;
316
+ title?: string | undefined;
317
+ } | undefined;
318
+ capabilities: {
319
+ experimental?: {
320
+ [x: string]: object;
321
+ } | undefined;
322
+ logging?: object | undefined;
323
+ completions?: object | undefined;
324
+ prompts?: {
325
+ listChanged?: boolean | undefined;
326
+ } | undefined;
327
+ resources?: {
328
+ subscribe?: boolean | undefined;
329
+ listChanged?: boolean | undefined;
330
+ } | undefined;
331
+ tools?: {
332
+ listChanged?: boolean | undefined;
333
+ } | undefined;
334
+ tasks?: {
335
+ [x: string]: unknown;
336
+ list?: object | undefined;
337
+ cancel?: object | undefined;
338
+ requests?: {
339
+ [x: string]: unknown;
340
+ tools?: {
341
+ [x: string]: unknown;
342
+ call?: object | undefined;
343
+ } | undefined;
344
+ } | undefined;
345
+ } | undefined;
346
+ } | undefined;
347
+ instructions: string | undefined;
348
+ };
214
349
  configSchema: z__default.core.ZodStandardJSONSchemaPayload<z__default.ZodType<{}, unknown, z__default.core.$ZodTypeInternals<{}, unknown>>> | null;
215
350
  oauth: {
216
351
  status: "enabled";
package/dist/index.js CHANGED
@@ -154,7 +154,10 @@ var handleMcpMessages = async (server, opts, messages) => {
154
154
  try {
155
155
  if ("id" in message) {
156
156
  let res = await client.request(message, z2.any());
157
- responses.push(res);
157
+ responses.push({
158
+ ...res,
159
+ id: message.id
160
+ });
158
161
  } else {
159
162
  await client.notification(message);
160
163
  }
@@ -263,8 +266,24 @@ var McpServerInstance = class _McpServerInstance {
263
266
  static create(instance) {
264
267
  return new _McpServerInstance(instance);
265
268
  }
266
- discover() {
269
+ async discover() {
270
+ let client = await getClient(this.#server, async (notification) => {
271
+ }, {
272
+ client: {
273
+ name: "Metorial Discovery",
274
+ version: "1.0.0"
275
+ },
276
+ capabilities: {}
277
+ });
278
+ let info = client.getServerVersion();
279
+ let capabilities = client.getServerCapabilities();
280
+ let instructions = client.getInstructions();
267
281
  return {
282
+ server: {
283
+ info,
284
+ capabilities,
285
+ instructions
286
+ },
268
287
  configSchema: this.instance.config ? getConfigSchema(this.instance.config) : null,
269
288
  oauth: this.instance.authConfig ? {
270
289
  status: "enabled",
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 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 handleMcpMessages: async (d: Parameters<McpServerInstance['handleMcpMessages']>[0]) => {\n return send({\n type: 'metorial-mcp.handle-mcp-message',\n params: {\n config: d.config,\n authConfig: d.authConfig,\n client: d.client,\n messages: d.message\n }\n }) as Promise<Awaited<ReturnType<McpServerInstance['handleMcpMessages']>>>;\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":";AAAA;AAAA,EACE,mBAAmB;AAAA,OAEd;;;ACHP,OAAO,OAAO;AAmFP,IAAI,cAAc,oBAAI,IAA+B;AAErD,IAAM,uBAAN,MAAM,sBAA6C;AAAA,EAQhD,YAA4B,QAAgC;AAAhC;AAClC,gBAAY,IAAI,IAAI;AAAA,EACtB;AAAA,EATA,SAAqC;AAAA,EACrC,gBAAgB;AAAA,EAEhB;AAAA,EACA;AAAA,EACA;AAAA,EAMA,OAAO,UACF,MAGH;AACA,QAAI,SAAS,KAAK,UAAU,IAAI,KAAK,CAAC,IAAI;AAC1C,QAAI,WAAW,KAAK,UAAU,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC;AAElD,QAAIA,UAAS,IAAI,sBAAqB,UAAW,EAAE,OAAO,CAAC,CAAC,CAA4B;AAExF,IAAAA,QAAO,oBAAoB,SAAS,mBAAmB;AACvD,IAAAA,QAAO,eAAe,SAAS,cAAc;AAC7C,QAAI,SAAS,cAAc;AACzB,MAAAA,QAAO,aAAa,SAAS,YAAY;AAAA,IAC3C;AAEA,WAAOA,QAAO,MAAM;AAAA,EACtB;AAAA,EAEA,OAAO,kBAAkBA,SAAmC;AAC1D,QAAI,CAACA,QAAO,sBAAsB,CAACA,QAAO,kBAAkB;AAC1D,YAAM,IAAI,MAAM,qDAAqD;AAAA,IACvE;AAEA,WAAO;AAAA,MACL,UAAUA,QAAO,SAAS,KAAKA,OAAM;AAAA,MACrC,YAAYA,QAAO,WAAW,KAAKA,OAAM;AAAA,MAEzC,mBAAmBA,QAAO;AAAA,MAC1B,iBAAiBA,QAAO;AAAA,MACxB,qBAAqBA,QAAO;AAAA,IAC9B;AAAA,EACF;AAAA,EAEA,OAAO,iBAAiBA,SAAmC;AACzD,QAAI,CAACA,QAAO,eAAe;AACzB,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,oBAAoB,IAA8B;AAChD,SAAK,qBAAqB,OAAM,MAAK;AACnC,UAAI,MAAM,MAAM,GAAG,CAAC;AACpB,UAAI,OAAO,OAAO,UAAU;AAC1B,eAAO,EAAE,kBAAkB,IAAI;AAAA,MACjC;AACA,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AAAA,EAEA,eAAe,IAAmC;AAChD,SAAK,mBAAmB;AACxB,WAAO;AAAA,EACT;AAAA,EAEA,aAAa,IAAuC;AAClD,SAAK,uBAAuB;AAC5B,WAAO;AAAA,EACT;AAAA,EAEA,QAAqB;AACnB,QAAI,CAAC,KAAK,sBAAsB,CAAC,KAAK,kBAAkB;AACtD,YAAM,IAAI,MAAM,qDAAqD;AAAA,IACvE;AAEA,QAAI,OAAO;AAIX,WAAO,IAAI;AAAA,MACT,CAAC;AAAA,MACD;AAAA,QACE,KAAK,CAAC,QAAQ,MAAM,aAAa;AAC/B,cAAI,QAAQ,cAAc;AACxB,mBAAO;AAAA,UACT;AAEA,cAAI,KAAK,WAAW,QAAQ,CAAC,KAAK,eAAe;AAC/C,kBAAM,IAAI;AAAA,cACR;AAAA,YACF;AAAA,UACF;AAEA,iBAAQ,KAAK,OAAe,IAAI;AAAA,QAClC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEQ,SAAS,OAA4B;AAC3C,SAAK,SAAS;AAAA,EAChB;AAAA,EAEQ,aAAa;AACnB,SAAK,gBAAgB;AAAA,EACvB;AACF;AAEO,IAAI,cAAc,IACpB,SACA,qBAAqB,OAAO,GAAG,IAAI;AAEjC,IAAI,QAAQ;AAEZ,IAAI,+BAA+B,CAAoB,gBAAqB;AACjF,MAAI,OAAO,YAAY,YAAY;AACnC,SAAO,qBAAqB,kBAAkB,IAAI;AACpD;AAEO,IAAI,sBAAsB,CAC/B,aACA,UACG;AACH,MAAI,OAAO,YAAY,YAAY;AACnC,MAAI,OAAO,qBAAqB,kBAAkB,IAAI;AAEtD,OAAK,SAAS,KAAK;AACnB,OAAK,WAAW;AAClB;AAEO,IAAI,sBAAsB,CAAoB,gBAAqB;AACxE,MAAI,OAAO,YAAY,YAAY;AACnC,MAAI,OAAO,qBAAqB,kBAAkB,IAAI;AACtD,OAAK,WAAW;AAClB;AAEO,IAAI,uBAAuB,CAAoB,gBAAqB;AACzE,MAAI,OAAO,YAAY,YAAY;AACnC,SAAO,KAAK,OAAO,aAAa;AAAA,IAC9B,iBAAiB;AAAA,IACjB,UAAU,SAAO;AACf,UAAI,MAAM,IAAI,UAAU,KAAK;AAE7B,UAAI,IAAI,SAAS,QAAQ;AACvB,YAAI,WAAW,OAAO;AACtB,YAAI,WAAW,SAAS;AAAA,MAC1B;AACA,UAAI,IAAI,SAAS,UAAU;AACzB,YAAI,WAAW,OAAO;AAAA,MACxB;AAAA,IACF;AAAA,EACF,CAAC;AACH;;;AClPA,SAAS,+BAA+B;AACxC,SAAS,cAAc;AAOvB,OAAOC,QAAO;AAUP,IAAI,YAAY,OACrB,QACA,sBACA,SACG;AACH,MAAI,YAAY,wBAAwB;AACxC,QAAM,OAAO,QAAQ,UAAU,MAAM;AAErC,MAAI,SAAS,IAAI,OAAO,KAAK,MAAM;AAEnC,SAAO,qBAAqB,KAAK,YAAY;AAC7C,SAAO,8BAA8B;AAErC,QAAM,OAAO,QAAQ,UAAU,MAAM;AAErC,SAAO;AACT;AAEO,IAAI,oBAAoB,OAC7B,QACA,MACA,aACG;AACH,MAAI,YAA8B,CAAC;AAEnC,MAAI,SAAS,MAAM;AAAA,IACjB;AAAA,IACA,OAAM,iBAAgB;AACpB,gBAAU,KAAK,YAA8B;AAAA,IAC/C;AAAA,IACA;AAAA,EACF;AAEA,MAAI,QAAsB;AAE1B,WAAS,WAAW,UAAU;AAC5B,QAAI;AACF,UAAI,QAAQ,SAAS;AACnB,YAAI,MAAM,MAAM,OAAO,QAAQ,SAAgBA,GAAE,IAAI,CAAC;AACtD,kBAAU,KAAK,GAAG;AAAA,MACpB,OAAO;AACL,cAAM,OAAO,aAAa,OAAc;AAAA,MAC1C;AAAA,IACF,SAAS,KAAK;AACZ,cAAQ;AACR;AAAA,IACF;AAAA,EACF;AAEA,SAAO,EAAE,UAAU,WAAW,MAAM;AACtC;;;AClEO,IAAI,UAAU,oBAAI,IAA0B;AAE5C,IAAM,kBAAN,MAAM,iBAAmC;AAAA,EAItC,YAA4B,QAA2B;AAA3B;AAClC,YAAQ,IAAI,IAAI;AAAA,EAClB;AAAA,EALA,SAAwB;AAAA,EACxB,gBAAgB;AAAA,EAMhB,OAAO,OAA0B,QAA2B;AAC1D,WAAO,IAAI,iBAAgB,MAAM;AAAA,EACnC;AAAA,EAEA,OAAO,iBAAiBC,SAA8B;AACpD,QAAI,CAACA,QAAO,eAAe;AACzB,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,SAAS,OAAgB;AACvB,QAAI,SAAS,KAAK,OAAO,MAAM,KAAK;AACpC,SAAK,SAAS;AAAA,EAChB;AAAA,EAEA,aAAa;AACX,SAAK,gBAAgB;AAAA,EACvB;AAAA,EAEA,QAAgB;AACd,QAAI,OAAO;AAIX,WAAO,IAAI;AAAA,MACT,CAAC;AAAA,MACD;AAAA,QACE,KAAK,CAAC,QAAQ,MAAM,aAAa;AAC/B,cAAI,QAAQ,cAAc;AACxB,mBAAO;AAAA,UACT;AAEA,cAAI,KAAK,WAAW,QAAQ,CAAC,KAAK,eAAe;AAC/C,kBAAM,IAAI;AAAA,cACR;AAAA,YACF;AAAA,UACF;AAEA,iBAAQ,KAAK,OAAe,IAAI;AAAA,QAClC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,IAAI,eAAe,CAAoB,WAA8B;AAC1E,SAAO,gBAAgB,OAAO,MAAM,EAAE,MAAM;AAC9C;AAEO,IAAI,SAAS,CAAoB,WAA8B,aAAa,MAAM;AAElF,IAAI,iBAAiB,CAAoB,aAAkB,UAAkB;AAClF,MAAI,OAAO,YAAY,YAAY;AACnC,OAAK,SAAS,KAAK;AACnB,OAAK,WAAW;AAClB;AAEO,IAAI,iBAAiB,CAAoB,gBAAqB;AACnE,MAAI,OAAO,YAAY,YAAY;AACnC,OAAK,WAAW;AAClB;AAEO,IAAI,kBAAkB,CAAoB,gBAAqB;AACpE,MAAI,OAAO,YAAY,YAAY;AACnC,SAAO,KAAK,OAAO,aAAa;AAAA,IAC9B,iBAAiB;AAAA,IACjB,UAAU,SAAO;AACf,UAAI,MAAM,IAAI,UAAU,KAAK;AAE7B,UAAI,IAAI,SAAS,QAAQ;AACvB,YAAI,WAAW,OAAO;AACtB,YAAI,WAAW,SAAS;AAAA,MAC1B;AACA,UAAI,IAAI,SAAS,UAAU;AACzB,YAAI,WAAW,OAAO;AAAA,MACxB;AAAA,IACF;AAAA,EACF,CAAC;AACH;;;AHjEA,IAAI,YAAY,CAAC,aAAsC;AACrD,MAAI,YAAY,UAAU;AACxB,WAAO,SAAS;AAAA,EAClB,OAAO;AACL,WAAO,wBAAwB,QAAQ;AAAA,EACzC;AACF;AAOO,IAAM,oBAAN,MAAM,mBAAkB;AAAA,EAGrB,YAAoB,UAAiC;AAAjC;AAC1B,QAAI,SAAS,OAAQ,gBAAe,SAAS,MAAM;AACnD,QAAI,SAAS,WAAY,qBAAoB,SAAS,UAAU;AAEhE,aAAS,MAAM,YAAa,sBAAqB,iBAAiB,EAAE;AACpE,aAAS,MAAM,QAAS,iBAAgB,iBAAiB,EAAE;AAE3D,SAAK,UAAU,UAAU,QAAQ;AAAA,EACnC;AAAA,EAVA;AAAA,EAYA,OAAO,OAAO,UAAiC;AAC7C,WAAO,IAAI,mBAAkB,QAAQ;AAAA,EACvC;AAAA,EAEA,WAAW;AACT,WAAO;AAAA,MACL,cAAc,KAAK,SAAS,SAAS,gBAAgB,KAAK,SAAS,MAAM,IAAI;AAAA,MAC7E,OAAO,KAAK,SAAS,aACjB;AAAA,QACE,QAAQ;AAAA,QACR,YAAY,qBAAqB,KAAK,SAAS,UAAU;AAAA,QACzD,iBAAiB,CAAC,CAAC,6BAA6B,KAAK,SAAS,UAAU,EACrE;AAAA,MACL,IACA;AAAA,QACE,QAAQ;AAAA,MACV;AAAA,IACN;AAAA,EACF;AAAA,EAEA,kBAAkB,MAKf;AACD,QAAI,KAAK,SAAS,QAAQ;AACxB,qBAAe,KAAK,SAAS,QAAQ,KAAK,MAAM;AAAA,IAClD;AACA,QAAI,KAAK,cAAc,KAAK,SAAS,YAAY;AAC/C,0BAAoB,KAAK,SAAS,YAAY,KAAK,UAAU;AAAA,IAC/D;AAEA,WAAO,kBAAkB,KAAK,SAAS,KAAK,QAAQ,KAAK,OAAO;AAAA,EAClE;AAAA,EAEA,yBAAyB,GAAwC;AAC/D,QAAI,CAAC,KAAK,SAAS,WAAY,QAAO;AACtC,QAAI,OAAO,6BAA6B,KAAK,SAAS,UAAU;AAEhE,WAAO,KAAK,kBAAkB,CAAC;AAAA,EACjC;AAAA,EAEA,oBAAoB,GAA6C;AAC/D,QAAI,CAAC,KAAK,SAAS,WAAY,QAAO;AACtC,QAAI,OAAO,6BAA6B,KAAK,SAAS,UAAU;AAEhE,WAAO,KAAK,gBAAgB,CAAC;AAAA,EAC/B;AAAA,EAEA,wBAAwB,GAAiD;AACvE,QAAI,CAAC,KAAK,SAAS,WAAY,QAAO;AACtC,QAAI,OAAO,6BAA6B,KAAK,SAAS,UAAU;AAEhE,QAAI,CAAC,KAAK,qBAAqB;AAC7B,aAAO;AAAA,IACT;AAEA,WAAO,KAAK,oBAAoB,CAAC;AAAA,EACnC;AACF;AAEO,IAAI,kBAAkB,CAAC,aAAoC;AAChE,SAAO,kBAAkB,OAAO,QAAQ;AAC1C;;;AIrHA,OAAOC,QAAO;AAGd,IAAI,kBAAkBA,GAAE,OAAO;AAAA,EAC7B,MAAMA,GAAE,QAAQ,uBAAuB;AACzC,CAAC;AAGD,IAAI,iBAAiBA,GAAE,OAAO;AAAA,EAC5B,MAAMA,GAAE,QAAQ,0CAA0C;AAAA,EAC1D,QAAQA,GAAE,OAAO;AAAA,IACf,YAAYA,GAAE,OAAOA,GAAE,OAAO,GAAGA,GAAE,IAAI,CAAC;AAAA,IACxC,UAAUA,GAAE,OAAO;AAAA,IACnB,cAAcA,GAAE,OAAO;AAAA,IACvB,OAAOA,GAAE,OAAO;AAAA,IAChB,aAAaA,GAAE,OAAO;AAAA,EACxB,CAAC;AACH,CAAC;AAGD,IAAI,uBAAuBA,GAAE,OAAO;AAAA,EAClC,MAAMA,GAAE,QAAQ,oCAAoC;AAAA,EACpD,QAAQA,GAAE,OAAO;AAAA,IACf,YAAYA,GAAE,OAAOA,GAAE,OAAO,GAAGA,GAAE,IAAI,CAAC;AAAA,IACxC,WAAWA,GAAE,OAAOA,GAAE,OAAO,GAAGA,GAAE,OAAO,CAAC;AAAA,IAC1C,UAAUA,GAAE,OAAO;AAAA,IACnB,cAAcA,GAAE,OAAO;AAAA,IACvB,MAAMA,GAAE,OAAO;AAAA,IACf,OAAOA,GAAE,OAAO;AAAA,IAChB,aAAaA,GAAE,OAAO;AAAA,IACtB,aAAaA,GAAE,OAAO;AAAA,IACtB,kBAAkBA,GAAE,OAAO;AAAA,EAC7B,CAAC;AACH,CAAC;AAGD,IAAI,2BAA2BA,GAAE,OAAO;AAAA,EACtC,MAAMA,GAAE,QAAQ,yCAAyC;AAAA,EACzD,QAAQA,GAAE,OAAO;AAAA,IACf,YAAYA,GAAE,OAAOA,GAAE,OAAO,GAAGA,GAAE,IAAI,CAAC;AAAA,IACxC,WAAWA,GAAE,OAAOA,GAAE,OAAO,GAAGA,GAAE,OAAO,CAAC;AAAA,IAC1C,cAAcA,GAAE,OAAO;AAAA,IACvB,UAAUA,GAAE,OAAO;AAAA,IACnB,cAAcA,GAAE,OAAO;AAAA,EACzB,CAAC;AACH,CAAC;AAGD,IAAI,mBAAmBA,GAAE,OAAO;AAAA,EAC9B,MAAMA,GAAE,QAAQ,iCAAiC;AAAA,EACjD,QAAQA,GAAE,OAAO;AAAA,IACf,YAAYA,GAAE,SAASA,GAAE,OAAOA,GAAE,OAAO,GAAGA,GAAE,IAAI,CAAC,CAAC;AAAA,IACpD,QAAQA,GAAE,OAAOA,GAAE,OAAO,GAAGA,GAAE,IAAI,CAAC;AAAA,IACpC,QAAQA,GAAE,OAAO;AAAA,MACf,QAAQA,GAAE,OAAOA,GAAE,OAAO,GAAGA,GAAE,IAAI,CAAC;AAAA,MACpC,cAAcA,GAAE,OAAOA,GAAE,OAAO,GAAGA,GAAE,IAAI,CAAC;AAAA,IAC5C,CAAC;AAAA,IACD,UAAUA,GAAE,MAAMA,GAAE,IAAI,CAAC;AAAA,EAC3B,CAAC;AACH,CAAC;AAGD,IAAI,cAAcA,GAAE,MAAM;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AASM,IAAI,gBAAgB,OACzB,UACA,aAEA,QAAQ;AAAA,EACN,SAAS,IAAI,OAAM,YAAW;AAC5B,QAAI,SAAS,YAAY,MAAM,OAAO;AAEtC,YAAQ,OAAO,MAAM;AAAA,MACnB,KAAK,yBAAyB;AAC5B,eAAO,SAAS,SAAS;AAAA,MAC3B;AAAA,MACA,KAAK,4CAA4C;AAC/C,eAAO,SAAS,yBAAyB,OAAO,MAAM;AAAA,MACxD;AAAA,MACA,KAAK,sCAAsC;AACzC,eAAO,SAAS,oBAAoB,OAAO,MAAM;AAAA,MACnD;AAAA,MACA,KAAK,2CAA2C;AAC9C,eAAO,SAAS,wBAAwB,OAAO,MAAM;AAAA,MACvD;AAAA,MACA,KAAK,mCAAmC;AACtC,eAAO,SAAS,kBAAkB;AAAA,UAChC,QAAQ,OAAO,OAAO,UAAU,CAAC;AAAA,UACjC,YAAY,OAAO,OAAO,cAAc,CAAC;AAAA,UACzC,QAAQ,OAAO,OAAO;AAAA,UACtB,SAAS,OAAO,OAAO;AAAA,QACzB,CAAC;AAAA,MACH;AAAA,IACF;AAEA,UAAM,IAAI,MAAM,yBAA0B,QAAgB,IAAI,EAAE;AAAA,EAClE,CAAC;AACH;AAIK,IAAI,gBAAgB,CACzB,cAGG;AACH,MAAI,QAIE,CAAC;AACP,MAAI,SAAS,EAAE,SAAS,MAAM;AAC9B,MAAI,YAAY,EAAE,SAAS,MAAM;AAEjC,MAAI,OAAO,OAAO,YAAsC;AACtD,QAAI,UAAU,IAAI,QAAa,CAAC,SAAS,WAAW;AAClD,YAAM,KAAK,EAAE,KAAK,SAAS,SAAS,OAAO,CAAC;AAAA,IAC9C,CAAC;AAED,QAAI,CAAC,UAAU,SAAS;AACtB,gBAAU,UAAU;AAEpB,iBAAW,YAAY;AACrB,eAAO,UAAU;AAEjB,YAAI;AACF,cAAI,MAAM,MAAM,UAAU,MAAM,IAAI,OAAK,EAAE,GAAG,CAAC;AAC/C,cAAI,QAAQ,CAAC,GAAG,MAAM;AACpB,kBAAM,CAAC,EAAE,QAAQ,CAAC;AAAA,UACpB,CAAC;AAAA,QACH,SAAS,KAAK;AACZ,gBAAM,QAAQ,OAAK;AACjB,cAAE,OAAO,GAAG;AAAA,UACd,CAAC;AAAA,QACH,UAAE;AACA,kBAAQ,CAAC;AAAA,QACX;AAAA,MACF,GAAG,CAAC;AAAA,IACN;AAEA,WAAO;AAAA,EACT;AAEA,SAAO;AAAA,IACL,UAAU,YAAY;AACpB,aAAO,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAAA,IAG/C;AAAA,IAEA,0BAA0B,OACxB,MACG;AACH,aAAO,KAAK;AAAA,QACV,MAAM;AAAA,QACN,QAAQ;AAAA,MACV,CAAC;AAAA,IACH;AAAA,IAEA,qBAAqB,OACnB,MACG;AACH,aAAO,KAAK;AAAA,QACV,MAAM;AAAA,QACN,QAAQ;AAAA,MACV,CAAC;AAAA,IACH;AAAA,IAEA,yBAAyB,OACvB,MACG;AACH,aAAO,KAAK;AAAA,QACV,MAAM;AAAA,QACN,QAAQ;AAAA,MACV,CAAC;AAAA,IACH;AAAA,IAEA,mBAAmB,OAAO,MAA6D;AACrF,aAAO,KAAK;AAAA,QACV,MAAM;AAAA,QACN,QAAQ;AAAA,UACN,QAAQ,EAAE;AAAA,UACV,YAAY,EAAE;AAAA,UACd,QAAQ,EAAE;AAAA,UACV,UAAU,EAAE;AAAA,QACd;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AACF;;;ACzKA;AAAA,EACE;AAAA,OAOK;","names":["config","z","config","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, getClient, 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 async discover() {\n let client = await getClient(this.#server, async notification => {}, {\n client: {\n name: 'Metorial Discovery',\n version: '1.0.0'\n },\n capabilities: {}\n });\n\n let info = client.getServerVersion();\n let capabilities = client.getServerCapabilities();\n let instructions = client.getInstructions();\n\n return {\n server: {\n info,\n capabilities,\n instructions\n },\n\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({\n ...res,\n id: message.id\n });\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 handleMcpMessages: async (d: Parameters<McpServerInstance['handleMcpMessages']>[0]) => {\n return send({\n type: 'metorial-mcp.handle-mcp-message',\n params: {\n config: d.config,\n authConfig: d.authConfig,\n client: d.client,\n messages: d.message\n }\n }) as Promise<Awaited<ReturnType<McpServerInstance['handleMcpMessages']>>>;\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.6",
3
+ "version": "1.0.0-rc.7",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
package/src/client.ts CHANGED
@@ -55,7 +55,10 @@ export let handleMcpMessages = async (
55
55
  try {
56
56
  if ('id' in message) {
57
57
  let res = await client.request(message as any, z.any());
58
- responses.push(res);
58
+ responses.push({
59
+ ...res,
60
+ id: message.id
61
+ });
59
62
  } else {
60
63
  await client.notification(message as any);
61
64
  }
package/src/instance.ts CHANGED
@@ -15,7 +15,7 @@ import {
15
15
  registerOAuthConfig,
16
16
  setOAuthConfigValue
17
17
  } from './auth';
18
- import { ClientOpts, handleMcpMessages } from './client';
18
+ import { ClientOpts, getClient, handleMcpMessages } from './client';
19
19
  import {
20
20
  configs,
21
21
  getConfigSchema,
@@ -55,8 +55,26 @@ export class McpServerInstance {
55
55
  return new McpServerInstance(instance);
56
56
  }
57
57
 
58
- discover() {
58
+ async discover() {
59
+ let client = await getClient(this.#server, async notification => {}, {
60
+ client: {
61
+ name: 'Metorial Discovery',
62
+ version: '1.0.0'
63
+ },
64
+ capabilities: {}
65
+ });
66
+
67
+ let info = client.getServerVersion();
68
+ let capabilities = client.getServerCapabilities();
69
+ let instructions = client.getInstructions();
70
+
59
71
  return {
72
+ server: {
73
+ info,
74
+ capabilities,
75
+ instructions
76
+ },
77
+
60
78
  configSchema: this.instance.config ? getConfigSchema(this.instance.config) : null,
61
79
  oauth: this.instance.authConfig
62
80
  ? {