Skip to main content
Glama

Clerk MCP Server

by correaito
server-stdio.ts3.65 kB
import 'dotenv/config'; import { config } from 'dotenv'; import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'; import { z } from 'zod'; import { listUsers, deleteUser, lockUser, unlockUser, listUsersSchema, deleteUserSchema, lockUserSchema } from './clerk-tools.js'; // Carregar variáveis de ambiente do .env.local config({ path: '.env.local' }); // Criar o servidor MCP const server = new McpServer({ name: 'clerk-mcp-server', version: '1.0.0' }); // Registrar ferramenta: Listar Usuários server.registerTool( 'list-users', { title: 'Listar Usuários', description: 'Lista todos os usuários cadastrados no Clerk com paginação', inputSchema: listUsersSchema, outputSchema: { success: z.boolean(), data: z.object({ users: z.array(z.object({ id: z.string(), email: z.string().nullable(), firstName: z.string().nullable(), lastName: z.string().nullable(), username: z.string().nullable(), createdAt: z.number(), updatedAt: z.number(), locked: z.boolean(), banned: z.boolean() })), total: z.number(), limit: z.number(), offset: z.number() }).optional(), error: z.string().optional() } }, async (params) => { const result = await listUsers(params); return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }], structuredContent: result }; } ); // Registrar ferramenta: Deletar Usuário server.registerTool( 'delete-user', { title: 'Deletar Usuário', description: 'Deleta permanentemente um usuário do Clerk pelo ID. Esta ação é irreversível!', inputSchema: deleteUserSchema, outputSchema: { success: z.boolean(), message: z.string().optional(), error: z.string().optional() } }, async (params) => { const result = await deleteUser(params); return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }], structuredContent: result }; } ); // Registrar ferramenta: Bloquear Usuário server.registerTool( 'lock-user', { title: 'Bloquear Usuário', description: 'Bloqueia um usuário do Clerk, impedindo que ele faça login', inputSchema: lockUserSchema, outputSchema: { success: z.boolean(), message: z.string().optional(), error: z.string().optional() } }, async (params) => { const result = await lockUser(params); return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }], structuredContent: result }; } ); // Registrar ferramenta: Desbloquear Usuário server.registerTool( 'unlock-user', { title: 'Desbloquear Usuário', description: 'Desbloqueia um usuário do Clerk, permitindo que ele faça login novamente', inputSchema: lockUserSchema, outputSchema: { success: z.boolean(), message: z.string().optional(), error: z.string().optional() } }, async (params) => { const result = await unlockUser(params); return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }], structuredContent: result }; } ); // Conectar ao transporte STDIO const transport = new StdioServerTransport(); await server.connect(transport); // Log de inicialização para stderr (não interfere com stdio) console.error('✅ Clerk MCP Server (STDIO) iniciado com sucesso'); console.error('📦 Ferramentas: list-users, delete-user, lock-user, unlock-user');

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/correaito/mcp_clerk'

If you have feedback or need assistance with the MCP directory API, please join our Discord server