trello-mcp-server
by v4lheru
Verified
- src
- tools
/**
* Label Tool Handlers
*
* Implements the handlers for label-related tools.
* Each handler corresponds to a tool defined in label-tools.ts.
*/
import { ServiceFactory } from '../services/service-factory.js';
/**
* Handlers for label-related tools
*/
export const labelToolHandlers = {
/**
* Get a specific label by ID
* @param args - Tool arguments
* @returns Promise resolving to the label
*/
get_label: async (args: any) => {
const labelService = ServiceFactory.getInstance().getLabelService();
return labelService.getLabel(args.labelId);
},
/**
* Create a new label on a board
* @param args - Tool arguments
* @returns Promise resolving to the created label
*/
create_label: async (args: any) => {
const labelService = ServiceFactory.getInstance().getLabelService();
return labelService.createLabel(args.boardId, args.name, args.color);
},
/**
* Update an existing label
* @param args - Tool arguments
* @returns Promise resolving to the updated label
*/
update_label: async (args: any) => {
const labelService = ServiceFactory.getInstance().getLabelService();
const { labelId, ...updateData } = args;
return labelService.updateLabel(labelId, updateData);
},
/**
* Delete a label
* @param args - Tool arguments
* @returns Promise resolving when deletion is complete
*/
delete_label: async (args: any) => {
if (!args.confirm) {
throw new Error('Deletion requires confirmation. Set confirm: true to proceed.');
}
const labelService = ServiceFactory.getInstance().getLabelService();
await labelService.deleteLabel(args.labelId);
return { success: true, message: 'Label deleted successfully' };
},
/**
* Get all labels on a board
* @param args - Tool arguments
* @returns Promise resolving to the labels
*/
get_board_labels: async (args: any) => {
const labelService = ServiceFactory.getInstance().getLabelService();
return labelService.getBoardLabels(args.boardId);
},
/**
* Update the name of a label
* @param args - Tool arguments
* @returns Promise resolving to the updated label
*/
update_label_name: async (args: any) => {
const labelService = ServiceFactory.getInstance().getLabelService();
return labelService.updateName(args.labelId, args.name);
},
/**
* Update the color of a label
* @param args - Tool arguments
* @returns Promise resolving to the updated label
*/
update_label_color: async (args: any) => {
const labelService = ServiceFactory.getInstance().getLabelService();
return labelService.updateColor(args.labelId, args.color);
},
/**
* Create a new label directly on a card
* @param args - Tool arguments
* @returns Promise resolving to the created label
*/
create_label_on_card: async (args: any) => {
const labelService = ServiceFactory.getInstance().getLabelService();
return labelService.createLabelOnCard(args.cardId, args.name, args.color);
},
/**
* Get all labels on a card
* @param args - Tool arguments
* @returns Promise resolving to the labels
*/
get_card_labels: async (args: any) => {
const labelService = ServiceFactory.getInstance().getLabelService();
return labelService.getCardLabels(args.cardId);
},
/**
* Add a label to a card
* @param args - Tool arguments
* @returns Promise resolving when the operation is complete
*/
add_label_to_card: async (args: any) => {
const labelService = ServiceFactory.getInstance().getLabelService();
await labelService.addLabelToCard(args.cardId, args.labelId);
return { success: true, message: 'Label added to card successfully' };
},
/**
* Remove a label from a card
* @param args - Tool arguments
* @returns Promise resolving when the operation is complete
*/
remove_label_from_card: async (args: any) => {
const labelService = ServiceFactory.getInstance().getLabelService();
await labelService.removeLabelFromCard(args.cardId, args.labelId);
return { success: true, message: 'Label removed from card successfully' };
}
};