Skip to main content
Glama
sjk4425

ncloud-mcp-server

by sjk4425

ncloud_edge_create_edge

Create a Global Edge CDN edge with origin, caching, and distribution settings via ncloud-mcp-server. Preview changes first with dryRun to validate config before provisioning.

Instructions

Create a new Global Edge CDN edge with origin, caching, and distribution settings. Sub-objects not exposed as parameters use sensible defaults (no edge logging, no edge auth, no caching rules, no header policies, WHITELIST access control with empty lists). For full control use ncloud_edge_edit_edge after creation. Use dryRun=true to preview without creating.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
corsNoAdd CORS headers (managed rule)
hstsNoEnable HSTS
http2NoEnable HTTP/2
dryRunNoIf true, returns a preview without actually creating the edge
cacheAgeNoCache max-age (1 second to 365 days)
edgeNameYesEdge name (3-35 chars: letters, digits, '-', '_')
profileIdYesProfile ID to create the edge under
originPathNoOrigin path appended to origin requests, e.g. /static/
originPortNoOrigin port number
originTypeYesOrigin server type
regionTypeYesService region: KOREA, JAPAN, or GLOBAL
negativeTtlNoCache origin error responses (negative TTL)
cacheAgeTypeNoCache max-age unitDAYS
originRegionNoOrigin region (required for OBJECT_STORAGE or LOAD_BALANCER)
protocolTypeYesService protocol: HTTPS or ALL (HTTP+HTTPS)
httpCompressionNoEnable Gzip/Brotli compression
cacheKeyHostnameNoCache key hostname typeINCOMING_HOST_HEADER
customHostHeaderNoHost header value (required when forwardHostHeaderType is CUSTOM)
originBucketNameNoOrigin bucket name (required for OBJECT_STORAGE)
removeVaryHeaderNoRemove Vary headers (other than Accept-Encoding) before caching
accessControlTypeNoAccess control policy typeWHITELIST
certificateSlotIdNoCertificate slot ID (required for CUSTOM_DOMAIN served over HTTPS; see ncloud_edge_list_certificates)
edgeLoggingRegionNoRegion of the edge-logging bucket (default KR)
serviceDomainNameNoDomain name (required for NCP_DOMAIN_CUSTOM or CUSTOM_DOMAIN)
serviceDomainTypeYesService domain type
originProtocolTypeNoOrigin protocol typeHTTP
trueClientIpHeaderNoForward the client IP header to the origin
cacheRevalidateTypeNoStale object revalidation typeIF_POSSIBLE
cacheKeyQueryStringsNoQuery strings allowed in the cache key (required for ALLOW_SPECIFIC_STRING)
originCustomLocationNoOrigin domain name (required for LOAD_BALANCER, API_GATEWAY, or CUSTOM)
edgeLoggingBucketNameNoEnable edge logging into this Object Storage bucket (omit to disable logging)
forwardHostHeaderTypeNoHost header forwarding typeINCOMING_HOST_HEADER
largeFileOptimizationNoEnable large file optimization
accessControlIpPoliciesNoClient IPs or CIDR blocks for access control
cacheRuleDefinitionTypeNoDefault caching optionCACHING
edgeLoggingBucketPrefixNoLog path prefix inside the logging bucket
accessControlGeoPoliciesNoISO 3166-1 alpha-2 country codes for access control
accessControlRefererPoliciesNoReferer domains for access control
cacheKeyIgnoreQueryStringTypeNoHow query strings are used in the cache keyALL_ALLOWED

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed32 schema fields changedv2.0.1
    • addedInput schema / properties / accessControlGeoPolicies
      Added value: +{
      +  "description": "ISO 3166-1 alpha-2 country codes for access control",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / accessControlIpPolicies
      Added value: +{
      +  "description": "Client IPs or CIDR blocks for access control",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / accessControlRefererPolicies
      Added value: +{
      +  "description": "Referer domains for access control",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / accessControlType
      Added value: +{
      +  "default": "WHITELIST",
      +  "description": "Access control policy type",
      +  "enum": [
      +    "WHITELIST",
      +    "BLACKLIST"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / cacheAge
      Added value: +{
      +  "default": 7,
      +  "description": "Cache max-age (1 second to 365 days)",
      +  "type": "number"
      +}
    • addedInput schema / properties / cacheAgeType
      Added value: +{
      +  "default": "DAYS",
      +  "description": "Cache max-age unit",
      +  "enum": [
      +    "SECONDS",
      +    "MINUTES",
      +    "HOURS",
      +    "DAYS"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / cacheKeyHostname
      Added value: +{
      +  "default": "INCOMING_HOST_HEADER",
      +  "description": "Cache key hostname type",
      +  "enum": [
      +    "INCOMING_HOST_HEADER",
      +    "ORIGIN_HOSTNAME"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / cacheKeyIgnoreQueryStringType
      Added value: +{
      +  "default": "ALL_ALLOWED",
      +  "description": "How query strings are used in the cache key",
      +  "enum": [
      +    "ALL_IGNORED",
      +    "ALL_ALLOWED",
      +    "ALLOW_SPECIFIC_STRING"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / cacheKeyQueryStrings
      Added value: +{
      +  "description": "Query strings allowed in the cache key (required for ALLOW_SPECIFIC_STRING)",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / cacheRevalidateType
      Added value: +{
      +  "default": "IF_POSSIBLE",
      +  "description": "Stale object revalidation type",
      +  "enum": [
      +    "IF_POSSIBLE",
      +    "ALWAYS"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / cacheRuleDefinitionType
      Added value: +{
      +  "default": "CACHING",
      +  "description": "Default caching option",
      +  "enum": [
      +    "CACHING",
      +    "BYPASS_CACHE",
      +    "ORIGIN_CACHE_CONTROL_HEADER"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / certificateSlotId / description
      Previous value: -"Certificate slot ID (required for CUSTOM_DOMAIN with HTTPS)"New value: +"Certificate slot ID (required for CUSTOM_DOMAIN served over HTTPS; see ncloud_edge_list_certificates)"
    • addedInput schema / properties / cors
      Added value: +{
      +  "default": false,
      +  "description": "Add CORS headers (managed rule)",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / customHostHeader
      Added value: +{
      +  "description": "Host header value (required when forwardHostHeaderType is CUSTOM)",
      +  "type": "string"
      +}
    • addedInput schema / properties / edgeLoggingBucketName
      Added value: +{
      +  "description": "Enable edge logging into this Object Storage bucket (omit to disable logging)",
      +  "type": "string"
      +}
    • addedInput schema / properties / edgeLoggingBucketPrefix
      Added value: +{
      +  "description": "Log path prefix inside the logging bucket",
      +  "type": "string"
      +}
    • addedInput schema / properties / edgeLoggingRegion
      Added value: +{
      +  "description": "Region of the edge-logging bucket (default KR)",
      +  "enum": [
      +    "KR",
      +    "USWN",
      +    "SGN",
      +    "JPN",
      +    "DEN"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / edgeName / description
      Previous value: -"Edge name (3-35 chars, letters, numbers, '-', '_')"New value: +"Edge name (3-35 chars: letters, digits, '-', '_')"
    • addedInput schema / properties / forwardHostHeaderType
      Added value: +{
      +  "default": "INCOMING_HOST_HEADER",
      +  "description": "Host header forwarding type",
      +  "enum": [
      +    "INCOMING_HOST_HEADER",
      +    "ORIGIN_HOSTNAME",
      +    "CUSTOM"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / hsts
      Added value: +{
      +  "default": false,
      +  "description": "Enable HSTS",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / http2
      Added value: +{
      +  "default": true,
      +  "description": "Enable HTTP/2",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / httpCompression
      Added value: +{
      +  "default": true,
      +  "description": "Enable Gzip/Brotli compression",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / largeFileOptimization
      Added value: +{
      +  "default": true,
      +  "description": "Enable large file optimization",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / negativeTtl
      Added value: +{
      +  "default": true,
      +  "description": "Cache origin error responses (negative TTL)",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / originPath
      Added value: +{
      +  "description": "Origin path appended to origin requests, e.g. /static/",
      +  "type": "string"
      +}
    • addedInput schema / properties / originRegion / $ref
      Added value: +"#/properties/edgeLoggingRegion"
    • removedInput schema / properties / originRegion / type
      Removed value: -"string"
    • changedInput schema / properties / protocolType / description
      Previous value: -"Service protocol type"New value: +"Service protocol: HTTPS or ALL (HTTP+HTTPS)"
    • changedInput schema / properties / protocolType / enum
      Previous value: -[
      -  "HTTP",
      -  "HTTPS",
      -  "ALL"
      -]New value: +[
      +  "HTTPS",
      +  "ALL"
      +]
    • changedInput schema / properties / regionType / description
      Previous value: -"Service area (KOREA, JAPAN, or GLOBAL)"New value: +"Service region: KOREA, JAPAN, or GLOBAL"
    • addedInput schema / properties / removeVaryHeader
      Added value: +{
      +  "default": true,
      +  "description": "Remove Vary headers (other than Accept-Encoding) before caching",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / trueClientIpHeader
      Added value: +{
      +  "default": false,
      +  "description": "Forward the client IP header to the origin",
      +  "type": "boolean"
      +}
  2. First observedv1.10.1

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare destructiveHint=false, so the description carries most of the burden and does well: it enumerates exactly which sub-objects get defaults (no edge logging/auth, no caching rules, no header policies, WHITELIST access control with empty lists) and offers a non-mutating dryRun preview. It doesn't state reversibility or permission requirements, but the defaults disclosure is genuinely valuable context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the purpose, then defaults, then the alternative route and preview. No wasted text, though the defaults clause is a dense run-on list.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 39-parameter creation tool with no output schema, the description covers the non-obvious behavior (defaulted sub-objects, preview mode, edit-after-create path) that the schema cannot express. It omits prerequisites and what the create response contains, but is otherwise complete enough to call correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the 39 parameters are already fully documented, including enums, defaults, and conditionally-required fields. The description adds only category-level framing and repeats the schema-documented dryRun flag, so baseline 3 is correct.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Create), resource (Global Edge CDN edge), and the dimensions it configures (origin, caching, distribution). It also names the sibling ncloud_edge_edit_edge, so an agent can distinguish it from other edge tools without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear routing guidance: use this for initial creation, then ncloud_edge_edit_edge for full control, and dryRun=true to preview first. That covers when to use it and a preview path, though it stops short of stating prerequisites such as needing an existing profileId.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools