Skip to main content
Glama

ESA MCP Server

by aliyun
route.ts8.26 kB
import { CallToolRequest, Tool } from '@modelcontextprotocol/sdk/types.js'; import api from '../../utils/service.js'; import { CreateRoutineRouteRequest, DeleteRoutineRouteRequest, GetRoutineRouteRequest, ListRoutineRoutesRequest, ListSiteRoutesRequest, UpdateRoutineRouteRequest, } from '@alicloud/esa20240910'; import { transferRouteToRuleString } from '../../utils/helpers.js'; export const ROUTE_CREATE_TOOL: Tool = { name: 'route_create', description: 'Create a new route associated with an Edge Routine (ER).', inputSchema: { type: 'object', properties: { siteId: { type: 'number', description: 'The ID of the site', }, mode: { type: 'enum', enum: ['simple', 'custom'], description: 'The mode of the route, default is simple', }, route: { type: 'string', description: 'The route of the route, if mode is simple, this field is required. For example: test.example.com/*', }, rule: { type: 'string', description: 'The rule of the route, if mode is custom, this field is required', }, routineName: { type: 'string', description: 'The name of the routine', }, routeName: { type: 'string', description: 'The name of the route, use to identify the route. For example: test-route', }, bypass: { type: 'enum', enum: ['on', 'off'], description: 'The bypass of the route, default is off', }, routeEnable: { type: 'enum', enum: ['on', 'off'], description: 'The enable of the route, default is on', }, sequence: { type: 'number', description: 'The sequence of the route, if not passed, default is the current number of routes', }, }, required: [ 'siteId', 'mode', 'rule', 'routineName', 'routeName', 'bypass', 'routeEnable', ], }, }; export const ROUTE_UPDATE_TOOL: Tool = { name: 'route_update', description: 'Modify the configuration of an existing Edge Routine route.', inputSchema: { type: 'object', properties: { siteId: { type: 'number', description: 'The ID of the site', }, configId: { type: 'number', description: 'The ID of the config', }, routeName: { type: 'string', description: 'The name of the route, use to identify the route.', }, routeEnable: { type: 'enum', enum: ['on', 'off'], description: 'The enable of the route', }, rule: { type: 'string', description: 'The rule of the route', }, routineName: { type: 'string', description: 'The name of the routine', }, bypass: { type: 'enum', enum: ['on', 'off'], description: 'The bypass of the route ', }, sequence: { type: 'number', description: 'The sequence of the route, if not passed, default is the current number of routes', }, }, required: [ 'siteId', 'configId', 'routeName', 'routeEnable', 'rule', 'routineName', 'bypass', ], }, }; export const ROUTE_DELETE_TOOL: Tool = { name: 'route_delete', description: 'Delete a specified route associated with an Edge Routine (ER).', inputSchema: { type: 'object', properties: { siteId: { type: 'number', description: 'The ID of the site', }, configId: { type: 'number', description: 'The ID of the config', }, }, required: ['siteId', 'configId'], }, }; export const ROUTE_GET_TOOL: Tool = { name: 'route_get', description: 'Get details of a specific route associated with an Edge Routine (ER).', inputSchema: { type: 'object', properties: { siteId: { type: 'number', description: 'The ID of the site', }, configId: { type: 'number', description: 'The ID of the config', }, }, required: ['siteId', 'configId'], }, }; export const ROUTINE_ROUTE_LIST_TOOL: Tool = { name: 'routine_route_list', description: 'List all routes associated with a specific Edge Routine (ER).', inputSchema: { type: 'object', properties: { routineName: { type: 'string', description: 'The name of the routine', }, routeName: { type: 'string', description: 'The name of the route, use to filter list results', }, pageNumber: { type: 'number', description: 'The page number of the routes', }, pageSize: { type: 'number', description: 'The page size of the routes', }, }, required: ['routineName'], }, }; // export interface ListSiteRoutesReq { // SiteId: number; // ConfigId?: number; // ConfigType?: string; // RouteName?: string; // PageNumber?: number; // PageSize?: number; // RegionId?: string; // } export const SITE_ROUTE_LIST_TOOL: Tool = { name: 'site_route_list', description: 'List all routes associated with a specific site.', inputSchema: { type: 'object', properties: { siteId: { type: 'number', description: 'The ID of the site', }, routeName: { type: 'string', description: 'The name of the route, use to filter list results', }, pageNumber: { type: 'number', description: 'The page number of the routes', }, pageSize: { type: 'number', description: 'The page size of the routes', }, }, required: ['siteId'], }, }; export const route_create = async (request: CallToolRequest) => { const { mode, route } = request.params.arguments as CreateRoutineRouteRequest; if (mode === 'simple') { const res = await api.createRoutineRoute({ ...request.params.arguments, rule: transferRouteToRuleString(route), } as unknown as CreateRoutineRouteRequest); return { content: [{ type: 'text', text: JSON.stringify(res) }], success: true, }; } else { const res = await api.createRoutineRoute( request.params.arguments as CreateRoutineRouteRequest, ); return { content: [{ type: 'text', text: JSON.stringify(res) }], success: true, }; } }; export const route_delete = async (request: CallToolRequest) => { const res = await api.deleteRoutineRoute( request.params.arguments as DeleteRoutineRouteRequest, ); return { content: [{ type: 'text', text: JSON.stringify(res) }], success: true, }; }; export const route_update = async (request: CallToolRequest) => { const { mode, route } = request.params.arguments as CreateRoutineRouteRequest; if (mode === 'simple') { const res = await api.updateRoutineRoute({ ...request.params.arguments, rule: transferRouteToRuleString(route), } as unknown as UpdateRoutineRouteRequest); return { content: [{ type: 'text', text: JSON.stringify(res) }], success: true, }; } else { const res = await api.updateRoutineRoute( request.params.arguments as UpdateRoutineRouteRequest, ); return { content: [{ type: 'text', text: JSON.stringify(res) }], success: true, }; } }; export const route_get = async (request: CallToolRequest) => { const res = await api.getRoutineRoute( request.params.arguments as GetRoutineRouteRequest, ); return { content: [{ type: 'text', text: JSON.stringify(res) }], success: true, }; }; export const routine_route_list = async (request: CallToolRequest) => { const res = await api.listRoutineRoutes( request.params.arguments as ListRoutineRoutesRequest, ); return { content: [{ type: 'text', text: JSON.stringify(res) }], success: true, }; }; export const site_route_list = async (request: CallToolRequest) => { const res = await api.listSiteRoutes( request.params.arguments as ListSiteRoutesRequest, ); return { content: [{ type: 'text', text: JSON.stringify(res) }], success: true, }; };

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/aliyun/mcp-server-esa'

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