NoBrainer Tech Flow MCP server
A free, public, stateless remote MCP server for nobrainer-tech-flow.
It gives an AI agent one task contract, one evidence check and one done gate, the same in every MCP
client, plus guidance quoted from the pinned Flow release and a model advisor based on the
NoBrainer AI benchmark.
- Endpoint:
https://mcp.nobrainer.tech/mcp, Streamable HTTP, no sign-in.
- Stores nothing, runs no AI model, makes no outbound requests from tools.
- Protocol: MCP
2026-07-28 (stateless, server/discover) and 2025-era clients (2025-11-25,
2025-06-18, ...) through a stateless JSON-only fallback on the same endpoint.
Tools
All six tools are read-only (readOnlyHint: true, openWorldHint: false). Results are one compact
JSON text block. Responses never echo your free text: only IDs, enums, digests and canonical Flow text.
The server checks consistency, not truth: it cannot see your machine, and evidence is reported by
the agent. Every handoff says so. A recognised failure in the last 4,000 normalized characters
of a test log rejects an exit-zero result, even if a later summary passes. Submit a clean rerun separately.
Install
Server name: nobrainer-tech-flow. To try a local build instead, replace the URL with
http://127.0.0.1:8787/mcp (see "Run locally").
Claude Code:
Project file .mcp.json:
Claude.ai and Claude Desktop (not verified): Customize > Connectors > Add > Add custom connector,
name NoBrainer Tech Flow, URL https://mcp.nobrainer.tech/mcp, No sign-in. On Team and Enterprise an
Owner adds it under Organization settings > Connectors first.
Codex CLI and IDE, ~/.codex/config.toml (or codex mcp add nobrainer-tech-flow --url https://mcp.nobrainer.tech/mcp):
ChatGPT (not verified): open ChatGPT Plugins (chatgpt.com/plugins), select + > Add custom MCP
server, name it NoBrainer Tech Flow, enter the URL under Connection, choose no authentication and
select Create as a plugin. Workspace policies decide who can add custom MCP servers.
Cursor, .cursor/mcp.json or ~/.cursor/mcp.json (not verified):
VS Code / GitHub Copilot, .vscode/mcp.json (not verified):
Gemini CLI (not verified):
or settings.json: {"mcpServers": {"nobrainer-tech-flow": {"httpUrl": "https://mcp.nobrainer.tech/mcp"}}}
Cline, cline_mcp_settings.json (not verified; set type, because a missing type means legacy SSE):
OpenCode (verified 2026-10-23 against the public endpoint, OpenCode 2.0.32: opencode mcp list shows it connected):
Windsurf, ~/.codeium/windsurf/mcp_config.json, then Refresh in Manage MCPs (not verified):
Zed, Settings > AI > MCP Servers > Add Remote Server, or settings.json (not verified):
Using it with local Flow skills
The server leads the gates; guidance already in context leads the guidance. If Flow skills are
installed locally, keep using them for stage guidance and call get_flow_step only for cards you
have not loaded. Pass your local Flow version as local_flow; when it is older than the server's,
the response says that gate rules follow the server's version.
In repository work, save the contract token in the Flow goal file as FLOW_CONTRACT: nbf1... so
another session or client can continue. To resume, call get_flow_step with that token and
event: "resume". Merge the returned goal_block into the goal file by item ID: update each DoD
row's status, CHECKPOINT, NEXT_SAFE_ACTION and FLOW_CONTRACT (the renewed token), and keep
your own OUTCOME, NON_GOALS, DoD wording, evidence pointers and other fields. Without a goal
file yet, start one from the block and fill in those placeholders. Then continue from
NEXT_SAFE_ACTION. Each check_flow_evidence call or resume renews a token for 30 days, up to
90 days after start_flow_task.
Run locally
Node.js 22.18 or newer (TypeScript runs directly through Node's type stripping).
Without FLOW_TOKEN_KEYS, the local server signs with a random key per start, so tokens do not
survive a restart. On Vercel the key is required.
How it is built
Runtime dependencies: @modelcontextprotocol/server 2.3.1, zod 4.6.7, @vercel/firewall 1.2.6.
The spec proposed mcp-handler; it is a thin wrapper over the SDK's own createMcpHandler, so the
server uses the SDK directly (one dependency fewer, same dual-era behaviour).
Updating Flow guidance
The module list comes from the release: scripts/build-content.ts enumerates skills/*/SKILL.md at
the pinned tag. A released module without a cards.yaml entry gets a description-only card and a
warning; a cards.yaml module entry that the release no longer has fails the build (this is how
a rename such as nobrainer-codex-context -> nobrainer-context surfaces). To move to a new
release: update content/SOURCE.json (tag, commit, hashes), fix cards.yaml, run
npm run build:content and npm test, then deploy.
Updating the benchmark snapshot
npm run refresh:benchmark -- --source <website>/public_html/ai/benchmark regenerates
data/benchmark/snapshot.json and SOURCE.json deterministically. The website rule applies: a snapshot expires 14 days after its fetch time, so refresh and redeploy at least every 14 days or the advisor answers expired: true with an empty shortlist. See data/benchmark/NOTICE.md
for provenance and third-party licences.
Documents
Source code: MIT, see the repository LICENSE.