Kafka到Redis数据摄取服务

该项目是一个模型上下文协议(MCP)服务器,将从Kafka主题摄取的数据存储到Redis中,并通过FastMCP API为AI代理提供查询功能。

  • by RichardDally
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 RichardDally/mcp-kafka

使用说明

卡夫卡历史

带有FastMCP API的Kafka-to-Redis Ingestor

该项目演示了一个模型上下文协议(MCP)服务器,该服务器将从Kafka主题获取的数据暴露到Redis中。消息使用Avro序列化并存储在本地模式注册表中。

建筑

  1. Kafka集群: 本地Kafka代理+模式注册表(通过Docker Compose运行)。
  2. Redis: 用于聚合消息指标的内存数据存储(通过Docker Compose运行)。
  3. 英格斯托(mcp_kafka/kafka_to_redis.py): 使用来自Kafka的消息,反序列化Avro有效载荷,并在Redis中聚合计数。
  4. FastMCP API(mcp_kafka/mcp_server.py): 提供MCP工具(get_usage_metrics, count_action)以便AI代理查询聚合数据。

先决条件

  • Docker和Docker Compose
  • Python 3.14+
  • uv (建议用于依赖关系管理)

设置

  1. 启动基础设施 启动Kafka、模式注册表、Kafka UI、Redis和RedisInsight:

    docker-compose up -d
    
    • Kafka用户界面: 通过以下方式访问 http://localhost:8080
    • RedisInsight用户界面: 通过以下方式访问 http://localhost:8001
      • 要将RedisInsight连接到数据存储,请单击“添加Redis数据库”并使用 redis 作为主持人和 6379 作为端口。停止/将用户名和密码留空。
  2. 再进行 如果你有 uv 安装:

    uv sync
    

    否则,使用 pip:

    pip install .
    
  3. 准备主题和模式 您可以轻松创建主题,注册模式,并可选地向其提供虚拟数据:

    uv run mcp-kafka create-topic my-history
    uv run mcp-kafka schema
    uv run mcp-kafka feed my-history
    
  4. 运行Ingestor 启动Kafka消费者来处理消息:

    uv run mcp-kafka ingest
    
  5. 运行MCP服务器 启动FastMCP API,通过stdio将数据暴露给外部工具(AI代理):

    uv run mcp-kafka start-server
    
  6. 使用MCP检查器(GUI)进行测试 如果你想在浏览器中手动测试和查看你的MCP工具,你可以使用官方的MCP检查器:

    npx -y @modelcontextprotocol/inspector uv run mcp-kafka start-server
    

    注意:如果您在Windows上使用PowerShell npx 如果被阻止,您可以运行:

    cmd.exe /c npx -y @modelcontextprotocol/inspector uv run mcp-kafka start-server
    

    然后打开 http://localhost:5173

配置

设置通过中的Pydantic设置进行管理 config.py。您可以使用环境变量或 .env 文件。