Skip to main content
Glama
dutchbase

brainstormform

by dutchbase

Brainstormform

Local web forms that let AI agents ask unlimited brainstorming questions in one go. The agent writes a JSON spec, Brainstormform opens a paginated form in the browser (choice, text, scale, boolean, file upload), the user submits, and the CLI hands the answers back as JSON.

Zero dependencies. Node 18.17+. Nothing leaves the machine.

Quick start

node bin/brainstormform guide                 # full spec format + example
node bin/brainstormform ask examples/questions.json --open
# -> {"sessionId":"bf-...","url":"http://127.0.0.1:PORT/s/TOKEN","pid":123}
node bin/brainstormform wait bf-... --timeout 600   # prints answers JSON

Install globally if you like: npm link (or npm i -g .), then just brainstormform ....

Related MCP server: prompt-gui-mcp

Why a local server?

Answers and uploaded files must travel from a browser tab back to a CLI process. Browsers cannot write arbitrary files or signal a CLI. A throwaway server bound to 127.0.0.1 (random port, random token) is the only approach that makes this automatic and cross-browser, and it handles file uploads for free. It shuts down when the answers are read, and session data is deleted at that point.

Commands

Command

Purpose

ask [file|-]

Read spec (file or stdin), start the form, print {sessionId,url,pid}

wait <id> [--timeout s]

Block until submit; print answers JSON (exit 3 on timeout — call again)

get <id>

Non-blocking poll (exit 4 while pending)

list / stop <id> / cleanup

Inspect and reap sessions

schema / guide

JSON Schema and a complete usage cheat sheet

mcp

Run as an MCP stdio server

ask flags: --open (default) / --no-open, --keep, --idle-timeout s, --max-upload MB.

Question format

Top level: title, intro?, settings { pageSize, theme, submitLabel }, and either categories: [{ title, description?, questions: [...] }] or a flat questions: [...].

Question types:

  • single, multioptions: [{ value, label?, description? }], allowOther?

  • text, textareaplaceholder?

  • numbermin, max, step?

  • scalemin, max, scaleLabels? (default 1–5)

  • boolean

  • fileaccept?, multiple?, maxFiles?

Every question takes id? (auto q1..qN), label, help?, required?.

Run brainstormform guide for a filled-in example, or see examples/questions.json.

Answers output

{
  "sessionId": "bf-...",
  "submittedAt": "2026-01-01T00:00:00.000Z",
  "durationMs": 42000,
  "answers": {
    "goal":      { "type": "textarea", "value": "Ship v1" },
    "platforms": { "type": "multi", "value": ["web","ios"], "other": "desktop" },
    "urgency":   { "type": "scale", "value": 4 },
    "references":{ "type": "file", "value": [{ "name":"x.png", "path":"/abs/path", "size":123, "mime":"image/png" }] }
  },
  "unanswered": ["..."]
}

MCP setup

brainstormform mcp exposes two tools: ask_questions and get_answers.

Claude Code:

claude mcp add brainstormform -- node /abs/path/to/brainstorm-ui/bin/brainstormform mcp

opencode (opencode.json):

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "brainstormform": {
      "type": "local",
      "command": ["node", "/abs/path/to/brainstorm-ui/bin/brainstormform", "mcp"],
      "enabled": true
    }
  }
}

Codex (~/.codex/config.toml):

[mcp_servers.brainstormform]
command = "node"
args = ["/abs/path/to/brainstorm-ui/bin/brainstormform", "mcp"]

Typical MCP call:

ask_questions({ title, categories, open: true })      -> { sessionId, url }
get_answers({ sessionId, timeoutSeconds: 600 })        -> answers

Storage & privacy

  • Session data lives in $XDG_RUNTIME_DIR/brainstormform/<id>/ (falls back to the OS temp dir).

  • It is deleted as soon as the agent reads the answers, unless --keep copies it (with uploads) to ./brainstormform-<id>/.

  • The user can always download JSON/Markdown from the form's success screen.

  • Server binds 127.0.0.1 only, requires a random token, rejects foreign Host headers, and caps upload sizes.

Tests

npm test

Roadmap

Priories come from dogfooding this tool with real brainstorming sessions. Near term:

  • Conditional logic — show a question only when earlier answers match.

  • More question types — ranking, matrix, date/time, visual/image choice.

  • Richer questions — Markdown in labels/help, links opening in new tabs, a heading + intro per category, placeholder suggestions.

  • Compact review screen before submitting.

  • Optional local archive of past brainstorms, and saving uploads into the repo, with a "write answers into the repo" export.

  • MCP push notifications so an agent can be told when answers are ready instead of polling.

  • A standalone binary so Brainstormform runs without Node installed.

Out of scope: remote/hosted use, multi-user forms and anything that stops the tool being local-first. Local-only is the security model.

Contributing

Contributions are very welcome — see CONTRIBUTING.md. It is a small, dependency-free codebase, so it is easy to get started.

License

MIT

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI clients to create multi-field forms, send approval requests via email, and retrieve structured human responses. It facilitates human-in-the-loop workflows by allowing agents to collect data and check form completion status.
    1,026 npm
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI models to ask users questions through a local web interface, supporting batch questions, multi-select, and free text for human-in-the-loop interactions.
    -