Alibaba Cloud Edge Security Acceleration

by aliyun

22 stars
121 downloads
Not rated
GitHub

About

Provides a bridge to Alibaba Cloud's Edge Security Acceleration service for managing edge routines, deployments, routes, and sites through authenticated API operations.

Details

Author
aliyun
Repository
aliyun/mcp-server-esa
GitHub stars
22
Downloads
121
License
MIT License
Categories
Cloud Service, Infrastructure, Security, Other, Developer Tools, AI
Tags
#integration

- Implements Model Context Protocol for tool execution
- Provides access to ESA OpenAPI services
- Runs as a server via stdio for seamless integration
- Manages ESA Routines (create, delete, list, get)
- Manages ESA Routes (create, update, delete, list)
- Manages ESA Records and Site DNS entries

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Alibaba Cloud Edge Security Acceleration
    Command (node, npx, python, etc.) npx
    Arguments
    • Argument 1 -y
    • Argument 2 @highlight/mcp-server

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

Configure the server in an MCP-enabled client config using the npx command with environment variables ESA_ACCESS_KEY_ID and ESA_ACCESS_KEY_SECRET for authentication. The server runs via stdio for seamless integration with model runners.

html_deploy

Quickly deploy an HTML page to ESA Function & Pages and return a default access URL to the user.

folder_deploy

Deploy a local folder of static files (HTML/CSS/JS/images etc.) to ESA Function & Pages and return a default access URL. The folder will be packaged as assets and uploaded.

routine_create

Create a new Edge Routine (ER) in your Alibaba Cloud account.

routine_delete

Delete an existing Edge Routine (ER) from your Alibaba Cloud account.

routine_list

List all Edge Routines (ERs) in your Alibaba Cloud account.

routine_get

Get a the details of a Edge Routine (ER).

routine_code_commit

Save a code version for future modifications or release within an Edge Routine (ER).

routine_code_deploy

Deploy a selected code version to the staging or production environment. If version is not exist, should call routine_code_commit first

deployment_delete

Delete a specified code version associated with an Edge Routine (ER).

er_record_create

Create a new record associated with an Edge Routine (ER)

er_record_delete

Delete a specified record associated with an Edge Routine (ER).

er_record_list

List all records associated with a specific Edge Routine (ER).

route_create

Create a new route associated with an Edge Routine (ER).

route_update

Modify the configuration of an existing Edge Routine route.

route_delete

Delete a specified route associated with an Edge Routine (ER).

route_get

Get details of a specific route associated with an Edge Routine (ER).

routine_route_list

List all routes associated with a specific Edge Routine (ER).

site_route_list

List all routes associated with a specific site.

list_sites

用于查询当前用户下的站点列表 ,包括站点的名称、状态、配置等信息。

site_active_list

List all active sites

site_match

Identify which site in the account matches the provided input criteria.

create_site

Adds a website. Make sure that you have an available plan before you add a website. Make sure that your website domain name has an ICP filing if the location you want to specify covers the Chinese mainland.

update_site_pause

Modifies the ESA proxy configuration of a website.

get_site_pause

Queries the ESA proxy configuration of a website.

set_certificate

Configures whether to enable certificates and update certificate information for a website.

apply_certificate

Applies for a free SSL certificate.

get_certificate

Retrieve the certificate, private key, and certificate information

delete_certificate

Deletes a certificate for a website.

list_certificates

Lists certificates of a website.

get_certificate_quota

Query certificate quota and usage.

update_ipv6

Modifies the IPv6 configuration of a website.

get_ipv6

Queries the IPv6 configuration of a website.

update_managed_transform

Modifies the configuration of managed transforms for your website.

get_managed_transform

Query Managed Transform Configuration.

site_record_list

List DNS records associated with a specific site.

create_site_a_or_aaaa_record

Creates a DNS record for a specific website. Only A/AAAA records are supported.

create_site_cname_record

Creates a DNS record for a specific website. Only supports records with type=CNAME and sourceType=Domain.

create_site_txt_record

Creates a DNS record for a specific website. Only TXT records are supported.

create_site_ns_record

Creates a DNS record for a specific website. Only NS records are supported.

create_site_mx_record

Creates a DNS record for a specific website. Only MX records are supported.

update_record

This operation allows you to update multiple types of DNS records, including but not limited to A/AAAA, CNAME, NS, MX, TXT, CAA, SRV, and URI. You can modify the record content by providing the necessary fields such as Value, Priority, and Flag. For origins added in CNAME records such as OSS and S3, the API enables you to configure authentication details to ensure secure access. Usage notes: The record value (Value) must match the record type. For example, the CNAME record should correspond to the target domain name. You must specify a priority (Priority) for some record types, such as MX and SRV. You must specify specific fields such as Flag and Tag for CAA records. When you update security records such as CERT and SSHFP, you must accurately set fields such as Type and Algorithm.If your origin type is OSS or S3, configure the authentication details in AuthConf based on the permissions.

delete_record

Deletes a DNS record of a website based on the specified RecordId.

list_records

Queries a list of Domain Name System (DNS) records of a website, including the record value, priority, and authentication configurations. Supports filtering by specifying parameters such as RecordName and RecordMatchType.

get_record

Queries the configuration of a single DNS record, such as the record value, priority, and origin authentication setting (exclusive to CNAME records).

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "alibaba cloud edge security acceleration": {
            "env": {},
            "args": [
                "-y",
                "@highlight/mcp-server"
            ],
            "command": "npx"
        }
    }
}

Linux

{
    "env": [],
    "args": [
        "-y",
        "@highlight/mcp-server"
    ],
    "command": "npx"
}

Macos

{
    "env": [],
    "args": [
        "-y",
        "@highlight/mcp-server"
    ],
    "command": "npx"
}

Windows

{
    "env": [],
    "args": [
        "/c",
        "npx",
        "-y",
        "@highlight/mcp-server"
    ],
    "command": "cmd"
}

ESA MCP Server

ESA MCP Server is an implementation of the Model Context Protocol (MCP) server, designed to facilitate communication between AI models and Edge Security Acceleration (ESA) services. This server acts as a bridge, allowing models to leverage ESA features through a standardized protocol.

---

English | 中文

Installation

Configure in your MCP-enabled client config:

{
  "mcpServers": {
    "esa-mcp-server": {
      "command": "npx",
      "args": ["-y", "mcp-server-esa"],
      "env": {
        "ESA_ACCESS_KEY_ID": "your AK",
        "ESA_ACCESS_KEY_SECRET": "your SK"
      }
    }
  }
}

Demo Videos

Claude Demo

1744168230082.gif

1744168440370.gif

Cline Demo

1744168966418.gif

Cline configured successfully:

1744114625974.png

Claude configured successfully:

1744165412296.png

Features

- Implements Model Context Protocol for tool execution
- Provides access to ESA OpenAPI services
- Runs as a server via stdio for seamless integration with model runners

Tools List

The server provides the following ESA tools callable via the MCP protocol:

Routine Management Tools

routine_create

Create a Routine

| Parameter | Type | Required | Description |
| --------------- | ---------- | ------------ | ------------------------------------------------------------ |
| name | string | Yes | Routine name, supports lowercase letters, numbers, and hyphens, must start with a lowercase letter, min 2 chars |
| description | string | No | Routine description, no spaces allowed |
| code | string | Yes | Routine source code, e.g.:export default { async fetch(request) { return handleRequest(request); } } |

routine_delete

Delete a Routine

| Parameter | Type | Required | Description |
| ------------- | ---------- | ------------ | --------------------------------- |
| name | string | Yes | Name of the Routine to delete |

routine_list

List all Routines

No parameters required.

routine_get

Get Routine details

| Parameter | Type | Required | Description |
| ------------- | ---------- | ------------ | -------------------------------- |
| name | string | Yes | Name of the Routine to query |

---

Deployment Tools

routine_code_commit

Commit Routine code

| Parameter | Type | Required | Description |
| ------------- | ---------- | ------------ | ----------------------- |
| name | string | Yes | Routine name |
| code | string | Yes | Routine source code |

routine_code_deploy

Deploy Routine code

| Parameter | Type | Required | Description |
| --------------------- | ---------- | ------------ | ------------------------------------------------------------ |
| name | string | Yes | Routine name |
| codeVersion | string | Yes | Routine version, must be valid semver |
| env | string | Yes | Routine environment: "production" or "staging" |
| canaryAreaList | array | No | Canary release areas, must be valid area names (see canary_area_list) |
| canaryCodeVersion | string | No | Canary version, must be valid semver |

canary_area_list

List all available canary areas for Routine deployment

No parameters required.

deployment_delete

Delete a deployment

| Parameter | Type | Required | Description |
| ------------- | ---------- | ------------ | ------------------- |
| name | string | Yes | Deployment name |

Route Management Tools

route_create

Create a route for a Routine

| Parameter | Type | Required | Description |
| --------------- | ---------- | -------------------- | --------------------------------------------- |
| siteId | number | Yes | Site ID |
| mode | string | Yes | Route mode: 'simple' or 'custom' |
| route | string | Required by mode | Route path (required if mode is 'simple') |
| rule | string | Yes | Route rule (required if mode is 'custom') |
| routineName | string | Yes | Routine name |
| routeName | string | Yes | Route name |
| bypass | string | Yes | Bypass: 'on' or 'off' (default 'off') |
| routeEnable | string | Yes | Enable: 'on' or 'off' (default 'on') |
| sequence | number | No | Route sequence (default: current count) |

route_update

Update a Routine route

| Parameter | Type | Required | Description |
| --------------- | ---------- | ------------ | ------------------------- |
| siteId | number | Yes | Site ID |
| configId | number | Yes | Config ID |
| routeName | string | Yes | Route name |
| routeEnable | string | Yes | Enable: 'on' or 'off' |
| rule | string | Yes | Route rule |
| routineName | string | Yes | Routine name |
| bypass | string | Yes | Bypass: 'on' or 'off' |
| sequence | number | No | Route sequence |

route_delete

Delete a Routine route

| Parameter | Type | Required | Description |
| ------------- | ---------- | ------------ | --------------- |
| siteId | number | Yes | Site ID |
| configId | number | Yes | Config ID |

route_get

Get a Routine-related route

| Parameter | Type | Required | Description |
| ------------- | ---------- | ------------ | --------------- |
| siteId | number | Yes | Site ID |
| configId | number | Yes | Config ID |

routine_route_list

List all routes of a Routine

| Parameter | Type | Required | Description |
| --------------- | ---------- | ------------ | ------------------------------------------- |
| routineName | string | Yes | Routine name |
| routeName | string | No | Route name, used to filter list results |
| pageNumber | number | No | Route page number |
| pageSize | number | No | Routes per page |

site_route_list

List all routes of a site

| Parameter | Type | Required | Description |
| -------------- | ---------- | ------------ | ------------------------------------------- |
| siteId | number | Yes | Site ID |
| routeName | string | No | Route name, used to filter list results |
| pageNumber | number | No | Route page number |
| pageSize | number | No | Routes per page |

Record Management Tools

record_create

Create a record

| Parameter | Type | Required | Description |
| ------------- | ---------- | ------------ | ---------------- |
| key | string | Yes | Record key |
| value | string | Yes | Record value |

record_delete

Delete a record

| Parameter | Type | Required | Description |
| ------------- | ---------- | ------------ | ------------------------ |
| key | string | Yes | Record key to delete |

record_list

List all records

No parameters required.

Site Tools

site_active_list

List all active sites

No parameters required.

site_match

Check which site under the account matches the user input

| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ----------------------------- |
| recordName | string | Yes | The name of the site to match |

site_create_dns_type_a_record

Create an A record for a site

| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ----------------------------------------------------------- |
| recordName | string | Yes | The name of the DNS record (e.g., subdomain or full domain) |
| siteId | number | Yes | The ID of the site, obtained from the ListSites operation |
| data | object | Yes | The data for the DNS record with value property |
| data.value | string | Yes | The IP address of the A record (e.g., "2.2.2.2") |

site_create_dns_cname_domain_record

Create a CNAME domain record for a site

| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ----------------------------------------------------------- |
| recordName | string | Yes | The name of the DNS record (e.g., subdomain or full domain) |
| siteId | number | Yes | The ID of the site, obtained from the ListSites operation |
| data | object | Yes | The data for the DNS record with value property |
| data.value | string | Yes | The domain value for the CNAME record |

##

Available Scripts

- npm run build - Build the project using rslib
- npm run dev - Run build in watch mode for development
- npm run format - Format code using Prettier
- npm run lint - Check code using ESLint

Project Structure

- src/index.ts - Main entry point
- src/tools/ - ESA tool implementations
- src/utils/ - Utilities and helpers

License

ISC

Contributions

For Alibaba internal contributors, please follow the standard contribution workflow for the project.

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.