alibabacloud-devops-mcp-server
Version:
MCP Server for using the alibabacloud-devops API: allows AI assistants to directly participate in development collaboration, helping teams optimize development processes and improve efficiency.
116 lines (115 loc) • 5.05 kB
JavaScript
import { Toolset, DEFAULT_ENABLED_TOOLSETS } from "./toolsets.js";
// 导入所有工具集函数
import { getCodeManagementTools } from '../tool-registry/code-management.js';
import { getOrganizationTools } from '../tool-registry/organization.js';
import { getProjectManagementTools } from '../tool-registry/project-management.js';
import { getPipelineTools } from '../tool-registry/pipeline.js';
import { getPackageManagementTools } from '../tool-registry/packages.js';
import { getServiceConnectionTools } from '../tool-registry/service-connections.js';
import { getAppStackTools } from '../tool-registry/appstack.js';
import { getAppStackTagTools } from '../tool-registry/appstack-tags.js';
import { getAppStackTemplateTools } from '../tool-registry/appstack-templates.js';
import { getAppStackGlobalVarTools } from '../tool-registry/appstack-global-vars.js';
import { getAppStackVariableGroupTools } from '../tool-registry/appstack-variable-groups.js';
import { getAppStackOrchestrationTools } from '../tool-registry/appstack-orchestrations.js';
import { getAppStackChangeRequestTools } from '../tool-registry/appstack-change-requests.js';
import { getAppStackDeploymentResourceTools } from '../tool-registry/appstack-deployment-resources.js';
import { getAppStackChangeOrderTools } from '../tool-registry/appstack-change-orders.js';
import { getEffortTools } from '../tool-registry/effort.js';
import { getResourceMemberTools } from '../tool-registry/resourceMember.js';
import { getVMDeployOrderTools } from '../tool-registry/vmDeployOrder.js';
import { getCommitTools } from '../tool-registry/commit.js';
import { getBaseTools } from '../tool-registry/base.js';
// 定义所有工具集配置
const ALL_TOOLSET_CONFIGS = {
[Toolset.BASE]: {
name: Toolset.BASE,
description: "Base tools that are always loaded",
tools: getBaseTools
},
[Toolset.CODE_MANAGEMENT]: {
name: Toolset.CODE_MANAGEMENT,
description: "Code repository management tools",
tools: (() => [
...getCodeManagementTools(),
...getCommitTools()
])
},
[Toolset.ORGANIZATION_MANAGEMENT]: {
name: Toolset.ORGANIZATION_MANAGEMENT,
description: "Organization management tools",
tools: (() => {
const allOrgTools = getOrganizationTools();
// 移除基础工具集中的三个常用工具
const filteredOrgTools = allOrgTools.filter(tool => tool.name !== "get_current_organization_info" &&
tool.name !== "get_user_organizations" &&
tool.name !== "get_current_user");
return filteredOrgTools;
})
},
[Toolset.PROJECT_MANAGEMENT]: {
name: Toolset.PROJECT_MANAGEMENT,
description: "Project management tools",
tools: (() => [
...getProjectManagementTools(),
...getEffortTools()
])
},
[Toolset.PIPELINE_MANAGEMENT]: {
name: Toolset.PIPELINE_MANAGEMENT,
description: "Pipeline management tools",
tools: (() => [
...getPipelineTools(),
...getServiceConnectionTools(),
...getResourceMemberTools(),
...getVMDeployOrderTools()
])
},
[Toolset.PACKAGES_MANAGEMENT]: {
name: Toolset.PACKAGES_MANAGEMENT,
description: "Package repository management tools",
tools: getPackageManagementTools
},
[Toolset.APPLICATION_DELIVERY]: {
name: Toolset.APPLICATION_DELIVERY,
description: "Application delivery tools",
tools: (() => [
...getAppStackTools(),
...getAppStackTagTools(),
...getAppStackTemplateTools(),
...getAppStackGlobalVarTools(),
...getAppStackVariableGroupTools(),
...getAppStackOrchestrationTools(),
...getAppStackChangeRequestTools(),
...getAppStackDeploymentResourceTools(),
...getAppStackChangeOrderTools()
])
}
};
// 工具集管理器实现
export class DefaultToolsetManager {
getAllTools() {
return Object.values(ALL_TOOLSET_CONFIGS).flatMap(config => config.tools());
}
getToolsByToolset(toolsetName) {
const config = ALL_TOOLSET_CONFIGS[toolsetName];
if (!config) {
throw new Error(`Unknown toolset: ${toolsetName}`);
}
return config.tools();
}
getEnabledTools(enabledToolsets) {
// 如果没有指定启用的工具集,则使用默认配置
const toolsets = enabledToolsets.length > 0 ? enabledToolsets : DEFAULT_ENABLED_TOOLSETS;
return toolsets.flatMap(toolsetName => {
const config = ALL_TOOLSET_CONFIGS[toolsetName];
if (!config) {
console.warn(`Unknown toolset: ${toolsetName}, skipping...`);
return [];
}
return config.tools();
});
}
}
// 创建默认工具集管理器实例
export const defaultToolsetManager = new DefaultToolsetManager();