关于 kafka-mcp-server
kafka-mcp-server 将 MCP 客户端连接到 Apache Kafka 集群,以便通过自然语言交互。它支持主题和消息操作、集群信息查看及消费者组信息查询。
主要功能
- 01列出和创建主题
- 02消费和生产消息
- 03查看代理与控制器信息
- 04列出消费者组及延迟
- 05读取最早和最新偏移量
- 06批量执行顺序工具调用
适用场景
- 01查看 Kafka 集群中的主题
- 02生产或消费 Kafka 消息
- 03检查消费者组延迟
- 04在单个请求中执行有依赖的工具调用
MCP 相关
该服务通过 MCP 工具提供 Kafka 集群操作。可选的 MultiplexTool 能按顺序批量调用工具,并利用先前输出确定后续输入。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
docker run -i --rm -e KAFKA_MCP_BOOTSTRAP_SERVERS ghcr.io/cefboud/kafka-mcp-serverKAFKA_MCP_BOOTSTRAP_SERVERS本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
ghcr.io/cefboud/kafka-mcp-serverstdio工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Kafka MCP 服务
Kafka MCP 服务是一个 模型上下文协议(MCP) 服务,提供与 Apache Kafka 的集成,以便使用自然语言(大模型)与 Kafka 集群交互。
前提条件
你需要 Docker 或 Golang,才能在本地运行 MCP 服务。
开始使用
你需要能够访问 Kafka 集群。请按照快速入门文档操作:
docker pull apache/kafka:4.0.0
docker run -p 9092:9092 apache/kafka:4.0.0
现在可以通过 localhost:9092 访问 Kafka。
在 Claude Desktop 中使用
Docker:
{
"mcpServers": {
"kafka": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"KAFKA_MCP_BOOTSTRAP_SERVERS",
"ghcr.io/cefboud/kafka-mcp-server"
],
"env": {
"KAFKA_MCP_BOOTSTRAP_SERVERS": "localhost:9092"
}
}
}
}
在本地构建
cd <workdir>
git clone https://github.com/CefBoud/kafka-mcp-server.git
cd kafka-mcp-server
go build -o kafka-mcp-server cmd/kafka-mcp-server/main.go
{
"mcpServers": {
"kafka": {
"command": "<workdir>/kafka-mcp-server/kafka-mcp-server",
"args": [
"stdio",
],
"env": {
"KAFKA_MCP_BOOTSTRAP_SERVERS": "localhost:9092"
}
}
}
}
选项:
--bootstrap-servers string Comma-separated list of the Kafka servers to connect to.
--enable-command-logging When enabled, the server will log all command requests and responses to the log file
--log-file string Path to log file
--read-only Restrict the server to read-only operations
所有选项都可以作为环境变量传入:将选项名称转换为大写,将连字符替换为下划线,并添加前缀 MCP_KAFKA_。例如,--bootstrap-servers 会转换为 MCP_KAFKA_BOOTSTRAP_SERVERS。
可用的 MCP 工具
- 列出主题
- 创建主题
- 消费消息。
- 生成消息。
- 描述集群(代理和控制器列表)
- 列出使用者组及其滞后量。
- 获取主题最早和最新的偏移量(GetOffsetShell)
- 重置使用者组偏移量。
- Kafka Connect ??
- Schema Registry ??
🔀 MultiplexTool
连续运行多个工具,尤其是每个工具都依赖前一个工具的输出时,可能会很繁琐且耗时。这需要客户端和服务器之间进行多次往返。
MultiplexTool 允许客户端将多个工具调用批量合并为一个请求,并按顺序执行,从而解决这一问题。它还支持工具之间的动态依赖,方法是使用基于提示词的占位符引用先前的输出。
如果某个工具输入依赖于先前的结果,客户端会使用 PROMPT_ARGUMENT: 格式,通过向大模型发送提示词来动态生成该输入(目前仅支持 Gemini)。
示例:
"userId": "PROMPT_ARGUMENT: the ID of the created user"
命令行标志:
--enable-multiplex:启用工具调用复用。--multiplex-model:指定用于推断PROMPT_ARGUMENT的模型(例如gemini)。需要设置GEMINI_API_KEY环境变量。
{
"mcpServers": {
"kafka": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"KAFKA_MCP_BOOTSTRAP_SERVERS",
"ghcr.io/cefboud/kafka-mcp-server",
"--enable-multiplex",
"--multiplex-model",
"gemini"
],
"env": {
"KAFKA_MCP_BOOTSTRAP_SERVERS": "localhost:9092",
"GEMINI_API_KEY": "....."
}
}
}
}
致谢
- github.com/github/github-mcp-server
- github.com/mark3labs/mcp-go
- github.com/IBM/sarama
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。