关于 NiFiMCP
NiFiMCP 是一个用于 Apache NiFi 的 MCP 服务与客户端项目,既可作为 stdio MCP 服务接入 Cursor AI、Claude Code 等客户端,也可通过内置聊天机器人在浏览器中使用。它面向需要用自然语言构建、调试和记录 NiFi 数据流的用户。
主要功能
- 01通过自然语言操作 Apache NiFi 实例
- 02提供约 30 个工具,覆盖流程的构建、更新、运行与调试
- 03支持 stdio 方式接入任意 MCP 客户端
- 04内置基于 FastAPI 的聊天界面(需自备 LLM API 密钥)
- 05支持生成流程文档
适用场景
- 01根据需求说明自动创建 NiFi 数据流
- 02诊断并修复已有数据流中的问题
- 03为现有 NiFi 流程生成文档
MCP 相关
该项目以 MCP 服务的形式,将 NiFi 操作工具暴露给 Cursor AI、Claude Code 等 MCP 客户端,并提供内置聊天机器人作为另一种交互方式。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
NiFi MCP(模型上下文协议)
此仓库包含 NiFi MCP 项目,可通过以下两种方式使用:
- 作为普通 MCP 服务,通过 stdio 连接 Cursor AI、Claude Code、Antigravity 等工具
- 或使用内置于此仓库的聊天机器人,通过浏览器连接
这两种方式都能让你使用自然语言与 Apache NiFi 实例交互。目前提供约 30 种工具,涵盖构建、更新、运行、调试和记录 NiFi 流。此项目已在 NiFi 1.23 和 1.28 版本上测试,但只要 NiFi REST API 保持一致,也应适用于 2.x 等其他版本。
内置聊天机器人要求你提供自己的 LLM API 密钥。模型越好,结果越佳;选择更大的上下文 token 数量也有帮助。不过,我发现使用 Cursor AI 的 Auto 模式能获得最佳性能和结果。事实证明,它是比我自己构建的聊天机器人好得多的交互界面。因此,只有在没有其他选择时,我才建议使用内置聊天机器人。
对话示例(使用内置聊天机器人)
最近更新
版本 2.0 - 重大 UI 改版
- 为 Cursor AI 等 IDE 添加了直接 MCP 服务支持(最佳选择)
- 增强了内置聊天机器人
- 从 Streamlit 迁移到 FastAPI/JavaScript 客户端,提升性能和用户体验
- 增强实时 WebSocket 通信,改进工作流状态更新
- 改进消息处理,防止重复消息
- 采用现代化、响应式 UI,改善无障碍体验并支持移动设备
- 新增“流文档”工作流,帮助生成更完善的流文档
如需查看最新更新和发行说明,请访问 GitHub Releases 页面。
设置说明
注意: 拉取新版本后也应遵循这些说明,因为可能会新增软件包依赖项。
通用设置步骤(所有版本)
-
克隆仓库:
git clone [email protected]:ms82119/NiFiMCP.git cd NiFiMCP -
设置虚拟环境: 建议使用虚拟环境来管理依赖项。你可以使用
venv创建虚拟环境:python3 -m venv .venv -
激活虚拟环境:
- 在 macOS 和 Linux 上:
source .venv/bin/activate - 在 Windows 上:
.venv\Scripts\activate
- 在 macOS 和 Linux 上:
-
安装依赖项: 使用
uv根据pyproject.toml和uv.lock安装依赖项:uv sync -
使用你的 NiFi 服务详细信息和 LLM API 密钥更新 config.yaml 文件 请参考 config.example.yaml 了解格式和结构 请注意,只有使用内置客户端时才需要 LLM API 密钥
使用 NiFi MCP 服务(stdio,任意 MCP 客户端)
你可以通过 stdio 使用 NiFi MCP 工具,连接任何兼容 MCP 的客户端,无需运行 REST 服务或聊天 UI。将主机配置为从仓库根目录运行服务,并确保 config.yaml 中至少配置了一个 NiFi 服务。
可移植入口点(执行 uv sync 后):
{
"command": "uv",
"args": ["run", "python", "-m", "nifi_mcp_server.stdio_server"],
"env": {}
}
可选:在 env 中设置 NIFI_SERVER_ID,其值为 config.yaml 中的一个 id;如果省略,则使用该文件中的第一个服务。
- 完整设置(工作目录、不使用
uv的python、JSON 示例):MCP stdio 设置 - Agent / LLM 行为(任意客户端):MCP Agent 指南
- 仅限 Cursor(
.cursor/mcp.json、重新加载):Cursor MCP 设置
使用内置聊天机器人
你需要两个单独的终端进程(两个不同的 Python 应用)。浏览器是唯一的“客户端”——只需打开一次聊天 URL;不要在同一端口上启动第二个 api.main 实例。
| 进程 | 应用 | 端口(示例) | 作用 |
|---|---|---|---|
| 1 | nifi_mcp_server.server:app | 8000 或 8001 | MCP / NiFi 后端(REST + UI 调用的工具) |
| 2 | api.main:app | 3000 或 3001 | 提供聊天网页 UI,并与进程 1 通信 |
MCP_SERVER_PORT 必须与进程 1 监听的端口一致(它会告知进程 2 MCP 服务的位置)。
1. MCP 后端(先运行):
uvicorn nifi_mcp_server.server:app --reload --port 8000
如果端口 8000 已被占用,请选择其他端口,并将 MCP_SERVER_PORT 设置为相同的值:
MCP_SERVER_PORT=8001 uvicorn nifi_mcp_server.server:app --reload --port 8001
2. 聊天 UI Web 服务(在第二个终端中运行):
uvicorn api.main:app --reload --port 3000
如果 MCP 服务使用 8001,请将 UI 指向该端口:
MCP_SERVER_PORT=8001 uvicorn api.main:app --reload --port 3000
如果 3000 端口繁忙,你可以使用其他 UI 端口(例如 --port 3001);只能有一个 api.main 进程使用该端口。
3. 在浏览器中打开:
http://localhost:3000(或你为 api.main 选择的端口,例如 http://localhost:3001)。
使用提示
有关详细用法、提示和 UI 功能,请参阅使用指南。
运行自动化测试
有关全面的测试信息和示例,请参阅测试指南。
许可证
本项目采用 Apache License 2.0 许可。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。