UNPKG

@edicarlos.lds/businessmap-mcp

Version:

Model Context Protocol server for BusinessMap (Kanbanize) integration

80 lines 3.28 kB
import { getCurrentUserSchema, getUserSchema, inviteUserSchema, listUsersSchema, } from '../../schemas/user-schemas.js'; import { createErrorResponse, createSuccessResponse } from './base-tool.js'; export class UserToolHandler { registerTools(server, client, readOnlyMode) { this.registerListUsers(server, client); this.registerGetUser(server, client); this.registerGetCurrentUser(server, client); if (!readOnlyMode) { this.registerInviteUser(server, client); } } registerListUsers(server, client) { server.registerTool('list_users', { title: 'List Users', description: 'Get a list of all users', inputSchema: listUsersSchema.shape, annotations: { readOnlyHint: true, idempotentHint: true }, }, async () => { try { const users = await client.getUsers(); return createSuccessResponse(users); } catch (error) { return createErrorResponse(error, 'fetching users'); } }); } registerGetUser(server, client) { server.registerTool('get_user', { title: 'Get User', description: 'Get details of a specific user', inputSchema: getUserSchema.shape, annotations: { readOnlyHint: true, idempotentHint: true }, }, async ({ user_id }) => { try { const user = await client.getUser(user_id); return createSuccessResponse(user); } catch (error) { return createErrorResponse(error, 'fetching user'); } }); } registerGetCurrentUser(server, client) { server.registerTool('get_current_user', { title: 'Get Current User', description: 'Get details of the current logged user', inputSchema: getCurrentUserSchema.shape, annotations: { readOnlyHint: true, idempotentHint: true }, }, async () => { try { const currentUser = await client.getCurrentUser(); return createSuccessResponse(currentUser); } catch (error) { return createErrorResponse(error, 'fetching current user'); } }); } registerInviteUser(server, client) { server.registerTool('invite_user', { title: 'Invite User', description: 'Add and invite a new user by email. Sends an invitation email with a link to set their password and log in.', inputSchema: inviteUserSchema.shape, }, async ({ email, do_not_send_confirmation_email }) => { try { const params = { email }; if (do_not_send_confirmation_email !== undefined) { params['do_not_send_confirmation_email'] = do_not_send_confirmation_email; } const user = await client.inviteUser(params); return createSuccessResponse(user, 'User invited successfully:'); } catch (error) { return createErrorResponse(error, 'inviting user'); } }); } } //# sourceMappingURL=user-tools.js.map