Quick answer: Install formlm-cli as an MCP server, then generate, review, and publish a full assessment app—form, scales, report, styling—entirely inside Claude Desktop.
The interesting part of MCP is not that Claude can call a tool. It is that a tool chain with domain rules built in can hand you a finished deliverable—an assessment app with questions, scoring dimensions, a report, and visual styling—while you stay in the chat window.
This walkthrough does exactly that: connect FormLM to Claude Desktop, authenticate without leaving the conversation, generate a working assessment from one sentence, review what the agent built, and publish it. About ten minutes if your coffee is already brewing.
What you need before starting
- Node.js 18 or newer on the machine that runs Claude Desktop
- A FormLM account—free is fine; the CLI works with any plan
- An Access Token: sign in at formlm.me, open Account Settings, and copy the token (or use the email verification-code login later, entirely in chat)
npm install -g @formlm/cli # verify it is on PATH: formlm-cli --version
Attach the server to Claude Desktop
Claude Desktop reads one JSON file. Add formlm-cli mcp as a stdio server, and include the env.PATH line—macOS launches desktop MCP servers without your terminal's PATH, so a Homebrew-installed Node would otherwise fail with command not found:
{
"mcpServers": {
"formlm": {
"command": "formlm-cli",
"args": ["mcp"],
"env": { "PATH": "/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin" }
}
}
}
Fully quit and relaunch Claude Desktop. A new client should now appear in the tools panel with eight FormLM tools attached—three for auth, one generator, one executor, plus snapshot, skill, and exec. Setting it up in Cursor, Codex CLI, Windsurf, or Cline follows the same shape; the per-platform config locations live in the install guide on GitHub.
Authenticate from the chat
Type naturally: "log in to FormLM with this access token: …". Claude calls auth_login, the token is stored in the CLI's local config, and auth_status confirms the session. No browser round-trip. Prefer no token at all? Ask for email login instead and Claude will run auth_email_code and wait for the verification code you paste back.
Generate the whole app in one sentence
Now the part that makes this more than a demo. Describe the instrument you actually need—Claude calls formlm_generate, which runs FormLM's server-side agent pipeline, and roughly a minute later you have a complete app:
you › Create a workplace stress assessment with 10 questions across 3 dimensions (workload, recovery, control), 1–5 scale, with score interpretation and a report for each result level. claude › Running formlm_generate … done. The app has: • form 10 questions, 1–5 Likert items, 3 dimensions • scales weights per dimension + band thresholds • report per-band interpretation, radar chart • connect page styling for the fill-in flow App ID: 4Lvur… — want a snapshot walkthrough?
Why the output is well-formed: before writing any configuration, the agent reads the same domain-rule documents the platform's own generators use—exposed as MCP resources (formlm://skills/form, scale, connect, report, expert, share) and available through the formlm_skill tool. The P0 constraints are baked into every tool description, which is what keeps a conversational build from drifting into malformed scales.
Review what the agent built
Never publish on trust alone—MCP makes auditing cheap. Ask for "a snapshot of every module" and formlm_snapshot returns the aggregated state of form, scales, connect, report, and share in one call. Have Claude walk you through it: why this dimension set, what the thresholds mean, which questions carry the most weight. This is the step where your domain judgment earns its keep—the agent drafts, you decide.
Iterate without touching the editor
Follow-up prompts become edits. "Replace question 7 with a recovery-specific item", "tighten the high-stress band to 13 and above", "make the report lead with the radar chart"—Claude routes each change through formlm_execute and the module commands underneath (field, scale, report, connect), with formlm_exec available for anything on the command whitelist. The web editor remains there if you want it, but it is no longer on the critical path.
Publish, then point your pages at it
End with "publish it and give me all the links": share publish goes live, and the URL list includes the fill-in page, the editor, and the data-management view—and the published form's Data API endpoint comes with it. From there the storage patterns in the framework guide and the export workflows in the data-automation walkthrough both start with this same URL.
Practical tip: keep one human checkpoint before publishing—ask Claude to print the dimensions, weights, and band thresholds as a table and sanity-check them as the expert you are. Generation is fast; your domain calibration is the scarce ingredient.
"What changed is the handoff. Instead of clicking through five editors to assemble one instrument, you review a draft produced by a pipeline that already knows how assessments are built—and spend your minutes on judgment instead of bookkeeping."
🛠️ Put the server on your machine
The same eight tools work in every MCP client, not just Claude Desktop:
- formlm_generate — natural language to complete assessment app
- formlm_snapshot — audit every module in one call
- formlm_execute / exec — iterate by conversation, or script it
- auth_email_code — log in without ever copying a token
✅ Key Takeaways
- One npm install plus six lines of JSON turns Claude Desktop into a FormLM operator
- The macOS env.PATH line is the fix when the server fails to launch
- formlm_generate builds the full app—form, scales, report, styling—in roughly a minute
- Skill resources and P0 constraints are why conversational generation stays well-formed
- Snapshot-then-publish: audit with the agent before you ship on the agent
- Publishing hands you the fill-in link and the Data API endpoint in the same answer
Not writing code this week? The Coaching & Training and Consultant tracks assemble the same instruments through the web editor, step by step.
Frequently Asked Questions
What does the MCP server add over the web editor?
Automation and composition. A model can call all eight tools—generate, snapshot, execute, publish—inside one conversation, so building, auditing, and shipping an assessment becomes a single instruction chain instead of clicking through five editors.
Does Claude need my FormLM password?
No. The recommended path is an Access Token from Account Settings, passed to auth_login once and stored in the CLI's local config. Alternatively ask for email login: Claude runs auth_email_code and you paste back the verification code.
Why does the server show as failed to start in Claude Desktop?
On macOS this is almost always PATH: desktop clients launch MCP servers without your terminal environment. Add the env.PATH line to the server config, or point command at the absolute path returned by which formlm-cli.
Can other MCP clients use the same server?
Yes—formlm-cli mcp is a stdio server, so Cursor, Codex CLI, Windsurf, Cline, or any compatible client attaches with the same three fields: command, args, and env.
