import { Resource, ResourceHandler } from '../types/index.js';
import { ServerInfoResource, GreetingResource } from './index.js';
export class ResourceRegistry {
private resources: Map<string, ResourceHandler> = new Map();
private resourceDefinitions: Map<string, Resource> = new Map();
constructor() {
this.registerResources();
}
private registerResources() {
// Register Server Info resource
const serverInfo = { name: 'simple-mcp-server', version: '1.0.0' };
this.resources.set('info://server', new ServerInfoResource(serverInfo));
this.resourceDefinitions.set('info://server', {
uri: 'info://server',
name: 'Server Information',
description: 'Information about this MCP server',
mimeType: 'text/plain',
});
// Register Greeting resource
this.resources.set('greeting://hello', new GreetingResource());
this.resourceDefinitions.set('greeting://hello', {
uri: 'greeting://hello',
name: 'Hello Greeting',
description: 'A simple hello greeting',
mimeType: 'text/plain',
});
}
getResource(uri: string): ResourceHandler | undefined {
return this.resources.get(uri);
}
getResourceDefinition(uri: string): Resource | undefined {
return this.resourceDefinitions.get(uri);
}
getAllResources(): Resource[] {
return Array.from(this.resourceDefinitions.values());
}
}