UNPKG

mcp-framework

Version:

Framework for building Model Context Protocol (MCP) servers in Typescript

45 lines (44 loc) 1.68 kB
import { logger } from '../../core/Logger.js'; export class ProtectedResourceMetadata { config; metadataJson; constructor(config) { if (!config.resource || config.resource.trim() === '') { throw new Error('OAuth metadata requires a resource identifier'); } if (!config.authorizationServers || config.authorizationServers.length === 0) { throw new Error('OAuth metadata requires at least one authorization server'); } for (const server of config.authorizationServers) { if (!server || server.trim() === '') { throw new Error('Authorization server URL cannot be empty'); } try { new URL(server); } catch { throw new Error(`Invalid authorization server URL: ${server}`); } } this.config = config; const metadata = this.generateMetadata(); this.metadataJson = JSON.stringify(metadata, null, 2); logger.debug(`ProtectedResourceMetadata initialized - resource: ${this.config.resource}, servers: ${this.config.authorizationServers.length}`); } generateMetadata() { return { resource: this.config.resource, authorization_servers: this.config.authorizationServers, }; } toJSON() { return this.metadataJson; } serve(res) { logger.debug('Serving OAuth Protected Resource Metadata'); res.setHeader('Content-Type', 'application/json'); res.setHeader('Cache-Control', 'public, max-age=3600'); res.writeHead(200); res.end(this.metadataJson); } }