项目简介

NiFi MCP Server是一个旨在将Apache NiFi的复杂功能和状态以标准化、易于理解的方式暴露给大型语言模型(LLM)的后端服务。它利用Model Context Protocol (MCP) 规范,允许LLM客户端通过JSON-RPC调用工具,查询NiFi的版本、流程组、处理器、连接等信息,甚至在配置允许的情况下执行启动、停止、创建和删除等操作。该服务器自动检测NiFi 1.x和2.x版本,并支持通过Apache Knox进行认证,确保安全访问。

主要功能点

  • NiFi版本自动检测与适配: 兼容NiFi 1.x和2.x版本,自动调整行为。
  • Knox认证支持: 支持Bearer令牌、Cookies和Passcode令牌,方便在CDP等环境中部署。
  • 丰富的只读工具: 提供了查询NiFi版本、列出处理器、连接、参数上下文、控制器服务、端口、获取公告以及搜索数据流等13种工具,方便LLM了解NiFi状态。
  • 可选的写入操作: 当设置为非只读模式时,可执行启动/停止处理器、创建/更新/删除处理器、创建/删除连接、启用/禁用控制器服务等10种写入操作,允许LLM修改NiFi数据流(请谨慎使用!)。
  • 敏感信息脱敏: 自动对API响应中的敏感字段(如密码、令牌)进行脱敏处理,保护数据安全。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/kevinbtalbert/nifi-mcp-server.git
    cd nifi-mcp-server
  2. 创建并激活虚拟环境:
    python3 -m venv .venv
    source .venv/bin/activate
  3. 安装依赖:
    pip install -e .

服务器配置

MCP客户端需要配置与NiFi MCP Server建立连接。以下是一个示例配置,展示了如何在MCP客户端(如Claude Desktop或Cloudera Agent Studio)中启动和连接到此服务器。您需要根据实际环境替换占位符。

{
  "mcpServers": {
    "nifi-mcp-server": { // MCP服务器的名称,客户端将用此名称引用它
      "command": "/FULL/PATH/TO/NiFi-MCP-Server/.venv/bin/python", // 启动服务器的Python可执行文件完整路径
      "args": [
        "-m",
        "nifi_mcp_server.server" // 启动服务器模块的参数
      ],
      "env": { // 环境变量,用于配置NiFi MCP服务器的行为和连接信息
        "MCP_TRANSPORT": "stdio", // MCP服务器的通信传输协议,此处为标准输入输出流
        "NIFI_API_BASE": "https://<你的NiFi主机>/nifi-2-dh/cdp-proxy/nifi-app/nifi-api", // NiFi API的完整基础URL
        "KNOX_TOKEN": "<你的Knox Bearer令牌>", // 用于Knox认证的JWT令牌,从CDP UI获取
        "NIFI_READONLY": "true" // 设置为只读模式,设为"false"可开启写入操作(高风险)
        // 其他可选配置项:
        // "KNOX_COOKIE": "<完整的cookie字符串>", // 替代KNOX_TOKEN,直接提供cookie
        // "KNOX_PASSCODE_TOKEN": "<Knox通行码令牌>", // 替代KNOX_TOKEN,用于通行码认证
        // "KNOX_VERIFY_SSL": "false", // 是否验证SSL证书,默认为true
        // "KNOX_CA_BUNDLE": "/path/to/ca-bundle.pem", // CA证书包路径
        // "HTTP_TIMEOUT_SECONDS": "60", // HTTP请求超时时间,默认为30秒
        // "NIFI_PROXY_CONTEXT_PATH": "/nifi-2-dh/cdp-proxy" // CDP代理的上下文路径
      }
    }
  }
}

基本使用方法

配置并启动服务器后,您的MCP客户端(如LLM)即可通过调用服务器提供的工具与NiFi进行交互。

只读操作(默认): 您可以向LLM提问,例如:

  • "我运行的NiFi版本是什么?" (对应 'get_nifi_version' 工具)
  • "列出根流程组中的所有处理器" (对应 'list_processors' 工具)
  • "显示最近的公告信息" (对应 'get_bulletins' 工具)
  • "搜索包含'kafka'的处理器" (对应 'search_flow' 工具)

写入操作(需 'NIFI_READONLY=false'): ⚠️ 警告:写入操作会修改您的NiFi数据流,请谨慎使用! 当设置为非只读模式后,您可以:

  • "在根流程组中创建一个名为'MyLogger'的LogAttribute处理器" (对应 'create_processor' 工具)
  • "启动ID为abc-123的处理器" (对应 'start_processor' 工具)
  • "将处理器abc-123的调度周期更新为30秒" (对应 'update_processor_config' 工具)

信息

分类

开发者工具