Visualize
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@VisualizeShow the research tasks as an interactive checklist."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Better Response
Better Response is a small, free agent plugin that improves the agent's reply when plain text is hard to use. Its UI engine is Engawa: the agent authors a validated tree, and Engawa renders it as an MCP App without another LLM call.
Website · Privacy · Terms · Issues
Questions and bug reports go to the issue tracker; support is best-effort on a noncommercial project. MIT licensed.
Repository standard
This repository is a pnpm monorepo:
apps/better-response/ Website, Streamable HTTP MCP server, and MCP App renderer
packages/engawa/ Engawa schema, renderer, components, and styles
plugins/better-response/dist/ Installable skill, host metadata, logo, and MCP URLapps/ contains deployable services, packages/ contains framework packages, and plugins/<name>/dist contains the files installed into an agent host. Better Response has one small plugin distribution shared by Cursor and Codex. It points both hosts to the Visualize MCP server owned entirely by apps/better-response; no server or renderer is installed locally.
The remaining dotfolders are host entrypoints, not competing layouts:
.agents/plugins/marketplace.json Codex repository marketplace
.cursor-plugin/marketplace.json Cursor repository marketplace
.cursor/mcp.json Cursor CLI localhost HTTP configuration
plugins/better-response/dist/.codex-plugin/ Required Codex manifest
plugins/better-response/dist/.cursor-plugin/ Required Cursor manifestThe two plugin manifests and two marketplace catalogs cannot be merged because the hosts require different paths and schemas. Both installable manifests connect to the production Streamable HTTP endpoint. The isolated development launcher overrides only that URL to localhost, so local and production consumers use the same MCP server and transport.
The MCP App source lives under apps/better-response/mcp. Its Vite build produces the ignored apps/better-response/mcp/dist/app.html immediately before Next.js builds. The MCP route serves that generated resource, and Next.js includes it in the deployment output. It is never a committed or manually synchronized plugin artifact.
A second bundle beside it, mcp/demo.html, renders a fixed payload through the same substrate, renderer, and registered components, and the website's /demo route serves it into an iframe so the landing page demonstrates the real thing rather than a screenshot. It needs its own vite.demo.config.ts because viteSingleFile inlines dynamic imports, which rollup rejects for more than one input.
Related MCP server: ggui
Verify
pnpm install
pnpm probeThe probe builds the MCP App and Next.js project, starts the production build locally, and runs the full vertical over its Streamable HTTP route.
Develop through Codex
pnpm devpnpm dev:codex is the same command. This is the complete local development loop. It builds the hosted MCP App, starts it in Vite watch mode, starts the watched Next.js website and MCP route at http://127.0.0.1:3100, and launches a fresh Codex desktop instance connected to http://127.0.0.1:3100/api/mcp.
The launcher creates disposable Codex and Electron data directories under a short /tmp/br-* path, copies only the current Codex login, marks the disposable profile's onboarding and Codex-to-ChatGPT migration announcement as complete, installs better-response@better-response-local from this repository as the only local plugin, seeds two projectless threads—Create beef steak shopping list and Find Cube Attain 2026 changes (cut before the first markdown comparison table)—and opens one additional Codex instance. It does not load prior personal tasks, personal configuration, or previously installed personal plugins. Codex still provides its own bundled first-party plugins. Close the isolated instance to stop the local server and remove its temporary state.
Keep that instance open while developing. Next.js reloads the MCP route, Vite rebuilds the MCP App, and skill edits are copied into the disposable plugin cache. Start a new Codex task after changing the skill or tool contract so that the task receives the new context.
Open either seeded thread and invoke /visualize (or $ → Visualize): the shopping-list thread for the checklist path, or the Cube Attain thread for an Engawa DataGrid instead of Markdown. The agent may also use Better Response without a manual invocation whenever the available interface would be materially easier to use than a static response.
The launcher requires the signed Codex CLI and a file-based login at ~/.codex/auth.json. The separate desktop instance uses the current app build's internal CODEX_ELECTRON_USER_DATA_PATH development override together with Chromium's matching --user-data-dir switch. Both receive the same canonical path so Electron uses one disposable profile and one instance lock. These internal behaviors should be rechecked after Codex app upgrades.
To update the personal Codex installation explicitly instead:
pnpm install:codexThat command mirrors the plugin into ~/plugins/better-response, applies the Codex cachebuster, and reinstalls better-response@personal. The installed plugin connects to https://betterresponse.vercel.app/api/mcp; fully restart the normal Codex instance if it retains the prior plugin configuration.
Develop through Cursor
pnpm dev:cursorThis launches the Cursor equivalent of the Codex loop: the same watched local MCP route, plus a separate Cursor desktop instance connected to http://127.0.0.1:3100/api/mcp.
The launcher keeps a persistent isolated Electron profile under ~/.better-response/cursor-dev (--user-data-dir and --extensions-dir) so the test instance can run beside everyday Cursor without loading everyday chats or settings. It does not override HOME, because that breaks Cursor's Keychain access. Cursor still loads local plugins from ~/.cursor/plugins/local, so the launcher points that Better Response install at localhost for the session and restores the production plugin files when you close the isolated window. Keep the everyday Cursor window closed during this session if you do not want it to share that localhost plugin. The isolated profile is kept so a one-time sign-in can persist across runs.
Keep that instance open while developing. Next.js reloads the MCP route, Vite rebuilds the MCP App, and skill edits are copied into the isolated plugin install. Start a new agent chat after changing the skill or tool contract so that the chat receives the new context.
Discuss a recipe, invoke /visualize, and submit the prompt.
To update the everyday Cursor installation explicitly instead:
mkdir -p "$HOME/.cursor/plugins/local"
pnpm install:cursorThat command mirrors the plugin into ~/.cursor/plugins/local/better-response. The installed plugin connects to https://betterresponse.vercel.app/api/mcp. It skips the sync when Cursor's local plugin directory does not exist. After syncing, use Cursor's plugin reload; fully restart Cursor if it retains the prior plugin configuration. Use a real directory rather than a symlink. Do not keep a marketplace-installed Better Response enabled alongside the local copy.
For server-only or Cursor CLI development, run pnpm dev:server; the project-level .cursor/mcp.json points to the localhost HTTP route. pnpm dev, pnpm dev:cursor, and pnpm dev:server stop a leftover Next.js worker from a previous session before starting, so killing only the parent Node process no longer blocks the next run.
Scope
Better Response is a free, noncommercial project in pre-release 0.x. Breaking contract changes advance the minor version; 1.0.0 is reserved for the public release. The first product slice stops at local interaction inside the rendered view: nothing the user touches there is sent back to the agent.
This server cannot be deployed
Maintenance
Related MCP Connectors
Build and publish full-stack apps from your coding agent: models, rules, pages, auth, per-app MCP.
An AI concierge that turns static forms into adaptive AI conversations. From any MCP client.
Let AI agents query data and act across all your business apps via MCP.
One message in, a full agentic application out: website and MCP app, live. Built from any AI client.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI agents to render interactive user interfaces such as forms, dashboards, charts, tables, and wizards directly in MCP-compatible clients. Supports structured data collection and richer interactions beyond text responses.6MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to generate and serve ephemeral, interactive user interfaces over MCP through natural language descriptions.41Apache 2.0
- AlicenseAqualityAmaintenanceHand a human a rich interactive UI by URL from any MCP client and get structured data back — forms, approvals, surveys, pickers, editable lists. Round-trip human-in-the-loop for agents.262 npm7MIT
- AlicenseAqualityBmaintenanceHand a human a rich interactive UI by URL from any MCP client and get structured data back: forms, approvals, surveys, pickers, editable lists. Round-trip human-in-the-loop for agents.201MIT