Metadata-Version: 2.4
Name: strimzi-kafka-cli
Version: 1.0.0b8
Summary: Command Line Interface for Strimzi Kafka Operator
Author-email: Aykut Bulgu <aykut@systemcraftsman.com>
License: Apache-2.0
Keywords: kafka,strimzi,cli,operator,kubernetes,k8s,openshift,apache-kafka
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX :: Linux
Classifier: Operating System :: POSIX
Classifier: Operating System :: Unix
Classifier: Operating System :: MacOS
Requires-Python: <3.15,>=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: click==8.0.4
Requires-Dist: pyyaml==6.0.1
Requires-Dist: wget==3.2
Requires-Dist: jproperties==2.1.1
Requires-Dist: kubernetes==28.1.0
Provides-Extra: mcp
Requires-Dist: fastmcp; extra == "mcp"
Provides-Extra: dev
Requires-Dist: twine; extra == "dev"
Requires-Dist: flake8; extra == "dev"
Requires-Dist: flake8-pyproject; extra == "dev"
Requires-Dist: pytest; extra == "dev"
Requires-Dist: wheel; extra == "dev"
Requires-Dist: build; extra == "dev"
Requires-Dist: isort; extra == "dev"
Requires-Dist: black; extra == "dev"
Requires-Dist: mypy; extra == "dev"
Requires-Dist: pre-commit<4; extra == "dev"
Requires-Dist: bandit; extra == "dev"
Requires-Dist: autoflake; extra == "dev"
Requires-Dist: fastmcp; extra == "dev"
Dynamic: license-file

![Build](https://github.com/systemcraftsman/strimzi-kafka-cli/workflows/Build/badge.svg) ![Deploy](https://github.com/systemcraftsman/strimzi-kafka-cli/workflows/Deploy/badge.svg) [![PyPI](https://img.shields.io/pypi/v/strimzi-kafka-cli)](https://pypi.org/project/strimzi-kafka-cli/) [![Downloads](https://static.pepy.tech/badge/strimzi-kafka-cli)](https://pepy.tech/project/strimzi-kafka-cli) [![License](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](http://www.apache.org/licenses/LICENSE-2.0) [![Strimzi](https://img.shields.io/badge/Strimzi-1.0.0-blue)](https://github.com/strimzi/strimzi-kafka-operator/releases/tag/1.0.0) [![MCP Server](https://badge.mcpx.dev?type=server&features=tools 'MCP Server')](https://github.com/systemcraftsman/strimzi-kafka-cli#mcp-server)

![Strimzi CLI logo](https://github.com/SystemCraftsman/strimzi-kafka-cli/assets/10568159/596ea147-9594-4262-a0c3-d63fa14f0577)

# Strimzi Kafka CLI

Strimzi Kafka CLI is a CLI that helps traditional Apache Kafka users -both developers and administrators- to easily adapt to [Strimzi](https://strimzi.io/),
a [Kubernetes operator](https://operatorhub.io/operator/strimzi-kafka-operator) for [Apache Kafka](https://kafka.apache.org/).

The main intention is to ramp up Strimzi usage by creating a similar CLI experience with the traditional Apache Kafka tools that mostly starts with `kafka-*` prefix under the `bin` directory in an ordinary Kafka package.

Strimzi Kafka CLI uses the `kfk` command as an abbreviation for "**K**afka **F**or **K**ubernetes" or simply "**k** a **f** **k** a" which reminds of the `kafka-*` prefix of the ordinary Kafka script file names.

While having similar set of commands or options for some of the common objects, Strimzi Kafka CLI has some extra capabilities for managing or configuring Strimzi related resources.

Following are the commands of the current version of Strimzi Kafka CLI, that are used for different purposes:

``` bash
Usage: kfk [OPTIONS] COMMAND [ARGS]...

  Strimzi Kafka CLI.

Options:
  --version  Show the version and exit.
  --help     Show this message and exit.

Commands:
  acls              Manages ACLs on Kafka.
  clusters          Creates, alters, deletes, describes Kafka cluster(s).
  configs           Adds/Removes entity config for a topic, client, user...
  connect           Manages Kafka Connect clusters, connectors, and MirrorMaker2.
    clusters          Creates, alters, deletes, describes KafkaConnect cluster(s).
    connectors        Creates, alters, deletes, describes KafkaConnector(s).
    mirror-maker      Lists, describes, creates, deletes KafkaMirrorMaker2(s).
  console-consumer  Reads data from Kafka topics and outputs it to...
  console-producer  Reads data from standard input and publish it to Kafka.
  mcp               Starts the Strimzi MCP server.
  node-pools        Lists, describes, creates, deletes KafkaNodePool(s).
  operator          Installs/Uninstalls Strimzi Kafka Operator.
  topics            Creates, alters, deletes, describes Kafka topic(s).
  users             Creates, alters, deletes, describes Kafka users(s).
```

Please take a look at the relevant article [Strimzi Kafka CLI: Managing Strimzi in a Kafka Native Way](https://www.systemcraftsman.com/2020/08/25/strimzi-kafka-cli-managing-strimzi-in-a-kafka-native-way/) for more details.

## Installation

### Using Python Package Installer

``` bash
pip install strimzi-kafka-cli --user
```

Or to install Strimzi Kafka CLI in an isolated environment, you can simply use [pipx](https://pypa.github.io/pipx/):

``` bash
pipx install strimzi-kafka-cli
```

To install with MCP server support:

``` bash
pip install strimzi-kafka-cli[mcp] --user
```

### Using Homebrew

``` bash
#Tap the homebrew repository first.
brew tap systemcraftsman/strimzi-kafka-cli

#Install Strimzi Kafka CLI
brew install strimzi-kafka-cli
```

> Installing the CLI by using Homebrew already uses a virtual environment, so you don't have to worry about your main Python environment.

Project requires: Python >=3.11

## Examples

* [TLS Authentication](https://github.com/systemcraftsman/strimzi-kafka-cli/tree/master/examples/2_tls_authentication)
* [Simple ACL Authorization](https://github.com/systemcraftsman/strimzi-kafka-cli/tree/master/examples/3_simple_acl_authorization)
* [Topic, User and Broker Configuration](https://github.com/systemcraftsman/strimzi-kafka-cli/tree/master/examples/4_configuration)
* [Kafka Connect](https://github.com/systemcraftsman/strimzi-kafka-cli/tree/master/examples/5_connect)

## MCP Server

Strimzi Kafka CLI includes an [MCP (Model Context Protocol)](https://modelcontextprotocol.io/) server that allows AI assistants to manage Strimzi Kafka deployments on Kubernetes.

### Starting the MCP Server

``` bash
kfk mcp
```

### Registering with Claude Code

``` bash
claude mcp add strimzi-kafka-cli -- kfk mcp
```

### Available Tools (38)

| Category | Tools |
|----------|-------|
| Kafka Clusters | `list_kafkas`, `get_kafka`, `get_kafka_status`, `create_kafka`, `delete_kafka`, `alter_kafka_config` |
| Topics | `list_topics`, `get_topic`, `create_topic`, `delete_topic`, `alter_topic` |
| Users | `list_users`, `get_user`, `create_user`, `delete_user`, `alter_user` |
| Connect Clusters | `list_connects`, `get_connect`, `create_connect`, `delete_connect`, `alter_connect` |
| Connectors | `list_connectors`, `get_connector`, `create_connector`, `delete_connector`, `alter_connector` |
| MirrorMaker2 | `list_mirror_maker_2s`, `get_mirror_maker_2`, `create_mirror_maker_2`, `delete_mirror_maker_2` |
| ACLs | `add_or_remove_acls` |
| Operator | `install_operator`, `uninstall_operator` |
| Node Pools | `list_node_pools`, `get_node_pool`, `create_node_pool`, `delete_node_pool` |
| Version | `get_version` |

## Dependencies
### Python Dependencies
Please see [pyproject.toml](https://github.com/SystemCraftsman/strimzi-kafka-cli/blob/main/pyproject.toml) file.
### External Dependencies
`Strimzi resources` are automatically downloaded when the first `kfk` command is run. Strimzi Kafka CLI uses the Python Kubernetes client to interact with the cluster directly. You can check the dependency versions with:

``` bash
kfk --version
```
