Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Description from the maker (original English)
Evidence-backed, read-only Apache NiFi investigation: cited evidence and reviewable flow drafts
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"nifimcp": {
"command": "uvx",
"args": [
"nifimcp-server",
"serve",
"--config",
"your-value"
]
}
}
}Run this in your terminal
claude mcp add nifimcp -- uvx nifimcp-server serve --config your-valueThis one needs values on its command line, so copy the settings and fill them in.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"nifimcp": {
"command": "uvx",
"args": [
"nifimcp-server",
"serve",
"--config",
"your-value"
]
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one needs values on its command line, so copy the settings and fill them in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"nifimcp": {
"type": "stdio",
"command": "uvx",
"args": [
"nifimcp-server",
"serve",
"--config",
"your-value"
]
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 6, 2026
The registry name was verified with the GitHub account nifimcp, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
The registry does not list a required key, though some servers ask you to sign in on first use.
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed –, and the latest version (0.1.0-rc.1) reached the registry 7 days ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Python (uv) on your computer.
In the same category: Spec Driven Development, Remote Desktop Commander, topo^alpin
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Avalanche bulletins and mountain weather forecasts for any place in the Alps.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
Give AI the context to understand your NiFi flows, investigate failures with cited evidence, and draft what comes next.
Explore NiFiMCP · How it works · Bring us one critical NiFi workflow
NiFiMCP is an open-source Model Context Protocol server for evidence-backed Apache NiFi investigation. It reads; it does not change your NiFi.
Public preview 0.1.0rc1. Tested on Linux x86_64 with Python 3.12 against stock Apache NiFi 2.12.0
(single node, certificate authentication) and Claude Code. Live NiFi access is read-only; a flow draft is a
local file that an authorized person imports separately. Anything outside that boundary is listed as
untested or unsupported in the capability matrix. Expect rough edges and report them.
NiFiMCP is an independent project for Apache NiFi, founded and maintained by Lloyd Clark. It is not affiliated with, sponsored by or endorsed by the Apache Software Foundation or Cloudera. Apache NiFi and NiFi are trademarks of the Apache Software Foundation. Website: nifimcp.com.
The demo needs no NiFi, no model and no account. It replays evidence captured from a real NiFi 2.12.0 instance running a synthetic flow. With uv installed:
uvx --from nifimcp-server==0.1.0rc1 nifimcp demo --output ./nifimcp-demo
Open nifimcp-demo/report.html. Every statement in it links to the exact source bytes it came from.
NiFiMCP needs Python 3.12. The package on PyPI is nifimcp-server and it installs the nifimcp command (nifi-mcp is an unrelated project, and PyPI treats nifimcp as the same name). 0.1.0rc1 is a pre-release, so pin the version:
uv tool install nifimcp-server==0.1.0rc1 # installs the nifimcp command
nifimcp --version
or, with pip in a Python 3.12 virtual environment, pip install nifimcp-server==0.1.0rc1.
From source, for development or to run the test suites:
git clone https://github.com/nifimcp/nifimcp.git
cd nifimcp uv sync --frozen uv run nifimcp demo --output ./nifimcp-demo
For machines without internet access, use the offline kit (hash-locked wheels, SBOM and licenses) from the GitHub release and follow docs/OFFLINE_INSTALL.md.
NiFiMCP works in three modes:
| Mode | Reads from | Use it for |
|---|---|---|
demo | the bundled synthetic capture | trying it out |
bundle | flow definitions and evidence bundles you register | air-gapped review, sharing a case |
live | one NiFi 2.12.0 origin over HTTPS with mutual TLS | investigating a running system |
For live mode, create a dedicated NiFi identity (a client certificate) and give it read-only access to the process groups you want the assistant to see, nothing more:
| NiFi policy | Needed for |
|---|---|
view the user interface (/flow) | every live call |
| view the component, on each scoped process group | describe and health |
query provenance (/provenance) and view provenance, on each scoped group | trace_feed, unmatched history |
| view the data, on each scoped group | provenance queries and queue metadata sampling (NiFi 2.12.0 requires it for both) |
NiFi's "view the data" policy would also let this identity open FlowFile content in the NiFi UI. NiFiMCP has no route to content, attribute dumps or replay, and only allowlisted attribute values leave the server. Without that policy, describe and health still work, and provenance and sampling return a permission error that names the missing policy.
Never grant write policies. NiFiMCP has no tool that modifies NiFi, and the scoped identity is your second line of defense. Then write an operator config (docs/CONFIGURATION.md) and check it:
nifimcp doctor --config operator.json
Add the server to your MCP host:
{
"mcpServers": { "nifimcp": { "command": "uvx", "args": ["--from", "nifimcp-server==0.1.0rc1", "nifimcp", "serve", "--config", "/path/to/operator.json"] } } }
The recorded Claude Code sessions in evidence/host/ used the source-checkout form of the same command (uv run --frozen --project /path/to/nifimcp nifimcp serve --config ...). Other MCP hosts that launch stdio servers should work with the same command but have not been tested.
orders-intake for an on-call operator who did not build it. Cite evidence and list unknowns." . Investigate the last hour and separate observed facts, plausible explanations and missing evidence." through scope orders-intake between 09:00 and 10:00 UTC. Where did it go and what can't you see?"before and after. What changed in routing and queue settings?"status=critical to out_critical, standard to out_standard and everything else to out_unmatched. Validate it and give me labeled test cases."The server also ships three MCP prompts: explain_this_flow, investigate_this_feed and draft_bounded_routing_flow.
| Tool | What it returns |
|---|---|
get_capabilities | mode, scopes, limits, NiFi version and which features are available |
describe_flow | bounded graph, parameters, services and fixed-rule configuration findings |
get_flow_health | timestamped status, queues, bulletins and labeled hypotheses |
trace_feed | provenance timeline for one exact FlowFile UUID, filename or approved indexed attribute (max 24 h) |
inspect_unmatched | what feeds an unmatched route, its recent events and an optional metadata sample |
compare_flow_snapshots | value-safe structural diff of two registered snapshots |
export_investigation | the investigation as JSON or a self-contained HTML report |
get_processor_catalog | the pinned NiFi 2.12.0 processor catalog used for drafts |
validate_flow_plan | static checks of a proposed subflow |
draft_flow | a stopped, local NiFi flow definition plus a review page and receipt |
Every result uses one envelope: status, scope, source version, collection time, evidence records (source hash plus JSON pointer), findings labeled as *observed*, *static rule*, *hypothesis* or *operator note*, explicit gaps, and the limits that were applied.
A non-AI command line covers the same ground: nifimcp describe, investigate, report, draft, register, unregister and catalog. Run nifimcp --help. For a sample subflow plan, run nifimcp draft --example attribute_router > plan.json, then nifimcp draft --plan plan.json --output ./draft.
| Step | Who writes to NiFi | Identity | Where |
|---|---|---|---|
Investigate (describe_flow, get_flow_health, trace_feed, inspect_unmatched, export_investigation) | nobody | your read-only observer certificate | your NiFi, over 14 allowlisted read endpoints |
Draft (validate_flow_plan, draft_flow) | nobody | none; no NiFi connection is used | local files in the artifact directory |
Verify a draft (scripts/lab_verify_draft.py, optional) | the separate lab CLI | the lab's own admin certificate, which exists only inside the disposable container the lab created | a throwaway NiFi container on 127.0.0.1, deleted afterward |
In the recorded Claude Code session the assistant drafted a router with draft_flow, which wrote files and touched no NiFi. The import you see in evidence/host/*/lab-verification/ was done afterward by the lab CLI with the lab admin certificate (CN=nifimcp-lab-admin) through NiFi's upload endpoint, into a scratch group of a container that was then destroyed. The MCP server has no upload, start or deploy route, and the observer identity holds no write policy. Execution against a real NiFi is not part of this release. It is planned as a separate, approval-controlled component.
NiFi names, messages and attributes are treated as untrusted text. Your MCP host's model still decides what to say; check its claims against the cited evidence.
Three acceptance gates are BLOCKED, not passed, and they matter in practice:
| Gate | What it means for you |
|---|---|
| Clusters | A clustered NiFi is detected and refused in live mode (UNSUPPORTED_TOPOLOGY). Bundle mode still reviews exported flow definitions from any NiFi. Safe read-only cluster support is the first roadmap item. |
| Other platforms | Only Linux x86_64 has run the test suites. macOS, Windows and ARM are untested; the code is pure Python and may well run, but nobody has checked file p
Only the beginning is shown; read the rest in the repo