@ryancardin/azuredevops-mcp-server
Version:
MCP server for Azure DevOps integration - provides seamless access to work items, repositories, projects, boards, and sprints
173 lines • 6.54 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.WorkItemToolMethods = exports.WorkItemTools = void 0;
const WorkItemService_1 = require("../Services/WorkItemService");
const Common_1 = require("../Interfaces/Common");
const getClassMethods_1 = __importDefault(require("../utils/getClassMethods"));
class WorkItemTools {
constructor(config) {
this.workItemService = new WorkItemService_1.WorkItemService(config);
}
/**
* List work items based on a WIQL query
*/
async listWorkItems(params) {
try {
const response = await this.workItemService.listWorkItems(params.query);
return (0, Common_1.formatMcpResponse)(response, `Found ${response.workItems?.length || 0} work items.`);
}
catch (error) {
console.error('Error in listWorkItems tool:', error);
return (0, Common_1.formatErrorResponse)(error);
}
}
/**
* Get a work item by ID
*/
async getWorkItemById(params) {
try {
const workItem = await this.workItemService.getWorkItemById(params);
return (0, Common_1.formatMcpResponse)(workItem, `Work item ${params.id} details`);
}
catch (error) {
console.error('Error in getWorkItemById tool:', error);
return (0, Common_1.formatErrorResponse)(error);
}
}
/**
* Search work items
*/
async searchWorkItems(params) {
try {
const results = await this.workItemService.searchWorkItems(params);
return (0, Common_1.formatMcpResponse)(results, `Found ${results.workItems?.length || 0} matching work items`);
}
catch (error) {
console.error('Error in searchWorkItems tool:', error);
return (0, Common_1.formatErrorResponse)(error);
}
}
/**
* Get recently updated work items
*/
async getRecentlyUpdatedWorkItems(params) {
try {
const results = await this.workItemService.getRecentWorkItems(params);
return (0, Common_1.formatMcpResponse)(results, `Found ${results.workItems?.length || 0} recently updated work items`);
}
catch (error) {
console.error('Error in getRecentlyUpdatedWorkItems tool:', error);
return (0, Common_1.formatErrorResponse)(error);
}
}
/**
* Get work items assigned to current user
*/
async getMyWorkItems(params) {
try {
const results = await this.workItemService.getMyWorkItems(params);
return (0, Common_1.formatMcpResponse)(results, `Found ${results.workItems?.length || 0} work items assigned to you`);
}
catch (error) {
console.error('Error in getMyWorkItems tool:', error);
return (0, Common_1.formatErrorResponse)(error);
}
}
/**
* Create a work item
*/
async createWorkItem(params) {
try {
const workItem = await this.workItemService.createWorkItem(params);
return (0, Common_1.formatMcpResponse)(workItem, `Created work item: ${workItem.id}`);
}
catch (error) {
console.error('Error in createWorkItem tool:', error);
return (0, Common_1.formatErrorResponse)(error);
}
}
/**
* Update a work item
*/
async updateWorkItem(params) {
try {
const workItem = await this.workItemService.updateWorkItem(params);
return (0, Common_1.formatMcpResponse)(workItem, `Updated work item: ${params.id}`);
}
catch (error) {
console.error('Error in updateWorkItem tool:', error);
return (0, Common_1.formatErrorResponse)(error);
}
}
/**
* Add a comment to a work item
*/
async addWorkItemComment(params) {
try {
const comment = await this.workItemService.addWorkItemComment(params);
return (0, Common_1.formatMcpResponse)(comment, `Comment added to work item: ${params.id}`);
}
catch (error) {
console.error('Error in addWorkItemComment tool:', error);
return (0, Common_1.formatErrorResponse)(error);
}
}
/**
* Update work item state
*/
async updateWorkItemState(params) {
try {
const workItem = await this.workItemService.updateWorkItemState(params);
return (0, Common_1.formatMcpResponse)(workItem, `Updated state of work item ${params.id} to "${params.state}"`);
}
catch (error) {
console.error('Error in updateWorkItemState tool:', error);
return (0, Common_1.formatErrorResponse)(error);
}
}
/**
* Assign work item to a user
*/
async assignWorkItem(params) {
try {
const workItem = await this.workItemService.assignWorkItem(params);
return (0, Common_1.formatMcpResponse)(workItem, `Assigned work item ${params.id} to ${params.assignedTo}`);
}
catch (error) {
console.error('Error in assignWorkItem tool:', error);
return (0, Common_1.formatErrorResponse)(error);
}
}
/**
* Create a link between work items
*/
async createLink(params) {
try {
const workItem = await this.workItemService.createLink(params);
return (0, Common_1.formatMcpResponse)(workItem, `Created ${params.linkType} link from work item ${params.sourceId} to ${params.targetId}`);
}
catch (error) {
console.error('Error in createLink tool:', error);
return (0, Common_1.formatErrorResponse)(error);
}
}
/**
* Bulk create or update work items
*/
async bulkCreateWorkItems(params) {
try {
const results = await this.workItemService.bulkUpdateWorkItems(params);
return (0, Common_1.formatMcpResponse)(results, `Processed ${results.count} work items`);
}
catch (error) {
console.error('Error in bulkCreateWorkItems tool:', error);
return (0, Common_1.formatErrorResponse)(error);
}
}
}
exports.WorkItemTools = WorkItemTools;
exports.WorkItemToolMethods = (0, getClassMethods_1.default)(WorkItemTools.prototype);
//# sourceMappingURL=WorkItemTools.js.map