OCI Kafka MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@OCI Kafka MCP Server list all topics in the Kafka cluster"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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-writesflagPolicy 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 syncRun 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 downConfigure for OCI Streaming
You can configure OCI Kafka in either of these ways:
Set environment variables up front (optional)
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-mcpOr 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-mcpNote:
KAFKA_*variables are not mandatory at server startup. If not set, tools will guide the agent/user to provide connection details and useoci_kafka_configure_connectionbefore 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.jsonAvailable Tools (42)
Connection Management
Tool | Description | Risk |
| Set or update Kafka cluster connection details at runtime (no restart needed) | LOW |
| Show current connection config with masked password | LOW |
Cluster Operations
Tool | Description | Risk |
| Broker status, controller ID, topic count | LOW |
| Broker-level Kafka configuration settings | LOW |
Topic Operations
Tool | Description | Risk |
| List all topics | LOW |
| Partition details, leaders, replicas, ISR, topic config | LOW |
| Create a topic with partitions and replication factor | MEDIUM |
| Update topic configuration (retention, compaction, etc.) | MEDIUM |
| Delete a topic (requires confirmation) | HIGH |
Consumer Operations
Tool | Description | Risk |
| List all consumer groups | LOW |
| Group state, members, coordinator, partition assignments | LOW |
| Per-partition lag, committed offsets, end offsets | LOW |
| Reset offsets to earliest/latest/specific offset (requires confirmation) | HIGH |
| Delete a consumer group (requires confirmation) | HIGH |
Observability
Tool | Description | Risk |
| Detect partition leader imbalance across brokers | LOW |
| Find partitions where ISR count < replica count | LOW |
AI Diagnostics
Tool | Description | Risk |
| Orchestrates health, skew, and replication data into scaling recommendations | LOW |
| Correlates consumer state, lag, and topology into root cause analysis | LOW |
OCI Control Plane Metadata
Tool | Description | Risk |
| List all Kafka clusters in an OCI compartment (auto-discovers compartment) | LOW |
| 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 |
| Provision a new OCI Kafka cluster (requires confirmation) | HIGH |
| Update cluster display name, tags, or applied configuration | MEDIUM |
| Scale broker count for an existing cluster (requires confirmation) | HIGH |
| Permanently delete a cluster and all its data (requires confirmation) | HIGH |
| Move a cluster to a different OCI compartment (requires confirmation) | HIGH |
| Grant full administrative access to the cluster's superuser | MEDIUM |
| 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 |
| List all cluster configurations in a compartment | LOW |
| Get a cluster configuration and its latest version | LOW |
| Create a new named cluster configuration | MEDIUM |
| Update a config's display name or tags | MEDIUM |
| Delete a configuration and all its versions (requires confirmation) | HIGH |
| Move a configuration to a different compartment | MEDIUM |
| List all versions of a cluster configuration | LOW |
| Get a specific version of a cluster configuration | LOW |
| 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 |
| Poll status and progress of an async OCI operation | LOW |
| List work requests by compartment or resource OCID | LOW |
| Get error details from a failed work request | LOW |
| Get timestamped log entries from a work request | LOW |
| Cancel an in-progress work request | MEDIUM |
| 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 | Create topic, update config |
HIGH | Requires | 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 toolsoci_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
Scored across 42 tools
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.
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.
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.
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
Autonomous and governed SRE & MLOps control plane for AI agent platforms.
Credential broker for AI agents: scoped, revocable API access with policy enforcement and audit.
MCP-Native LLM Orchestration Agent
Context and control for any AI. Agent identity, scoped access, and proof across tools.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables 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.-
- AlicenseNot gradedqualityDmaintenanceEnables 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.1MIT
- AlicenseNot gradedqualityAmaintenanceAn 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.3MIT
- AlicenseCqualityDmaintenanceAn 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.551Apache 2.0