Skip to main content
Glama
sjk4425

ncloud-mcp-server

by sjk4425

ncloud_cdss_change_kafka_config

Idempotent

Replace a Kafka config group's entire custom configuration, reverting omitted settings to defaults. To keep a value, send it; then re-apply the group to make changes effective.

Instructions

⚠️ Replaces the Config Group's ENTIRE custom configuration. Any setting you omit loses its custom value and reverts to the default — the API reports SUCCESS either way, so the revert is silent. Read the current values with ncloud_cdss_get_kafka_config and send EVERY value you want to keep, not just the ones you are changing. Named settings are typed parameters; anything without one goes in additionalSettings. range in the read response gives each setting's valid bounds (the server enforces them), and modifyYn: false marks settings the server silently discards rather than rejecting (authorizer.class.name is one). The group must be re-applied to a cluster with ncloud_cdss_apply_config_group for a change to take effect.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
numIoThreadsNonum.io.threads
configGroupNoYesConfig group number (from ncloud_cdss_list_config_groups)
numPartitionsNonum.partitions
logSegmentBytesNolog.segment.bytes (e.g. 1073741824)
kafkaVersionCodeYesKafka version code of the group (from ncloud_cdss_get_kafka_versions)
logCleanerEnableNolog.cleaner.enable
logCleanupPolicyNolog.cleanup.policy (e.g. 'delete', 'compact')
deleteTopicEnableNodelete.topic.enable
logCleanerThreadsNolog.cleaner.threads
logRetentionBytesNolog.retention.bytes (-1 for unlimited)
logRetentionHoursNolog.retention.hours (e.g. 168)
numNetworkThreadsNonum.network.threads
additionalSettingsNoSettings without a named parameter above — sent as additionalKafkaConfigGroupDetailList. ⚠️ Value application is unverified: an earlier attempt registered the entry with an empty value
authorizerClassNameNoauthorizer.class.name. ⚠️ Read-only in practice: the server accepts this, answers SUCCESS, and discards it (modifyYn=false)
autoCreateTopicsEnableNoauto.create.topics.enable
logFlushIntervalMessagesNolog.flush.interval.messages
allowEveryoneIfNoAclFoundNoallow.everyone.if.no.acl.found
offsetsTopicReplicationFactorNooffsets.topic.replication.factor

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed20 schema fields changedv1.15.0
    • addedInput schema / properties / additionalSettings
      Added value: +{
      +  "description": "Settings without a named parameter above — sent as additionalKafkaConfigGroupDetailList. ⚠️ Value application is unverified: an earlier attempt registered the entry with an empty value",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "configName": {
      +        "description": "Kafka setting name (e.g. 'compression.type')",
      +        "type": "string"
      +      },
      +      "configValue": {
      +        "description": "Value to set, as a string",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "configName",
      +      "configValue"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / allowEveryoneIfNoAclFound
      Added value: +{
      +  "description": "allow.everyone.if.no.acl.found",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / authorizerClassName
      Added value: +{
      +  "description": "authorizer.class.name. ⚠️ Read-only in practice: the server accepts this, answers SUCCESS, and discards it (modifyYn=false)",
      +  "type": "string"
      +}
    • addedInput schema / properties / autoCreateTopicsEnable
      Added value: +{
      +  "description": "auto.create.topics.enable",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / configGroupNo / description
      Previous value: -"Config group number"New value: +"Config group number (from ncloud_cdss_list_config_groups)"
    • addedInput schema / properties / deleteTopicEnable
      Added value: +{
      +  "description": "delete.topic.enable",
      +  "type": "boolean"
      +}
    • removedInput schema / properties / kafkaConfig
      Removed value: -{
      -  "additionalProperties": {
      -    "type": "string"
      -  },
      -  "description": "Kafka config key-value pairs to change",
      -  "type": "object"
      -}
    • addedInput schema / properties / kafkaVersionCode
      Added value: +{
      +  "description": "Kafka version code of the group (from ncloud_cdss_get_kafka_versions)",
      +  "type": "number"
      +}
    • addedInput schema / properties / logCleanerEnable
      Added value: +{
      +  "description": "log.cleaner.enable",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / logCleanerThreads
      Added value: +{
      +  "description": "log.cleaner.threads",
      +  "type": "number"
      +}
    • addedInput schema / properties / logCleanupPolicy
      Added value: +{
      +  "description": "log.cleanup.policy (e.g. 'delete', 'compact')",
      +  "type": "string"
      +}
    • addedInput schema / properties / logFlushIntervalMessages
      Added value: +{
      +  "description": "log.flush.interval.messages",
      +  "type": "number"
      +}
    • addedInput schema / properties / logRetentionBytes
      Added value: +{
      +  "description": "log.retention.bytes (-1 for unlimited)",
      +  "type": "number"
      +}
    • addedInput schema / properties / logRetentionHours
      Added value: +{
      +  "description": "log.retention.hours (e.g. 168)",
      +  "type": "number"
      +}
    • addedInput schema / properties / logSegmentBytes
      Added value: +{
      +  "description": "log.segment.bytes (e.g. 1073741824)",
      +  "type": "number"
      +}
    • addedInput schema / properties / numIoThreads
      Added value: +{
      +  "description": "num.io.threads",
      +  "type": "number"
      +}
    • addedInput schema / properties / numNetworkThreads
      Added value: +{
      +  "description": "num.network.threads",
      +  "type": "number"
      +}
    • addedInput schema / properties / numPartitions
      Added value: +{
      +  "description": "num.partitions",
      +  "type": "number"
      +}
    • addedInput schema / properties / offsetsTopicReplicationFactor
      Added value: +{
      +  "description": "offsets.topic.replication.factor",
      +  "type": "number"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "configGroupNo",
      -  "kafkaConfig"
      -]New value: +[
      +  "configGroupNo",
      +  "kafkaVersionCode"
      +]
  2. First observedv1.10.1

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the idempotentHint=true and destructiveHint=false annotations, the description reveals critical behavioral traps: omitted settings silently revert to defaults, the API reports SUCCESS even when reverting, the server enforces bounds from `range`, and `modifyYn: false` settings are silently discarded rather than rejected. This is precisely the kind of non-obvious behavior that could cause data loss if undisclosed. No contradiction with the annotations is present (mutating config isn't the same as destroying the resource).

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

Conciseness5/5

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

The description is dense but contains zero filler — every sentence carries distinct, load-bearing information: replacement semantics, silent success, read-first instruction, parameter routing, bounds enforcement, silent-discard behavior, and the required apply step. The most critical warning (entire-config replacement) is front-loaded, and the two ⚠️ markers flag the highest-risk behaviors.

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 complex 18-parameter mutation tool with no output schema, the description covers every decision an agent needs to make correctly: which values to send (all of them), how to obtain them (from get_kafka_config), how to classify each setting (named vs additionalSettings), which settings won't take effect (modifyYn: false), and what post-step is required (apply_config_group). No critical usage information is missing.

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 parameters are individually documented, but the description adds genuinely useful structure: 'Named settings are typed parameters; anything without one goes in additionalSettings' explains how the 18 parameters route to the API. It also flags authorizerClassName as effectively read-only despite appearing settable, and explains how the read response's `range`/`modifyYn` fields relate to parameter validity. This exceeds the baseline for fully-covered schemas.

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?

The description opens with a specific verb-and-resource statement: 'Replaces the Config Group's ENTIRE custom configuration.' This precisely defines both what the tool does and the scope of its effect. It also names sibling tools (ncloud_cdss_get_kafka_config, ncloud_cdss_apply_config_group), so an agent can distinguish this mutation from related read/apply operations without opening their schemas.

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

Usage Guidelines5/5

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

The description gives an explicit read-before-write workflow: 'Read the current values with ncloud_cdss_get_kafka_config and send EVERY value you want to keep.' It also states the required follow-up action ('must be re-applied to a cluster with ncloud_cdss_apply_config_group for a change to take effect'), telling the agent exactly when this tool fits in a multi-step sequence and which siblings to use around it.

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