mcp-rand
Version:
MCP server providing random generation utilities including UUID, numbers, strings, passwords, Gaussian distribution, dice rolling, and card drawing
47 lines • 2.21 kB
JavaScript
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
import { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js';
import { SimpleHandlerRegistry } from './handlers/types.js';
import { ListToolsHandler, generateUuidHandler, generateRandomNumberHandler, generateGaussianHandler, generateStringHandler, generatePasswordHandler, rollDiceHandler, drawCardsHandler } from './handlers/index.js';
async function registerHandlers(registry) {
registry.register('tools/list', 'list', ListToolsHandler);
registry.register('tools/call', 'generate_uuid', generateUuidHandler);
registry.register('tools/call', 'generate_random_number', generateRandomNumberHandler);
registry.register('tools/call', 'generate_gaussian', generateGaussianHandler);
registry.register('tools/call', 'generate_string', generateStringHandler);
registry.register('tools/call', 'generate_password', generatePasswordHandler);
registry.register('tools/call', 'roll_dice', rollDiceHandler);
registry.register('tools/call', 'draw_cards', drawCardsHandler);
}
async function main() {
const registry = new SimpleHandlerRegistry();
await registerHandlers(registry);
const server = new Server({
name: 'mcp-rand',
version: '0.1.2',
}, {
capabilities: {
tools: {},
},
});
server.setRequestHandler(ListToolsRequestSchema, (request) => {
const handler = registry.get('tools/list');
if (handler) {
return handler(request);
}
throw new Error('Handler not found');
});
server.setRequestHandler(CallToolRequestSchema, (request) => {
const handler = registry.get('tools/call', request.params.name);
if (handler) {
return handler(request);
}
throw new Error(`Handler not found for tool: ${request.params.name}`);
});
const transport = new StdioServerTransport();
await server.connect(transport);
console.error('MCP server running on stdio');
}
main().catch(console.error);
//# sourceMappingURL=index.js.map