Skip to main content
Glama
yjiace

AlibabaCloud DevOps MCP Server

by yjiace
index.ts4.86 kB
import { handleCodeManagementTools } from './code-management.js'; import { handleOrganizationTools } from './organization.js'; import { handleProjectManagementTools } from './project-management.js'; import { handlePipelineTools } from './pipeline.js'; import { handlePackageManagementTools } from './packages.js'; import { handleServiceConnectionTools } from './service-connections.js'; import { handleAppStackTools } from './appstack.js'; import { handleAppStackTagTools } from './appstack-tags.js'; import { handleAppStackTemplateTools } from './appstack-templates.js'; import { handleAppStackGlobalVarTools } from './appstack-global-vars.js'; import { handleAppStackVariableGroupTools } from './appstack-variable-groups.js'; import { handleAppStackOrchestrationTools } from './appstack-orchestrations.js'; import { handleAppStackChangeRequestTools } from './appstack-change-requests.js'; import { handleAppStackDeploymentResourceTools } from './appstack-deployment-resources.js'; import { handleAppStackChangeOrderTools } from './appstack-change-orders.js'; import { handleEffortTools } from './effort.js'; import { handleResourceMemberTools } from './resourceMember.js'; import { handleVMDeployOrderTools } from './vmDeployOrder.js'; import { handleCommitTools } from './commit.js'; import { handleBaseTools } from './base.js'; import { Toolset } from '../common/toolsets.js'; // 定义处理函数映射 const HANDLER_MAP: Record<Toolset, (request: any) => Promise<any>> = { [Toolset.BASE]: handleBaseTools, [Toolset.CODE_MANAGEMENT]: handleCodeManagementTools, [Toolset.ORGANIZATION_MANAGEMENT]: handleOrganizationTools, [Toolset.PROJECT_MANAGEMENT]: handleProjectManagementTools, [Toolset.PIPELINE_MANAGEMENT]: handlePipelineTools, [Toolset.PACKAGES_MANAGEMENT]: handlePackageManagementTools, [Toolset.APPLICATION_DELIVERY]: handleAppStackTools, // 注意:这里只使用了主处理函数,其他AppStack处理函数在内部处理 } // 保持向后兼容的接口 export const handleToolRequest = async (request: any) => { // Try each handler in sequence until one returns a result const handlers = [ handleBaseTools, handleCodeManagementTools, handleOrganizationTools, handleProjectManagementTools, handlePipelineTools, handlePackageManagementTools, handleServiceConnectionTools, handleAppStackTools, handleAppStackTagTools, handleAppStackTemplateTools, handleAppStackGlobalVarTools, handleAppStackVariableGroupTools, handleAppStackOrchestrationTools, handleAppStackChangeRequestTools, handleAppStackDeploymentResourceTools, handleAppStackChangeOrderTools, handleEffortTools, handleResourceMemberTools, handleVMDeployOrderTools, handleCommitTools ]; for (const handler of handlers) { const result = await handler(request); if (result !== null) { return result; } } // If no handler matched, throw an error throw new Error(`Unknown tool: ${request.params.name}`); }; // 新增按工具集处理工具请求的接口 export const handleToolRequestByToolset = async (request: any, toolsetName: Toolset) => { const handler = HANDLER_MAP[toolsetName]; if (!handler) { throw new Error(`Unknown toolset: ${toolsetName}`); } return await handler(request); }; // 新增处理启用工具集的接口 export const handleEnabledToolRequest = async (request: any, enabledToolsets: Toolset[]) => { // 总是先尝试处理基础工具集 try { const baseResult = await handleToolRequestByToolset(request, Toolset.BASE); if (baseResult !== null) { return baseResult; } } catch (error) { // 如果工具不在基础工具集中,继续尝试其他工具集 // 如果是其他错误,重新抛出 if (!(error instanceof Error && error.message.includes("Unknown tool"))) { throw error; } } // 如果没有指定启用的工具集,则处理所有工具集(除了基础工具集,因为已经处理过了) const toolsets = enabledToolsets.length > 0 ? enabledToolsets : Object.values(Toolset).filter(t => t !== Toolset.BASE); // 按顺序尝试每个启用的工具集 for (const toolset of toolsets) { // 跳过基础工具集,因为我们已经处理过了 if (toolset === Toolset.BASE) { continue; } try { const result = await handleToolRequestByToolset(request, toolset); if (result !== null) { return result; } } catch (error) { // 如果工具不在当前工具集中,继续尝试下一个工具集 // 如果是其他错误,重新抛出 if (!(error instanceof Error && error.message.includes("Unknown tool"))) { throw error; } } } // 如果没有处理函数匹配,抛出错误 throw new Error(`Unknown tool: ${request.params.name}`); };

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/yjiace/alibabacloud-devops-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server