@devstacks/id-generator-mcp
Version:
MCP server for generating IDs with different algorithms
60 lines (59 loc) • 1.7 kB
JavaScript
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
import { createId } from '@paralleldrive/cuid2';
import { v4 as uuidv4 } from 'uuid';
import { nanoid } from 'nanoid';
import { ulid } from 'ulid';
import { z } from 'zod';
const version = '0.1.5';
const server = new McpServer({
name: 'id-generator',
version,
});
server.tool('generate-id', {
algorithm: z.enum(['cuid2', 'uuid', 'nanoid', 'ulid']).default('cuid2'),
quantity: z.number().default(1),
}, async ({ algorithm, quantity }) => {
try {
let ids = [];
for (let i = 0; i < quantity; i++) {
switch (algorithm) {
case 'cuid2':
ids.push(createId());
break;
case 'nanoid':
ids.push(nanoid());
break;
case 'ulid':
ids.push(ulid());
break;
case 'uuid':
default:
ids.push(uuidv4());
break;
}
}
if (ids.length === 0) {
return respond('Failed to generate IDs', true);
}
return respond(ids.join(','));
}
catch (err) {
const error = err;
return respond(`Error: ${error.message}`, true);
}
});
function respond(text, isError = false) {
return {
content: [
{
type: 'text',
text
}
],
isError
};
}
const transport = new StdioServerTransport();
await server.connect(transport);