import { McpServer, ResourceTemplate } from '@modelcontextprotocol/sdk/server/mcp.js';
export function registerResources(server: McpServer) {
// Example Resource 1: Static resource
server.registerResource(
'info',
new ResourceTemplate('info://server', { list: undefined }),
{
title: 'Server Information',
description: 'Get information about this MCP server',
},
async (uri) => {
return {
contents: [
{
uri: uri.href,
text: JSON.stringify({
name: 'MCP Server',
version: '1.0.0',
capabilities: ['tools', 'resources', 'prompts'],
description: 'A production-ready MCP server built with TypeScript',
}, null, 2),
},
],
};
}
);
// Example Resource 2: Dynamic resource with parameters
server.registerResource(
'greeting',
new ResourceTemplate('greeting://{name}', { list: undefined }),
{
title: 'Greeting Resource',
description: 'Get a personalized greeting',
},
async (uri, { name }) => {
return {
contents: [
{
uri: uri.href,
text: `Hello, ${name}! Welcome to the MCP server.`,
},
],
};
}
);
// Example Resource 3: Data resource
server.registerResource(
'data',
new ResourceTemplate('data://{id}', { list: undefined }),
{
title: 'Data Resource',
description: 'Access data by ID',
},
async (uri, { id }) => {
// In production, you would fetch from a database or API
const mockData = {
id,
timestamp: new Date().toISOString(),
status: 'active',
metadata: {
source: 'mcp-server',
type: 'example',
},
};
return {
contents: [
{
uri: uri.href,
text: JSON.stringify(mockData, null, 2),
},
],
};
}
);
}