@edicarlos.lds/businessmap-mcp
Version:
Model Context Protocol server for BusinessMap (Kanbanize) integration
80 lines • 3.28 kB
JavaScript
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