Skip to main content

MCP server for Apache NiFi 2.2.0 — lets AI agents inspect and control NiFi flows

Project description

⚠️ Este paquete fue renombrado a nifipilot. Por favor instala pip install nifipilot en su lugar. Este paquete no recibirá más actualizaciones.

NiFiPilot Logo

NiFiPilot — AI Copilot for Apache NiFi

MCP (Model Context Protocol) server for Apache NiFi 2.2.0. Lets AI agents inspect, build, and control NiFi flows safely and auditably via 17 ready-to-use tools.

Tests Python License NiFi PyPI VS Code


What it does

NiFiPilot exposes Apache NiFi's REST API as MCP tools so any compatible AI agent can:

  • Inspect running flows, processor states, queue depths, and system health
  • Build process groups, processors, and connections from natural language
  • Control start/stop individual processors or entire process groups
  • Audit every action — every tool call is written to a structured JSON log

Pipeline-Demo-CodHector — created by AI via NiFiPilot Full pipeline created by AI: GenerateFlowFile → UpdateAttribute → EvaluateJsonPath → LogAttribute → PutFile

NiFiPilot en VS Code NiFiPilot in VS Code — Claude executing MCP tools with NiFi canvas visible in real time


Features

  • 17 tools across three categories: read (5), write (6), control (6)
  • Readonly mode — write and control tools are blocked; safe for production monitoring
  • Dry-run mode — preview write/control actions without executing them
  • Structured audit log — every tool call logged with params, result, and timestamp
  • Lazy authentication — JWT token acquired on first call, refreshed automatically on 401
  • Transports — stdio (local clients) and SSE (Docker/remote)
  • 37 unit tests — no live NiFi required

Quick start with Docker Compose

The bundled compose file starts NiFi 2.2.0 and the MCP server together.

# 1. Copy and edit the env file
cp .env.example .env
# Edit NIFI_PASSWORD (min 12 chars) and set MCP_MODE=full to allow write/control

# 2. Start both services
docker compose up --build

# 3. NiFi UI:  https://localhost:8443  (first start takes ~2 min)
#    MCP SSE:  http://localhost:8000/sse

Connect any MCP-compatible client to the SSE endpoint:

{
  "mcpServers": {
    "nifi-mcp": { "url": "http://localhost:8000/sse" }
  }
}

Manual installation

Requirements: Python 3.11+

# From source
git clone https://github.com/Giojacke/mcp-nifipilot
cd mcp-nifipilot
pip install .

Run in stdio mode (used by Claude Code, VS Code, Cursor):

NIFI_URL=https://localhost:8443 \
NIFI_USERNAME=admin \
NIFI_PASSWORD=your-password \
NIFI_VERIFY_SSL=false \
MCP_MODE=readonly \
nifi-mcp

Configuration

All settings come from environment variables (or a .env file in the working directory).

Variable Default Description
NIFI_URL https://localhost:8443 NiFi base URL
NIFI_USERNAME admin NiFi username
NIFI_PASSWORD (required) NiFi password (min 12 chars for single-user auth)
NIFI_VERIFY_SSL false Verify TLS certificate (true in production)
MCP_MODE readonly readonly — read tools only; full — all tools
MCP_AUDIT_LOG true Write JSON audit log
MCP_AUDIT_LOG_PATH ./logs/audit.log Path for the audit log file
MCP_RATE_LIMIT 60 Max tool calls per minute
MCP_DRY_RUN false Describe write/control actions without executing
MCP_TRANSPORT stdio stdio for local clients; sse for Docker
MCP_HOST 0.0.0.0 Bind host when MCP_TRANSPORT=sse
MCP_PORT 8000 Port when MCP_TRANSPORT=sse

Tool reference

Read tools (always available)

Tool Description
get_process_groups(group_id) List direct child process groups
get_processors(group_id) List processors in a group with run status
get_connections(group_id) List connections with queue depth
get_flow_status(group_id) Running/stopped/invalid counts and throughput
get_system_diagnostics() NiFi version, heap, CPU, uptime

Write tools (require MCP_MODE=full)

Tool Description
create_process_group(name, parent_group_id, x, y) Create a new process group
create_processor(name, processor_type, group_id, x, y) Add a processor (full Java class name)
update_processor(processor_id, name?, properties?, scheduling_period?) Update processor config
create_connection(source_id, destination_id, group_id, relationships?, ...) Connect two components
delete_processor(processor_id) Delete a stopped processor
delete_process_group(group_id) Delete a stopped process group

Control tools (require MCP_MODE=full)

Tool Description
start_processor(processor_id) Start a processor
stop_processor(processor_id) Stop a processor
start_process_group(group_id) Start all processors in a group
stop_process_group(group_id) Stop all processors in a group
get_queue_status(connection_id) Queue depth and throughput
purge_queue(connection_id) Drop all flowfiles from a queue

Client setup

Claude Code (stdio)

The .mcp.json at the project root is pre-configured. Fill in your password:

{
  "mcpServers": {
    "nifi-mcp": {
      "command": "nifi-mcp",
      "env": {
        "NIFI_URL": "https://localhost:8443",
        "NIFI_USERNAME": "admin",
        "NIFI_PASSWORD": "YOUR_PASSWORD",
        "NIFI_VERIFY_SSL": "false",
        "MCP_MODE": "readonly"
      }
    }
  }
}

Claude Code (SSE — Docker stack running)

{
  "mcpServers": {
    "nifi-mcp": { "url": "http://localhost:8000/sse" }
  }
}

VS Code

Install from VS Code Marketplace: NiFiPilot — AI Copilot for Apache NiFi

Copy .vscode/mcp.json (included) and fill in your password.

Cursor / Windsurf

Place the stdio config at ~/.cursor/mcp.json (global) or .cursor/mcp.json (project).


Security model

Concern Mitigation
Credential exposure All secrets via env vars — never hardcoded
Accidental writes MCP_MODE=readonly blocks all write and control tools
Runaway changes MCP_DRY_RUN=true describes actions without executing
Auditability Every tool call writes a JSON entry to the audit log
Token expiry ensure_authenticated() re-logins on 401 automatically
SSL in production Set NIFI_VERIFY_SSL=true with a valid certificate

Development

# Install with dev dependencies
pip install -e ".[dev]"

# Run tests (no live NiFi needed)
pytest

# Lint and format
ruff check src tests
ruff format src tests

Tests mock nipyapi at the API class level — 37 tests, no live NiFi required. Integration tests can be added in tests/integration/ (excluded from the default test run).


Architecture

See ARCHITECTURE.md for design decisions and the C4 diagrams.


Roadmap

  • Rate limiting enforcement (config exists, middleware pending)
  • NiFiClient as real façade (tools currently call nipyapi directly)
  • Integration tests against live NiFi
  • Azure DevOps MCP bridge for CI/CD of NiFi flows

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nifi_mcp-0.2.0.tar.gz (2.9 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nifi_mcp-0.2.0-py3-none-any.whl (15.2 kB view details)

Uploaded Python 3

File details

Details for the file nifi_mcp-0.2.0.tar.gz.

File metadata

  • Download URL: nifi_mcp-0.2.0.tar.gz
  • Upload date:
  • Size: 2.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for nifi_mcp-0.2.0.tar.gz
Algorithm Hash digest
SHA256 f60b41b51ae61634e449a84c9900c816443b8e8495c319eab4c921e44e9c837f
MD5 58a4711ee0c17e54ce8e2ae6dc575e43
BLAKE2b-256 d76c413e3e3c68380615cdd6f520df8d5392c73ff8ac3cac4d2eeca1f81b3ed6

See more details on using hashes here.

File details

Details for the file nifi_mcp-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: nifi_mcp-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 15.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for nifi_mcp-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0c05e14e116562ec51a53c2cde1db15eccf6f2054483439b3b5beda09e1ae1af
MD5 74e75c1c3829e1fafd6a550ae9e1be15
BLAKE2b-256 a312ce848a2bdd9363a5053db77bc0a29892355c2cbf61f27b64c12d73b9ec92

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page