Skip to main content
Glama
ncloud-mcp-server

ncloud-mcp-server

by sjk4425

ncloud_functions_create_action

Create or update a Naver Cloud Functions action idempotently, defining runtime, code, execution limits, and VPC attachments; type is fixed after creation.

Instructions

Create or update a Cloud Functions action (PUT, API v2.1 (/ncf/api/v2) — idempotent; the same call updates an existing action). type selects the action kind and CANNOT be changed after creation: basic (default) | web | sequence | sequence-web. basic/web: exec_kind, exec_code and exec_main are required; limits_timeout/limits_memory default to 60000 ms / 128 MB; on platform=vpc the action MUST be attached to a VPC + Subnet (vpc_no, subnet_no). sequence/sequence-web: pass exec_components as ['{packageName}/{actionName}', ...] (use '-' for unpackaged actions); exec_kind is forced to 'sequence'. Runtimes (exec_kind): nodejs:22, python:3.13, java, java:21, swift:3.1.1, php:7.3, go:1.19, dotnet:2.2, custom image. Deprecated since 2025-09-18 and refused for NEW actions: nodejs:6, nodejs:8, nodejs:12, nodejs:16, python:3.6, python:3.7, python:3.11, php:7.1, go:1.11. java/dotnet accept only base64 binaries (.jar / .zip) with exec_binary=true. 'custom image' requires exec_imageUri ('{registryName}/{imageName}:{tag}'). Use dryRun=true to see the exact request without calling the API.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "actionName": "<actionName>"
    },
    "name": "ncloud_functions_create_action"
  }
}

Input Schema

NameRequiredDescriptionDefault
typeNoAction type (query parameter). Cannot be changed once created.basic
dryRunNoPreview the request without calling the API
vpc_noNoVPC number to attach (REQUIRED for basic/web on platform=vpc; see ncloud_list_vpcs)
platformNoPlatform (default: vpc). Singapore/Japan regions support vpc only.vpc
raw_httpNoweb types only: pass the raw HTTP request to the action (sent as 'raw-http')
exec_codeNoSource code (exec_binary=false) or base64-encoded file (exec_binary=true). Required for basic/web unless exec_kind is 'custom image'.
exec_kindNoRuntime, e.g. 'python:3.13', 'nodejs:22', 'java:21', 'custom image'. Ignored for sequence types (forced to 'sequence'). Supported: nodejs:22, python:3.13, java, java:21, swift:3.1.1, php:7.3, go:1.19, dotnet:2.2, custom image
exec_mainNoEntry function name, e.g. 'main'. Required for basic/web.
subnet_noNoSubnet number to attach (REQUIRED for basic/web on platform=vpc; see ncloud_list_subnets)
actionNameYesAction name: 1-50 chars of letters, digits, '-' and '_'; must not start with '-'; unique across packages/actions/triggers
parametersNoDefault parameters as a {key: value} JSON object (basic/web only). Precedence: runtime params > trigger params > action params > package params.
descriptionNoDescription (0-3000 bytes)
exec_binaryNotrue if exec_code is a base64-encoded file (required for java/dotnet: .jar / .zip)
packageNameNoPackage name ('-' = unpackaged action)-
exec_imageUriNoCustom Image runtime only: '{registryName}/{imageName}:{tag}' (tag defaults to latest)
limits_memoryNoMemory in MB: 128 | 256 | 512 | 1024 (default 128). basic/web only.
custom_optionsNoweb types only: let the action set HTTP response headers (sent as 'custom-options')
limits_timeoutNoMax execution time in ms, 500-300000 (default 60000). basic/web only.
exec_componentsNosequence/sequence-web only: actions to run in order, each '{packageName}/{actionName}'
allowDeprecatedRuntimeNoSend a deprecated exec_kind anyway (the API is documented to refuse new actions on them)

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed34 schema fields changedv1.15.0
    • changedInput schema / properties / actionName / description
      Previous value: -"Name of the action to create or update"New value: +"Action name: 1-50 chars of letters, digits, '-' and '_'; must not start with '-'; unique across packages/actions/triggers"
    • addedInput schema / properties / actionName / maxLength
      Added value: +50
    • addedInput schema / properties / actionName / minLength
      Added value: +1
    • addedInput schema / properties / allowDeprecatedRuntime
      Added value: +{
      +  "default": false,
      +  "description": "Send a deprecated exec_kind anyway (the API is documented to refuse new actions on them)",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / custom_options / description
      Previous value: -"Enable custom options"New value: +"web types only: let the action set HTTP response headers (sent as 'custom-options')"
    • changedInput schema / properties / description / description
      Previous value: -"Description of the action"New value: +"Description (0-3000 bytes)"
    • addedInput schema / properties / description / maxLength
      Added value: +3000
    • addedInput schema / properties / dryRun
      Added value: +{
      +  "default": false,
      +  "description": "Preview the request without calling the API",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / exec_binary / default
      Added value: +false
    • changedInput schema / properties / exec_binary / description
      Previous value: -"Whether code is base64 encoded"New value: +"true if exec_code is a base64-encoded file (required for java/dotnet: .jar / .zip)"
    • changedInput schema / properties / exec_code / description
      Previous value: -"Source code string (required for basic actions)"New value: +"Source code (exec_binary=false) or base64-encoded file (exec_binary=true). Required for basic/web unless exec_kind is 'custom image'."
    • changedInput schema / properties / exec_components / description
      Previous value: -"Array of '{packageName}/{actionName}' for sequence actions"New value: +"sequence/sequence-web only: actions to run in order, each '{packageName}/{actionName}'"
    • addedInput schema / properties / exec_imageUri
      Added value: +{
      +  "description": "Custom Image runtime only: '{registryName}/{imageName}:{tag}' (tag defaults to latest)",
      +  "type": "string"
      +}
    • changedInput schema / properties / exec_kind / description
      Previous value: -"Runtime string (e.g. 'nodejs:16', 'python:3.9', 'java:11', 'dotnet:6.0', or 'sequence')"New value: +"Runtime, e.g. 'python:3.13', 'nodejs:22', 'java:21', 'custom image'. Ignored for sequence types (forced to 'sequence'). Supported: nodejs:22, python:3.13, java, java:21, swift:3.1.1, php:7.3, go:1.19, dotnet:2.2, custom image"
    • changedInput schema / properties / exec_main / description
      Previous value: -"Entry function name (required for basic actions)"New value: +"Entry function name, e.g. 'main'. Required for basic/web."
    • addedInput schema / properties / limits_memory / default
      Added value: +128
    • changedInput schema / properties / limits_memory / description
      Previous value: -"Memory in MB (128, 256, 512, or 1024)"New value: +"Memory in MB: 128 | 256 | 512 | 1024 (default 128). basic/web only."
    • addedInput schema / properties / limits_memory / enum
      Added value: +[
      +  128,
      +  256,
      +  512,
      +  1024
      +]
    • addedInput schema / properties / limits_timeout / default
      Added value: +60000
    • changedInput schema / properties / limits_timeout / description
      Previous value: -"Timeout in milliseconds (500~300000)"New value: +"Max execution time in ms, 500-300000 (default 60000). basic/web only."
    • addedInput schema / properties / limits_timeout / maximum
      Added value: +300000
    • addedInput schema / properties / limits_timeout / minimum
      Added value: +500
    • changedInput schema / properties / limits_timeout / type
      Previous value: -"number"New value: +"integer"
    • changedInput schema / properties / packageName / description
      Previous value: -"Package name (use '-' for unpackaged actions)"New value: +"Package name ('-' = unpackaged action)"
    • changedInput schema / properties / parameters / description
      Previous value: -"Default parameters as a JSON object"New value: +"Default parameters as a {key: value} JSON object (basic/web only). Precedence: runtime params > trigger params > action params > package params."
    • changedInput schema / properties / platform / description
      Previous value: -"Platform type (default: vpc)"New value: +"Platform (default: vpc). Singapore/Japan regions support vpc only."
    • changedInput schema / properties / raw_http / description
      Previous value: -"Enable raw HTTP handling"New value: +"web types only: pass the raw HTTP request to the action (sent as 'raw-http')"
    • changedInput schema / properties / subnet_no / description
      Previous value: -"Subnet number"New value: +"Subnet number to attach (REQUIRED for basic/web on platform=vpc; see ncloud_list_subnets)"
    • changedInput schema / properties / subnet_no / type
      Previous value: -"number"New value: +"integer"
    • addedInput schema / properties / type
      Added value: +{
      +  "default": "basic",
      +  "description": "Action type (query parameter). Cannot be changed once created.",
      +  "enum": [
      +    "basic",
      +    "web",
      +    "sequence",
      +    "sequence-web"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / vpc_no / description
      Previous value: -"VPC number"New value: +"VPC number to attach (REQUIRED for basic/web on platform=vpc; see ncloud_list_vpcs)"
    • changedInput schema / properties / vpc_no / type
      Previous value: -"number"New value: +"integer"
    • removedInput schema / properties / web
      Removed value: -{
      -  "description": "Enable web action",
      -  "type": "boolean"
      -}
    • changedInput schema / required
      Previous value: -[
      -  "actionName",
      -  "exec_kind"
      -]New value: +[
      +  "actionName"
      +]
  2. First observedv1.10.1

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only declare destructiveHint=false, leaving the description to carry the behavioral load, and it does so richly: idempotency, immutability of 'type' after creation, required fields per type, timeout/memory defaults, mandatory VPC+Subnet wiring, forced exec_kind for sequence, refused deprecated runtimes, and a dryRun preview mode. This is far beyond what the single annotation provides.

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?

Dense but front-loaded: idempotency and type immutability come first, then per-type rules, then runtime caveats and dryRun. The runtime and deprecation lists are long, but each entry encodes a decision the agent must make, so it is information-dense rather than padded.

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

Completeness5/5

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

For a 20-parameter tool with no output schema, the description covers construction rules, platform constraints, deprecated runtimes, binary/image requirements, and a safe preview path. There is no output contract to explain, and every non-obvious input combination appears to be addressed.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds cross-parameter semantics the flat schema cannot express: conditional requirements (basic/web need exec_kind/exec_code/exec_main; VPC platform needs vpc_no/subnet_no), default values, sequence component syntax with '-' for unpackaged, and the custom-image URI format. This meaningfully exceeds the schema.

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+resource ('Create or update a Cloud Functions action') and immediately disambiguates the dual create/update semantics via idempotent PUT, which no other sibling tool does. An agent can tell it apart from ncloud_functions_get_action, list_actions, and delete_action at a glance.

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?

Explains that the same call updates an existing action and gives concrete per-type requirements and defaults, so an agent knows which branch of behavior applies. It does not explicitly name alternative tools or state when-not to use it (e.g. package selection via ncloud_functions_create_package), so it stops just short of full routing guidance.

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