项目简介:

NiFi MCP 网桥是一个基于 Model Context Protocol (MCP) 实现的服务器端应用。它旨在将 Apache NiFi 的能力暴露给支持 MCP 的大型语言模型 (LLM) 客户端,使 LLM 能够理解和操作 NiFi 数据流。它充当 LLM 与 NiFi REST API 之间的中介,通过定义结构化的工具集来响应 LLM 的指令。

主要功能点:

  • 查询 NiFi 对象: 允许 LLM 列出 NiFi 流中的组件(如处理器、连接、端口、流程组),获取特定组件的详细配置和状态,以及在整个流中进行搜索。
  • 修改 NiFi 流: 提供工具创建新的 NiFi 组件(处理器、连接、端口、流程组),修改处理器属性和连接关系,以及删除现有组件。
  • 操作 NiFi 组件: 支持启动和停止 NiFi 流中的处理器或端口。
  • 与 NiFi API 交互: 内部通过异步客户端与 Apache NiFi 的 REST API 进行通信,执行实际的流管理操作。
  • 支持多种协议: 虽然主要通过 HTTP/REST 接口提供服务,但也内置支持通过标准输入/输出 (Stdio) 进行基于 JSON-RPC 的 MCP 协议通信,适用于命令行或进程间通信的 MCP 客户端。
  • 集成日志: 提供详细的日志记录,包括 LLM、MCP 和 NiFi API 之间的交互,便于调试和监控。

安装步骤:

  1. 克隆仓库: 打开终端,执行 'git clone https://github.com/ms82119/NiFiMCP.git' 并进入项目目录:'cd NiFiMCP'。
  2. 设置虚拟环境: 建议使用虚拟环境管理依赖。执行 'python3 -m venv .venv' 创建虚拟环境。
  3. 激活虚拟环境:
    • macOS 和 Linux: 'source .venv/bin/activate'
    • Windows: '.venv\Scripts\activate'
  4. 安装依赖: 确保已安装 'uv' 包管理器(可通过 'pip install uv' 安装)。执行 'uv sync' 安装项目所需的所有依赖。
  5. 配置环境: 复制项目根目录下的 '.env.example' 文件为 '.env',并根据您的环境填写 Apache NiFi API 地址 ('NIFI_API_URL')、NiFi 的用户名 ('NIFI_USERNAME') 和密码 ('NIFI_PASSWORD')。如果需要使用支持 LLM 的客户端(如项目中的 Streamlit UI),还需要配置相应的 LLM API 密钥('GOOGLE_API_KEY' 或 'OPENAI_API_KEY')。
  6. 运行 MCP 服务器: 在已激活虚拟环境的项目根目录下,执行 'uvicorn nifi_mcp_server.server:app --reload --port 8000' 启动基于 HTTP/REST 的服务器接口。此服务器也默认支持通过标准输入/输出与 MCP 客户端通信。

服务器配置 (针对 MCP 客户端):

MCP 客户端需要知道如何启动和与 NiFi MCP 网桥建立连接。通常,MCP 客户端会通过配置启动服务器进程并使用 Stdio 协议进行通信。配置信息应包含服务器名称、启动命令和参数。例如,一个支持 Stdio 客户端的 MCP 客户端可能需要以下配置信息(请注意,此配置仅为示例,实际使用时需要根据您的 MCP 客户端的具体要求进行调整):

{
  "name": "nifi-mcp-server",
  "description": "Apache NiFi MCP Bridge",
  "command": "python",
  "args": [
    "-m",
    "nifi_mcp_server.server"
  ],
  "protocol": "stdio"
  // 其他可能的配置,如 env (环境变量), cwd (工作目录) 等
}
  • 'name': 服务器的标识名称。
  • 'description': 服务器的简要描述。
  • 'command': 启动服务器进程的可执行文件路径,通常是 'python' 或 'python3'。
  • 'args': 传递给启动命令的参数列表。'-m nifi_mcp_server.server' 指示 Python 解释器作为模块运行 'nifi_mcp_server.server'。
  • 'protocol': 指明使用的通信协议,此处为 'stdio'。

基本使用方法:

  1. 按照上述步骤安装并启动 NiFi MCP 网桥服务器。确保 NiFi 实例正在运行且可以通过 'NIFI_API_URL' 访问。
  2. 使用一个支持 MCP 协议并能配置服务器启动命令的 LLM 客户端(例如,项目仓库中提供的 'nifi_chat_ui' 或独立的 MCP 客户端)。
  3. 在客户端中配置 NiFi MCP 网桥服务器的连接方式(参考上文的服务器配置示例)。
  4. 客户端连接成功后,LLM 即可通过调用 NiFi MCP 网桥暴露的工具(例如 'list_nifi_objects', 'create_nifi_processor', 'operate_nifi_object' 等)与 NiFi 进行交互,执行数据流的查询、管理和操作。

信息

分类

AI与计算