Zod object schema for parameter validation
Template definition with name, description, uriTemplate, and read handler
The registered template (for re-export and type inference)
// resources/logs.ts - With typed parameters
import { defineResourceTemplate } from 'mcp-server-framework';
import { z } from 'zod';
export const logResource = defineResourceTemplate({
name: 'log-viewer',
description: 'View application logs by ID',
uriTemplate: 'myapp://logs/{logId}',
mimeType: 'text/plain',
input: z.object({
logId: z.string().describe('Log identifier'),
}),
read: async ({ logId }) => {
const log = await fetchLogById(logId);
return log.content;
},
});
// resources/users.ts - User profile template
import { defineResourceTemplate } from 'mcp-server-framework';
export const userProfileResource = defineResourceTemplate({
name: 'user-profile',
description: 'Get user profile by ID',
uriTemplate: 'myapp://users/{userId}/profile',
mimeType: 'application/json',
read: async ({ userId }) => {
const user = await getUserById(userId);
return JSON.stringify(user);
},
});
Define a resource template with automatic registration.
Resource templates support dynamic URIs using RFC 6570 URI Templates. The template is automatically registered in the global registry when defined.