@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 +21 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +137 -2
- package/dist/index.d.ts +137 -2
- package/dist/index.js +21 -2
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/client.ts +4 -1
- package/src/instance.ts +20 -2
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(
|
|
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",
|
package/dist/index.cjs.map
CHANGED
|
@@ -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(
|
|
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":"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","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
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(
|
|
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
|
? {
|