Skip to main content
Glama

Clerk MCP Server

by correaito
clerk-tools.ts3.09 kB
import 'dotenv/config'; import { config } from 'dotenv'; import { createClerkClient } from '@clerk/backend'; import { z } from 'zod'; // Carregar variáveis de ambiente do .env.local config({ path: '.env.local' }); // Inicializar o cliente Clerk const clerk = createClerkClient({ secretKey: process.env.CLERK_SECRET_KEY! }); // Schema de validação para listar usuários export const listUsersSchema = { limit: z.number().min(1).max(100).optional().default(10), offset: z.number().min(0).optional().default(0), orderBy: z.enum(['created_at', 'updated_at']).optional().default('created_at') }; // Schema de validação para deletar usuário export const deleteUserSchema = { userId: z.string().min(1) }; // Schema de validação para bloquear usuário export const lockUserSchema = { userId: z.string().min(1) }; // Ferramenta: Listar Usuários export async function listUsers(params: { limit?: number; offset?: number; orderBy?: 'created_at' | 'updated_at'; }) { try { const { limit = 10, offset = 0, orderBy = 'created_at' } = params; const response = await clerk.users.getUserList({ limit, offset, orderBy: orderBy === 'created_at' ? '-created_at' : '-updated_at' }); const users = response.data.map(user => ({ id: user.id, email: user.emailAddresses[0]?.emailAddress || null, firstName: user.firstName, lastName: user.lastName, username: user.username, createdAt: user.createdAt, updatedAt: user.updatedAt, locked: user.locked, banned: user.banned })); return { success: true, data: { users, total: response.totalCount, limit, offset } }; } catch (error: any) { return { success: false, error: error.message || 'Erro ao listar usuários' }; } } // Ferramenta: Deletar Usuário export async function deleteUser(params: { userId: string }) { try { const { userId } = params; await clerk.users.deleteUser(userId); return { success: true, message: `Usuário ${userId} deletado com sucesso` }; } catch (error: any) { return { success: false, error: error.message || 'Erro ao deletar usuário' }; } } // Ferramenta: Bloquear Usuário export async function lockUser(params: { userId: string }) { try { const { userId } = params; await clerk.users.lockUser(userId); return { success: true, message: `Usuário ${userId} bloqueado com sucesso` }; } catch (error: any) { return { success: false, error: error.message || 'Erro ao bloquear usuário' }; } } // Ferramenta: Desbloquear Usuário (bônus) export async function unlockUser(params: { userId: string }) { try { const { userId } = params; await clerk.users.unlockUser(userId); return { success: true, message: `Usuário ${userId} desbloqueado com sucesso` }; } catch (error: any) { return { success: false, error: error.message || 'Erro ao desbloquear usuário' }; } }

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