Skip to main content
Glama
OCI Kafka MCP Server

OCI Kafka MCP Server

OCI Kafka MCP Server

An AI-native control interface for OCI Streaming with Apache Kafka, built on the Model Context Protocol (MCP) specification.

This MCP server enables LLM agents (Claude, GPT, etc.) to securely manage Kafka clusters through structured tool execution — with built-in safety guardrails, audit logging, and enterprise-grade security.

Features

  • 42 structured tools for cluster, topic, consumer, observability, AI diagnostics, OCI metadata, cluster lifecycle, cluster configuration, and work request operations

  • Read-only by default — write tools require explicit --allow-writes flag

  • Policy guard — every tool is risk-classified (LOW/MEDIUM/HIGH); destructive operations require confirmation

  • AI diagnostic tools — orchestrate multiple Kafka operations to produce scaling recommendations and lag root cause analyses

  • Circuit breaker — prevents cascading failures when Kafka is unavailable

  • Structured audit logging — every tool execution logged as JSON with timestamp, input hash, and duration

  • SASL/SCRAM-SHA-512 + TLS — enterprise security from day one

  • Private networking — designed for OCI private endpoints

Related MCP server: Kafka MCP Server

Quick Start

Prerequisites

  • Python 3.11+

  • uv (recommended) or pip

Install

git clone <repo-url>
cd oci-kafka-mcp-server
uv sync

Run with local Kafka (development, Podman)

# Start a local Kafka broker
podman compose -f docker/docker-compose.yaml up -d

# Run the MCP server (read-only mode)
uv run oci-kafka-mcp

# Run with write tools enabled
uv run oci-kafka-mcp --allow-writes

# Stop local Kafka
podman compose -f docker/docker-compose.yaml down

Configure for OCI Streaming

You can configure OCI Kafka in either of these ways:

  1. Set environment variables up front (optional)

  2. Leave variables unset and let the MCP server request the required values at runtime, then call oci_kafka_configure_connection

If you want to pre-configure with environment variables:

export KAFKA_BOOTSTRAP_SERVERS="bootstrap-clstr-XXXXX.kafka.us-chicago-1.oci.oraclecloud.com:9092"
export KAFKA_SECURITY_PROTOCOL="SASL_SSL"
export KAFKA_SASL_MECHANISM="SCRAM-SHA-512"
export KAFKA_SASL_USERNAME="your-username"
export KAFKA_SASL_PASSWORD="your-password"
export KAFKA_SSL_CA_LOCATION="/path/to/ca.pem"

uv run oci-kafka-mcp

Or use the OCI template file:

cp .env.oci.example .env.oci
# edit .env.oci with your cluster values
source .env.oci
uv run oci-kafka-mcp

Note: KAFKA_* variables are not mandatory at server startup. If not set, tools will guide the agent/user to provide connection details and use oci_kafka_configure_connection before data-plane operations.

Use with an MCP Client

This server works with any MCP-compatible client. Oracle recommends Cline, Cursor, and MCPHost. See the Oracle MCP client configuration guide for details.

The env block below is optional — if omitted, the server will prompt the agent to call oci_kafka_configure_connection with your cluster details at runtime.

Cline (VS Code extension)

Add to your Cline MCP settings:

{
  "mcpServers": {
    "oci-kafka": {
      "type": "stdio",
      "command": "/path/to/oci-kafka-mcp-server/.venv/bin/oci-kafka-mcp",
      "args": ["--allow-writes"],
      "env": {
        "KAFKA_BOOTSTRAP_SERVERS": "your-bootstrap:9092",
        "KAFKA_SECURITY_PROTOCOL": "SASL_SSL",
        "KAFKA_SASL_MECHANISM": "SCRAM-SHA-512",
        "KAFKA_SASL_USERNAME": "your-username",
        "KAFKA_SASL_PASSWORD": "your-password"
      }
    }
  }
}

Cursor

Add to .cursor/mcp.json (project-level) or ~/.cursor/mcp.json (global):

{
  "mcpServers": {
    "oci-kafka": {
      "type": "stdio",
      "command": "/path/to/oci-kafka-mcp-server/.venv/bin/oci-kafka-mcp",
      "args": ["--allow-writes"],
      "env": {
        "KAFKA_BOOTSTRAP_SERVERS": "your-bootstrap:9092",
        "KAFKA_SECURITY_PROTOCOL": "SASL_SSL",
        "KAFKA_SASL_MECHANISM": "SCRAM-SHA-512",
        "KAFKA_SASL_USERNAME": "your-username",
        "KAFKA_SASL_PASSWORD": "your-password"
      }
    }
  }
}

MCPHost

Add to your MCPHost configuration file (e.g., ~/.mcphost.json):

{
  "mcpServers": {
    "oci-kafka": {
      "type": "stdio",
      "command": "/path/to/oci-kafka-mcp-server/.venv/bin/oci-kafka-mcp",
      "args": ["--allow-writes"],
      "env": {
        "KAFKA_BOOTSTRAP_SERVERS": "your-bootstrap:9092",
        "KAFKA_SECURITY_PROTOCOL": "SASL_SSL",
        "KAFKA_SASL_MECHANISM": "SCRAM-SHA-512",
        "KAFKA_SASL_USERNAME": "your-username",
        "KAFKA_SASL_PASSWORD": "your-password"
      }
    }
  }
}

Then start MCPHost with:

mcphost -m ollama:<model> --config ~/.mcphost.json

Available Tools (42)

Connection Management

Tool

Description

Risk

oci_kafka_configure_connection

Set or update Kafka cluster connection details at runtime (no restart needed)

LOW

oci_kafka_get_connection_info

Show current connection config with masked password

LOW

Cluster Operations

Tool

Description

Risk

oci_kafka_get_cluster_health

Broker status, controller ID, topic count

LOW

oci_kafka_get_cluster_config

Broker-level Kafka configuration settings

LOW

Topic Operations

Tool

Description

Risk

oci_kafka_list_topics

List all topics

LOW

oci_kafka_describe_topic

Partition details, leaders, replicas, ISR, topic config

LOW

oci_kafka_create_topic

Create a topic with partitions and replication factor

MEDIUM

oci_kafka_update_topic_config

Update topic configuration (retention, compaction, etc.)

MEDIUM

oci_kafka_delete_topic

Delete a topic (requires confirmation)

HIGH

Consumer Operations

Tool

Description

Risk

oci_kafka_list_consumer_groups

List all consumer groups

LOW

oci_kafka_describe_consumer_group

Group state, members, coordinator, partition assignments

LOW

oci_kafka_get_consumer_lag

Per-partition lag, committed offsets, end offsets

LOW

oci_kafka_reset_consumer_offset

Reset offsets to earliest/latest/specific offset (requires confirmation)

HIGH

oci_kafka_delete_consumer_group

Delete a consumer group (requires confirmation)

HIGH

Observability

Tool

Description

Risk

oci_kafka_get_partition_skew

Detect partition leader imbalance across brokers

LOW

oci_kafka_detect_under_replicated_partitions

Find partitions where ISR count < replica count

LOW

AI Diagnostics

Tool

Description

Risk

oci_kafka_recommend_scaling

Orchestrates health, skew, and replication data into scaling recommendations

LOW

oci_kafka_analyze_lag_root_cause

Correlates consumer state, lag, and topology into root cause analysis

LOW

OCI Control Plane Metadata

Tool

Description

Risk

oci_kafka_list_oci_clusters

List all Kafka clusters in an OCI compartment (auto-discovers compartment)

LOW

oci_kafka_get_oci_cluster_info

Cluster OCID, lifecycle state, broker shape, bootstrap URLs, tags

LOW

Cluster Lifecycle (OCI Control Plane)

Async operations — returns a work request OCID; use oci_kafka_get_work_request to poll for completion.

Tool

Description

Risk

oci_kafka_create_cluster

Provision a new OCI Kafka cluster (requires confirmation)

HIGH

oci_kafka_update_cluster

Update cluster display name, tags, or applied configuration

MEDIUM

oci_kafka_scale_cluster

Scale broker count for an existing cluster (requires confirmation)

HIGH

oci_kafka_delete_cluster

Permanently delete a cluster and all its data (requires confirmation)

HIGH

oci_kafka_change_cluster_compartment

Move a cluster to a different OCI compartment (requires confirmation)

HIGH

oci_kafka_enable_superuser

Grant full administrative access to the cluster's superuser

MEDIUM

oci_kafka_disable_superuser

Revoke superuser access to restore least-privilege

MEDIUM

Cluster Configuration (OCI Control Plane)

Named, versioned sets of Kafka broker settings that can be applied to one or more clusters.

Tool

Description

Risk

oci_kafka_list_cluster_configs

List all cluster configurations in a compartment

LOW

oci_kafka_get_oci_cluster_config

Get a cluster configuration and its latest version

LOW

oci_kafka_create_cluster_config

Create a new named cluster configuration

MEDIUM

oci_kafka_update_cluster_config

Update a config's display name or tags

MEDIUM

oci_kafka_delete_cluster_config

Delete a configuration and all its versions (requires confirmation)

HIGH

oci_kafka_change_cluster_config_compartment

Move a configuration to a different compartment

MEDIUM

oci_kafka_list_cluster_config_versions

List all versions of a cluster configuration

LOW

oci_kafka_get_cluster_config_version

Get a specific version of a cluster configuration

LOW

oci_kafka_delete_cluster_config_version

Delete a specific configuration version

MEDIUM

Work Requests & Node Shapes (OCI Control Plane)

Track asynchronous OCI operations returned by cluster lifecycle and configuration tools.

Tool

Description

Risk

oci_kafka_get_work_request

Poll status and progress of an async OCI operation

LOW

oci_kafka_list_work_requests

List work requests by compartment or resource OCID

LOW

oci_kafka_get_work_request_errors

Get error details from a failed work request

LOW

oci_kafka_get_work_request_logs

Get timestamped log entries from a work request

LOW

oci_kafka_cancel_work_request

Cancel an in-progress work request

MEDIUM

oci_kafka_list_node_shapes

List available broker node shapes for cluster provisioning

LOW

Safety Model

Risk Level

Behavior

Examples

LOW

Always allowed

Health checks, list/describe operations

MEDIUM

Requires --allow-writes

Create topic, update config

HIGH

Requires --allow-writes + confirmation

Delete topic, reset offsets, cluster lifecycle

Development

# Run tests (92 tests, all unit — no Kafka broker needed)
uv run pytest

# Run tests with coverage
uv run pytest --cov=oci_kafka_mcp --cov-report=term-missing

# Lint
uv run ruff check src/ tests/

# Format
uv run ruff format src/ tests/

# Type check
uv run mypy src/

Architecture

See docs/ARCHITECTURE.md for the full security architecture document, including threat model, dependency audit, and deployment architecture.

License

Apache-2.0

Available Tools

42 tools
oci_kafka_analyze_lag_root_causeA

Analyze consumer lag and identify potential root causes.

Collects consumer group state, per-partition lag, topic partition details, and cluster health to diagnose why a consumer group may be falling behind.

This tool gathers data only — the LLM agent should interpret the findings and present a root cause analysis to the user.

Args: group_id: The consumer group ID to analyze.

Returns a diagnostic report with:

  • Consumer group state and member count

  • Per-partition lag breakdown with severity classification

  • Topic health (partition count, replication status)

  • Cluster health context (broker count, controller status)

  • Potential root causes ranked by likelihood

Inputs: group_id (required). Returns: result

oci_kafka_cancel_work_requestA

Cancel an in-progress OCI work request.

Requires --allow-writes. Only in-progress requests can be cancelled. Already-completed or failed requests cannot be cancelled.

Args: work_request_id: Work request OCID to cancel.

Inputs: work_request_id (required). Returns: result

oci_kafka_change_cluster_compartmentA

Move an OCI Kafka cluster to a different OCI compartment.

Requires --allow-writes. This is a HIGH RISK operation that requires confirmation. Moving a cluster changes which IAM policies and users can access it.

Args: cluster_id: OCI Kafka cluster OCID to move. target_compartment_id: Target OCI compartment OCID.

Inputs: cluster_id (required), target_compartment_id (required). Returns: result

oci_kafka_change_cluster_config_compartmentA

Move an OCI Kafka cluster configuration to a different compartment.

Requires --allow-writes. Moving a config changes which IAM policies and users can access it.

Args: cluster_config_id: OCI cluster config OCID to move. target_compartment_id: Target OCI compartment OCID.

Inputs: cluster_config_id (required), target_compartment_id (required). Returns: result

oci_kafka_configure_connectionA

Configure or update the Kafka cluster connection details at runtime.

Use this tool when:

  • No Kafka cluster is configured yet and other tools return a 'not configured' error.

  • The user wants to switch to a different Kafka cluster.

  • The user provides new credentials or bootstrap servers.

The new connection takes effect immediately — no server restart required. All existing clients are reset and will reconnect on the next tool call.

Args: bootstrap_servers: Kafka broker address(es), e.g. 'bootstrap-clstr-XXXXX.kafka.us-chicago-1.oci.oraclecloud.com:9092' security_protocol: PLAINTEXT, SSL, SASL_PLAINTEXT, or SASL_SSL (default: SASL_SSL) sasl_mechanism: SCRAM-SHA-512, SCRAM-SHA-256, or PLAIN (required for SASL_*) sasl_username: SASL username (required for SASL_*) sasl_password: SASL password (required for SASL_*) ssl_ca_location: Path to CA certificate bundle for TLS verification. If not set and security_protocol is SASL_SSL or SSL, the system default CA bundle is used. persist: If True, save the connection details to ~/.oci/kafka-mcp-connection.env so they survive server restarts. Load them with: source ~/.oci/kafka-mcp-connection.env

Inputs: bootstrap_servers (required), persist, sasl_password, sasl_username, +3 more. Returns: result

oci_kafka_create_clusterA

Create a new OCI Streaming with Apache Kafka cluster.

Requires --allow-writes. This is a HIGH RISK operation that requires confirmation. The operation is asynchronous — use oci_kafka_get_work_request to track progress.

Args: display_name: Human-readable name for the cluster. compartment_id: OCI compartment OCID where the cluster will be created. subnet_id: OCI subnet OCID for the cluster's private network. broker_count: Number of broker nodes (default: 3). kafka_version: Kafka version to deploy (default: 3.6.0). cluster_type: PRODUCTION or DEVELOPMENT (default: PRODUCTION). ocpu_count: OCPUs per broker node (default: 2). storage_size_in_gbs: Storage per broker in GB (default: 50). cluster_config_id: Optional OCID of a cluster configuration to apply.

Inputs: subnet_id (required), display_name (required), compartment_id (required), ocpu_count, +5 more. Returns: result

oci_kafka_create_cluster_configA

Create a new OCI Kafka cluster configuration.

Requires --allow-writes. A cluster configuration is a named, versioned container for Kafka broker settings. After creation, use oci_kafka_update_cluster to apply it to a cluster.

Args: display_name: Human-readable name for the configuration. compartment_id: OCI compartment OCID where the config will live. freeform_tags: Optional free-form string key-value tags.

Inputs: display_name (required), compartment_id (required), freeform_tags. Returns: result

oci_kafka_create_topicA

Create a new Kafka topic.

Requires --allow-writes to be enabled.

Args: topic_name: Name for the new topic. num_partitions: Number of partitions (default: 6). replication_factor: Replication factor (default: 3).

Returns the creation status and topic details.

Inputs: topic_name (required), num_partitions, replication_factor. Returns: result

oci_kafka_delete_clusterA

Delete an OCI Kafka cluster permanently.

Requires --allow-writes. This is a HIGH RISK operation that requires confirmation. The operation is asynchronous — use oci_kafka_get_work_request to track progress. ALL DATA ON THE CLUSTER WILL BE PERMANENTLY LOST.

Args: cluster_id: OCI Kafka cluster OCID to delete (ocid1.kafkacluster.*).

Inputs: cluster_id (required). Returns: result

oci_kafka_delete_cluster_configA

Delete an OCI Kafka cluster configuration permanently.

Requires --allow-writes. This is a HIGH RISK operation that requires confirmation. All versions of the configuration will be deleted. Clusters referencing this config should be updated before deletion.

Args: cluster_config_id: OCI cluster config OCID to delete (ocid1.kafkaclusterconfig.*).

Inputs: cluster_config_id (required). Returns: result

oci_kafka_delete_cluster_config_versionA

Delete a specific version of an OCI Kafka cluster configuration.

Requires --allow-writes. Deleting a version is irreversible. Do not delete a version that is currently applied to a cluster.

Args: cluster_config_id: OCI cluster config OCID (ocid1.kafkaclusterconfig.*). version_number: The integer version number to delete.

Inputs: version_number (required), cluster_config_id (required). Returns: result

oci_kafka_delete_consumer_groupA

Delete a consumer group. THIS IS A DESTRUCTIVE OPERATION.

The consumer group must have no active members (EMPTY state). Requires --allow-writes to be enabled. This is a HIGH RISK operation that requires confirmation.

Args: group_id: The consumer group ID to delete.

Returns the deletion status.

Inputs: group_id (required). Returns: result

oci_kafka_delete_topicA

Delete a Kafka topic. THIS IS A DESTRUCTIVE OPERATION.

Requires --allow-writes to be enabled. This is a HIGH RISK operation that requires confirmation.

Args: topic_name: Name of the topic to delete.

Returns the deletion status.

Inputs: topic_name (required). Returns: result

oci_kafka_describe_consumer_groupA

Get detailed information about a consumer group.

Args: group_id: The consumer group ID to describe.

Returns the group state, coordinator, partition assignor, and member details including their topic-partition assignments.

Inputs: group_id (required). Returns: result

oci_kafka_describe_topicA

Get detailed information about a specific Kafka topic.

Args: topic_name: Name of the topic to describe.

Returns partition details (leader, replicas, ISR), and non-default configuration settings. Use this to inspect a topic's health and config.

Inputs: topic_name (required). Returns: result

oci_kafka_detect_under_replicated_partitionsA

Detect partitions where the in-sync replica (ISR) count is less than the replica count.

Under-replicated partitions indicate potential data durability risks. This can be caused by broker failures, network issues, or disk problems.

Returns the total partition count, under-replicated count, and details of each affected partition including which replicas are missing from ISR.

Inputs: no named parameters. Returns: result

oci_kafka_disable_superuserA

Disable the superuser for an OCI Kafka cluster.

Requires --allow-writes. Use this after completing administrative tasks to restore least-privilege access.

Args: cluster_id: OCI Kafka cluster OCID.

Inputs: cluster_id (required). Returns: result

oci_kafka_enable_superuserA

Enable the superuser for an OCI Kafka cluster.

Requires --allow-writes. The superuser has full administrative access to all Kafka resources. Use sparingly and with a time limit.

Args: cluster_id: OCI Kafka cluster OCID. duration_in_hours: Optional duration (hours) to keep superuser enabled. If not set, superuser stays enabled until explicitly disabled.

Inputs: cluster_id (required), duration_in_hours. Returns: result

oci_kafka_get_cluster_configA

Get Kafka cluster configuration settings.

Returns broker-level configuration including log settings, replication defaults, and other cluster parameters. Use this to inspect current cluster settings.

Inputs: no named parameters. Returns: result

oci_kafka_get_cluster_config_versionA

Get a specific version of an OCI Kafka cluster configuration.

Args: cluster_config_id: OCI cluster config OCID (ocid1.kafkaclusterconfig.*). version_number: The integer version number to retrieve.

Inputs: version_number (required), cluster_config_id (required). Returns: result

oci_kafka_get_cluster_healthA

Get Kafka cluster health status including broker list, controller info, and topic count.

Returns cluster ID, controller ID, broker count and details, and total topic count. Use this to verify cluster connectivity and check overall cluster health.

Inputs: no named parameters. Returns: result

oci_kafka_get_connection_infoA

Show the current Kafka connection configuration.

Returns connection details with the password masked. Use this to:

  • Check whether a cluster is already configured before calling other tools.

  • Verify which cluster the server is connected to.

  • Confirm security settings before troubleshooting connectivity issues.

If 'configured' is false, call oci_kafka_configure_connection first.

Inputs: no named parameters. Returns: result

oci_kafka_get_consumer_lagA

Get consumer lag for a consumer group across all assigned partitions.

Args: group_id: The consumer group ID to check lag for.

Returns total lag, and per-partition details including committed offset, end offset, and lag. Use this to diagnose slow consumers or processing bottlenecks.

Inputs: group_id (required). Returns: result

oci_kafka_get_oci_cluster_configA

Get detailed information about an OCI Kafka cluster configuration.

Returns the config metadata and its latest version. Use oci_kafka_list_cluster_config_versions to see all versions.

Args: cluster_config_id: OCI cluster config OCID (ocid1.kafkaclusterconfig.*).

Inputs: cluster_config_id (required). Returns: result

oci_kafka_get_oci_cluster_infoA

Get OCI control plane metadata for a Kafka cluster.

Returns the cluster OCID, display name, lifecycle state, Kafka version, broker shape (node count, OCPUs, storage), bootstrap URLs, compartment, and tags.

Args: cluster_id: OCI Kafka cluster OCID (ocid1.kafkacluster.*). Defaults to OCI_CLUSTER_ID environment variable if not provided.

Use this to answer questions like "What is the cluster OCID?", "What is the cluster name?", or "What state is the cluster in?".

If you don't have a cluster_id, first call oci_kafka_list_oci_clusters to discover available clusters and their OCIDs, or ask the user to provide the cluster OCID.

Inputs: cluster_id. Returns: result

oci_kafka_get_partition_skewA

Detect partition imbalance across brokers.

Checks if partitions are evenly distributed across brokers (as leaders). A skew ratio > 1.5 indicates significant imbalance that may cause performance degradation.

Args: topic_name: Optional topic to check. If not provided, checks all topics.

Returns skew ratio, per-broker partition counts, and a recommendation.

Inputs: topic_name. Returns: result

oci_kafka_get_work_requestA

Get the status and details of an asynchronous OCI work request.

Use this after any async operation (create/update/delete cluster, enable superuser, etc.) to track progress. Poll until status is SUCCEEDED or FAILED.

Args: work_request_id: Work request OCID returned by the triggering operation.

Inputs: work_request_id (required). Returns: result

oci_kafka_get_work_request_errorsA

Get error details from a failed OCI work request.

Call this when oci_kafka_get_work_request shows status FAILED to get the specific error codes and messages explaining the failure.

Args: work_request_id: Work request OCID that failed.

Inputs: work_request_id (required). Returns: result

oci_kafka_get_work_request_logsA

Get log entries from an OCI work request.

Returns timestamped log messages from the work request execution. Useful for understanding the sequence of steps in a long-running operation.

Args: work_request_id: Work request OCID to retrieve logs for.

Inputs: work_request_id (required). Returns: result

oci_kafka_list_cluster_configsA

List OCI Kafka cluster configurations in a compartment.

If compartment_id is not provided, falls back to the OCI_COMPARTMENT_ID environment variable or the tenancy OCID from ~/.oci/config.

Args: compartment_id: OCI compartment OCID to search. If omitted, uses the tenancy OCID from the OCI config file as the default scope.

Inputs: compartment_id. Returns: result

oci_kafka_list_cluster_config_versionsA

List all versions of an OCI Kafka cluster configuration.

Configurations are versioned — each update creates a new version. Use this to see the version history and identify which version to apply or roll back to.

Args: cluster_config_id: OCI cluster config OCID (ocid1.kafkaclusterconfig.*).

Inputs: cluster_config_id (required). Returns: result

oci_kafka_list_consumer_groupsA

List all consumer groups in the Kafka cluster.

Returns the total group count and a list of consumer groups with their state and type information.

Inputs: no named parameters. Returns: result

oci_kafka_list_node_shapesA

List available broker node shapes for OCI Kafka cluster provisioning.

Returns available shapes with their OCPU and memory specs. Use this before oci_kafka_create_cluster to choose an appropriate broker shape.

Args: compartment_id: Optional OCI compartment OCID to scope the shape list.

Inputs: compartment_id. Returns: result

oci_kafka_list_oci_clustersA

List all Kafka clusters in an OCI compartment.

Returns the count of clusters and a list with each cluster's OCID, display name, lifecycle state, Kafka version, broker shape, and creation time.

Args: compartment_id: OCI compartment OCID. Defaults to OCI_COMPARTMENT_ID env var, then to the tenancy OCID from the OCI config file (~/.oci/config).

Use this to discover available clusters, check their lifecycle states, or find a cluster OCID before calling oci_kafka_get_oci_cluster_info.

If no compartment_id is provided, the tool automatically uses the tenancy OCID from the OCI config file as the default compartment.

Inputs: compartment_id. Returns: result

oci_kafka_list_topicsA

List all topics in the Kafka cluster.

Returns the total topic count and a list of topics with their partition counts. Use this to get an overview of all topics in the cluster.

Inputs: no named parameters. Returns: result

oci_kafka_list_work_requestsA

List OCI work requests, optionally filtered by compartment or resource.

Use resource_id to find all operations on a specific cluster or config. If neither filter is provided, uses the tenancy OCID from ~/.oci/config.

Args: compartment_id: OCI compartment OCID to filter work requests. resource_id: OCI resource OCID to find operations affecting that resource (e.g., a cluster OCID to see all work requests for that cluster).

Inputs: resource_id, compartment_id. Returns: result

oci_kafka_recommend_scalingA

Analyze the cluster and recommend scaling actions.

Collects broker count, topic/partition distribution, replication health, and partition skew to produce a structured scaling recommendation.

This tool gathers data only — the LLM agent should interpret the findings and present human-readable recommendations to the user.

Returns a diagnostic report with:

  • Current cluster capacity (brokers, partitions, topics)

  • Partition distribution analysis (skew ratio per broker)

  • Replication health (under-replicated partitions)

  • Broker utilization metrics (leader partitions and replica load)

  • Specific scaling recommendations with severity levels

Inputs: no named parameters. Returns: result

oci_kafka_reset_consumer_offsetA

Reset consumer group offsets for a topic. THIS IS A DESTRUCTIVE OPERATION.

The consumer group must have no active members (EMPTY state). Requires --allow-writes to be enabled. This is a HIGH RISK operation that requires confirmation.

Args: group_id: The consumer group ID to reset offsets for. topic_name: The topic to reset offsets for. strategy: Reset strategy — 'earliest' (beginning), 'latest' (end), or a specific integer offset. partition: Optional specific partition number. If omitted, resets all partitions.

Returns the reset status and new offset positions for each partition.

Inputs: group_id (required), topic_name (required), strategy, partition. Returns: result

oci_kafka_scale_clusterA

Scale an OCI Kafka cluster to a different broker count.

Requires --allow-writes. This is a HIGH RISK operation that requires confirmation. The operation is asynchronous — use oci_kafka_get_work_request to track progress.

Args: cluster_id: OCI Kafka cluster OCID to scale. broker_count: Target number of broker nodes.

Inputs: cluster_id (required), broker_count (required). Returns: result

oci_kafka_update_clusterA

Update an OCI Kafka cluster's display name, tags, or applied configuration.

Requires --allow-writes. The operation is asynchronous — use oci_kafka_get_work_request to track progress.

Args: cluster_id: OCI Kafka cluster OCID (ocid1.kafkacluster.*). display_name: New display name for the cluster. cluster_config_id: OCID of the cluster configuration to apply. cluster_config_version: Specific version number of the config to apply. freeform_tags: Free-form tags as a dict of string key-value pairs.

Inputs: cluster_id (required), display_name, freeform_tags, cluster_config_id, +1 more. Returns: result

oci_kafka_update_cluster_configA

Update an OCI Kafka cluster configuration's name or tags.

Requires --allow-writes. Updating metadata does not create a new version. The operation is asynchronous — use oci_kafka_get_work_request to track it.

Args: cluster_config_id: OCI cluster config OCID (ocid1.kafkaclusterconfig.*). display_name: New display name for the configuration. freeform_tags: Updated free-form string key-value tags.

Inputs: cluster_config_id (required), display_name, freeform_tags. Returns: result

oci_kafka_update_topic_configA

Update configuration settings for a Kafka topic.

Requires --allow-writes to be enabled.

Args: topic_name: Name of the topic to update. configs: Dictionary of config key-value pairs to set (e.g., {"retention.ms": "604800000", "cleanup.policy": "compact"}).

Returns the update status and the configs that were changed.

Inputs: configs (required), topic_name (required). Returns: result

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4.1/5.0

    Scored across 42 tools

    Disambiguation5/5

    All 42 tools have clearly distinct purposes, with no overlap. For example, oci_kafka_list_topics vs oci_kafka_describe_topic vs oci_kafka_create_topic are unambiguously different operations.

    Naming Consistency5/5

    Every tool follows the consistent pattern oci_kafka_<verb>_<noun>. Verbs are standard (create, delete, get, list, update, etc.) and reflect the action performed. No mixing of conventions.

    Tool Count4/5

    42 tools is on the high side but justified by the domain complexity, covering cluster lifecycle, configuration, topics, consumer groups, work requests, and diagnostics. A few tools (e.g., get_cluster_health vs recommend_scaling) overlap slightly, but overall the count is reasonable.

    Completeness4/5

    The toolset provides solid coverage for OCI Kafka management, including CRUD operations, configuration versioning, diagnostics, and work request tracking. Notable gaps include no ACL or user management, but core workflows are covered.

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      Not graded
      quality
      D
      maintenance
      Enables AI assistants to manage and monitor Apache Kafka clusters through natural language, providing real-time operations, health monitoring, consumer lag analysis, and temporal trend detection for intelligent cluster management.
      -
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables AI agents to interact with Apache Kafka through natural language, supporting operations like producing/consuming messages, managing topics, and querying brokers, partitions, and consumer group offsets.
      1
      MIT
    • A
      license
      Not graded
      quality
      A
      maintenance
      An MCP server that enables AI assistants to safely interact with Apache Kafka clusters, providing tools for topic management, message operations, consumer groups, and cluster information.
      3
      MIT
    • A
      license
      C
      quality
      D
      maintenance
      An MCP server that exposes Oracle Cloud Infrastructure (OCI) control plane to LLM clients, enabling management of compute, networking, storage, databases, and more through natural language.
      55
      1
      Apache 2.0