项目简介
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响应中的敏感字段(如密码、令牌)进行脱敏处理,保护数据安全。
安装步骤
- 克隆仓库:
git clone https://github.com/kevinbtalbert/nifi-mcp-server.git cd nifi-mcp-server - 创建并激活虚拟环境:
python3 -m venv .venv source .venv/bin/activate - 安装依赖:
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' 工具)
信息
分类
开发者工具