Nofax MCP server
io.github.AKzar1el/nofax·v0.2.48·1 starsHuman-in-the-loop approvals and notifications for AI coding agents through a local stdio MCP server.
1 stars1.0k downloads/wk
Reviews
Write oneNobody has reviewed Nofax yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
Nofax tools (7, 3 write)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
nofax_get_requestInspect safe metadata and terminal state for one known durable requestId without waiting. Use nofax_wait_for_response when the caller must wait for a human decision, or nofax_list_pending to recover requestIds after interruption. Secret response topics are never returned.
nofax_list_pendingList a bounded set of unresolved Nofax request handles for recovery after client or conversation interruption. Secret response topics are never returned.
nofax_notifywrite actionSend a one-way phone notification. This tool is informational and does not create a human-response wait. Notification transport success never counts as approval.
nofax_request_approvalwrite actionSend Allow/Deny to the phone and return a durable pending requestId. IMPORTANT: after this tool returns pending, call nofax_wait_for_response and repeat while it remains pending. Never continue the guarded action without a terminal Allow response. Set allowRefine when the human should also be able to send refinement text.
nofax_request_choicewrite actionSend up to three explicit options to the phone and return a durable pending requestId. IMPORTANT: call nofax_wait_for_response and repeat while pending; do not choose on the human's behalf.
nofax_request_refinementAsk the human for free-text refinement through the configured Nofax Refine iOS Shortcut. Use this when free-text edits are needed; use nofax_request_approval for Allow/Deny or nofax_request_choice for predefined options. Returns a durable pending requestId; call nofax_wait_for_response and repeat while pending.
nofax_wait_for_responseLong-poll a durable Nofax request for up to 240 seconds. If the result is pending, you MUST call this tool again with the same requestId. Repeat indefinitely until a terminal response is returned or the user explicitly changes/cancels the goal. Do not continue the guarded action while pending.
Public scan report
scanner v0.1.10 · 2026-10-30 · same rubric, same numbers if you re-run it
- Code scan13 source files scanned25/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitylocal package, no credentials required12/15
- Maintenancelast push 0 days ago15/15
- Maintainer identityregistry namespace matches repository owner; GitHub account older than a year8/10
How Nofax compares
Against every graded MCP server, from our own scans and uptime checks. Updated after each scan run.
- Safety score
- 92/100
- higher than 95% of 48,255 servers
- Tools
- 7
- the typical server has 7
- Tools that change things
- 43%
- typical: 0%. Fewer write tools means less an agent can break
- GitHub stars
- 1
- more than 65% of 28,688 servers
- Downloads a week
- 1,044
- more than 95% of 12,191 servers with a package
What its tools let an agent do: 4 read · 3 change
Release history: 16 versions in the registry since 2026-09-21, latest 2026-10-30, typically several a day.
Install Nofax in Claude Code, Cursor or VS Code
Runs npx -y nofax on your machine. Read the scan report first; the gateway never runs local packages.
claude mcp add nofax -- npx -y nofax
What the publisher says
From the Nofax repository's README, as published. We do not edit it. Read it on GitHub
Nofax
Human-in-the-loop approvals and notifications for AI coding agents, without running a Nofax SaaS.
Nofax is a small open-source bridge between an agent and a human. Local mode can pause an AI workflow, notify your phone, and return an explicit decision. An optional self-deployed Cloudflare Worker exposes a deliberately narrower remote MCP surface for one-way notifications and safe request inspection.
No Nofax account. No paid model API. No inbound port on your machine. MIT licensed.
Current status: local Nofax is on the stable 0.2.x line. The optional Cloudflare Worker is the upcoming 0.3.0 remote surface and is developed alongside the local package.
Why Nofax
Agent workflows increasingly need a clean answer to one question: when automation reaches a human decision boundary, how does it ask without pretending that silence means approval?
Nofax keeps that boundary explicit:
- pending is never approval;
- timeout and transport failure fail closed;
- the first accepted terminal response wins;
- agent-specific hook schemas stay isolated in adapters;
- remote access is intentionally narrower than local access;
- Nofax does not grant authority the calling agent did not already have.
Two operating modes
The remote Worker is not a hosted remote-approval service. It can send an informational notification and inspect existing request state, but it has no approval callback, choice, refinement, wait, webhook, or arbitrary remote-write endpoint.
Quick start
1. Install
npm install -g nofaxRequires Node.js 20 or newer.
2. Initialize
nofax initNofax creates ~/.nofax/config.json and generates a high-entropy notification topic. With the default transport, subscribe to the displayed topic in the ntfy mobile app.
3. Test
nofax test4. Use it
nofax notify --title "Build finished" "All tests passed"
nofax approve --title "Deploy?" "Release 1.4.0 is ready"
nofax refine --title "Refine draft" "Tell me what to change"An approval resolves to stable terminal JSON:
{"decision":"allow"}or:
{"decision":"deny"}If the request is still pending, times out, disconnects, or hits a transport error, Nofax never converts that condition into approval.
MCP
Start the local stdio MCP server:
nofax mcpLocal MCP exposes:
- nofax_notify
- nofaxrequestapproval
- nofaxrequestchoice
- nofaxrequestrefinement
- nofaxwaitfor_response
- nofaxgetrequest
- nofaxlistpending
Interactive requests return a durable request ID. nofaxwaitfor_response performs a bounded wait; callers must repeat the wait while the request remains pending rather than infer approval.
Agent integrations
Claude Code
Use Nofax as a local PermissionRequest hook in ~/.claude/settings.json:
Shortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
Nofax: common questions
- Is Nofax MCP server safe?
- Yes, by our scan: it is graded A (92/100). Read the Nofax safety report
- How do I install Nofax?
- It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
- Does Nofax need an API key?
- Not as far as the registry entry and our scan can tell: no credentials are declared or required.
- Is Nofax maintained?
- The last commit was 5 days ago (2026-10-30). The latest release is v0.2.48.
- How does Nofax compare with other MCP servers?
- safety score 92/100 (higher than 95% of 48,255 servers); tools 7 (the typical server has 7); tools that change things 43% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.