Native dialogs for MCP agents

An MCP server that surfaces agent checkpoints as native dialogs. Respond to questions, snooze for later, or redirect the agent without switching windows.

macOS Windows
curl -sSL https://raw.githubusercontent.com/doublej/consult-user-mcp/main/install.sh | bash

macOS one-liner · Windows & manual install

See It In Action

Click through scenarios to see how agents guide users through decisions—from cooking to coding to troubleshooting.

Click a scenario to see how Claude asks for your input

1 of 5
Found 3 type errors in auth.ts — how to proceed?
Fix all now
Fix critical only
Skip with @ts-ignore
↑↓ navigate Space select next
Terminal
[MCP] ask(type: "form", mode: "wizard", questions: 5)
$ Question 1/5: "Found 3 type errors in auth.ts — how to proceed?"
$ Options: ["Fix all now","Fix critical only","Skip with @ts-ignore"]
[...] Waiting for user input...

Dialog Types

Multiple tool types for different interaction patterns.

?
Confirmation
Are you sure you want to proceed with this action?
confirm Esc cancel S snooze
ask type=confirm
Which options do you want to enable?
Dark mode
Notifications
Auto-save
confirm Esc cancel S snooze
ask type=pick
2 of 3
Select your framework
React
Svelte
Vue
confirm Esc cancel S snooze
ask type=form
Input
Enter your project name
my-project
confirm Esc cancel S snooze
ask type=text

Snooze and Feedback

Every dialog includes options beyond simple yes/no responses.

Deploy to production now?
Ask me again in:
confirm Esc cancel S snooze F feedback

Snooze

Defer the dialog from 1 minute to 1 hour. The agent automatically retries when time is up.

Deploy to production now?
Send feedback to agent:
confirm Esc cancel S snooze F feedback

Feedback

Send text feedback to redirect the agent without fully canceling the current operation.

Comparison

How consult-user-mcp compares to other human-in-the-loop MCP servers.

consult-user-mcp macOS / Windows interactive-mcp macOS / Linux / Windows 332 starsask-user-questions macOS / Linux 37 starsHITL GUI macOS / Linux / Windows 130 starsHITL Discord Cross-platform (Discord) 215 starsmcp-interactive Cross-platform 2 stars
Dialog Types
Yes / No confirmation
Single choiceUp to 20 optionsPredefined options2–10 optionsRadio buttonsPredefined options
Multi-selectCheckboxes
Free text inputDedicated toolVia "Other" optionDiscord message
Multi-line textDedicated tool
Hidden / password input
Multi-question wizardWizard + accordionQuestion sets
Typed input (int / float)
Markdown in promptsDiscord native
System notificationInfo message tool
UX & Interaction
UI approachNative SwiftUI / WPFAppleScript / zenity / PowerShellTerminal CLITkinter GUIDiscord threadsElectron popup
Snooze / defer1 min – 1 hr
Feedback to redirect agentRejection + reason
Persistent chat modeIntensive chat
Remote answeringSSHPhone / Discord
Question queueing
Multi-agent support
Configuration
Menu bar app
Settings GUI
Baseprompt injectionRecommended rules
Dialog position configLeft / right / center
Configurable timeout10 minCLI flag (30s default)5 minCLI flag (60s default)
Disable specific toolsCLI flag
Dialog historyDiscord thread
Health check tool
Install
StackSwift + C# + TSTypeScriptTypeScriptPythonRustJS / HTML
Actively maintained
Install commandcurl -sSL https://raw.githubusercontent.com/doublej/consult-user-mcp/main/install.sh | bashnpx -y interactive-mcpnpx auq-mcp-server serveruvx hitl-mcp-servercargo install --git https://github.com/KOBA789/human-in-the-loop.gitnpx mcp-interactive

Star counts as of February 2026. Active = committed to in last 3 months.

Real Questions from Development

28 actual questions from building this MCP server and other projects. Scroll to see how Claude Code uses these dialogs during real development.

Which dialog types should we test next?
Confirmation
Multiple choice
Questions
Text input
confirm Esc cancel S snooze
Testing the newly built history feature
?
Confirmation
This is a test confirmation dialog. Does the history feature work correctly?
confirm Esc cancel S snooze
Validating new functionality
Input
What improvements would you like to see in the history detail view?
i dont see new history showing up
confirm Esc cancel S snooze
Bug report via free-form text
Which reflection approach would you prefer?
CSS gradient (simple fade)
DOM duplicate with perspective
No reflection (cleaner look)
confirm Esc cancel S snooze
Designing the homepage dialog gallery
For the text info below covers - should it also be reflected?
Cover only (simpler)
Cover + text (full reflection)
No reflection at all
confirm Esc cancel S snooze
Refining the visual design
What version for this release?
1.3.3 (patch - bug fix)
1.4.0 (minor - new feature)
2.0.0 (major - breaking change)
confirm Esc cancel S snooze
Semantic versioning decision
What should replace the emoji icons?
SVG icons from icon library
Custom designed icons
Remove icons entirely
confirm Esc cancel S snooze
UI simplification choice
How should we structure the single source of truth for releases?
releases.json feeds everything
Separate files synced manually
Git tags as source
confirm Esc cancel S snooze
Documentation architecture decision
How should we handle the CHANGELOG.md vs releases.json redundancy?
Auto-generate CHANGELOG.md from releases.json
Keep both, manual sync
Remove CHANGELOG.md entirely
confirm Esc cancel S snooze
Eliminating manual synchronization
Choose your Slack authentication method
xoxc/xoxd - Extract tokens from browser
xoxp - Create Slack app with User OAuth
xoxb - Bot token (limited to invited channels)
confirm Esc cancel S snooze
Configuring Slack MCP integration
The changes add "feedback with partial answers". Should we add test cases for this?
Yes, comprehensive tests
Yes, basic smoke tests
No, skip for now
confirm Esc cancel S snooze
Test coverage prioritization
Where should the invite link be displayed?
Below room code (always visible)
In a collapsible panel
Both places
confirm Esc cancel S snooze
UI placement for multiplayer game
What should the playlist manager do?
Admin UI to create/edit playlists
Import from Spotify API
Auto-generate from music library
confirm Esc cancel S snooze
Planning new feature scope
2 of 3
Which linting/formatting tool?
1 Run verification before commit?
2 Tool: ESLint+Prettier / Biome / None
3 Pre-commit hooks: lefthook / husky / none
confirm Esc cancel S snooze
Project setup configuration wizard
?
Confirmation
Biome crashes on some Svelte files (known bug). Should I exclude .svelte files and use svelte-check instead?
confirm Esc cancel S snooze
Workaround for tooling limitation
How should agents communicate their project context to the app?
New MCP tool parameter on all calls
Environment variable at startup
Use process.cwd() automatically
confirm Esc cancel S snooze
Simplifying the integration
Which feedback service should I set up?
GitHub Issues link (simplest)
Formspree (email notifications)
Custom backend with database
confirm Esc cancel S snooze
User feedback infrastructure
How should the feedback form appear?
Floating button + modal
Link in footer/menu
Dedicated page/route
confirm Esc cancel S snooze
User feedback mechanism design
When clients don't pass project_path, what should happen?
Show badge with "Unknown Project"
No badge (opt-in only)
Use current directory as fallback
confirm Esc cancel S snooze
Default behavior for optional parameter
914 files changed - mostly artist images + playlists. How to proceed?
One big commit (faster)
Smart-commit: separate by type
Manual review: commit selectively
confirm Esc cancel S snooze
Large changeset organization
What's your primary goal for the redesign?
Polished product (Linear, Notion, Raycast)
Keep terminal aesthetic but modernize
Minimal/brutalist design
confirm Esc cancel S snooze
Design direction for app refresh
Color scheme direction?
Light by default with dark mode support
Dark by default with light mode
Only dark mode (no light mode)
confirm Esc cancel S snooze
Accessibility and user preference
The current app has terminal gimmicks: boot sequence, scanlines, ASCII art. Which to keep?
Keep ALL — it's the brand
Keep SOME — tasteful nods
Remove ALL — clean slate
confirm Esc cancel S snooze
Stripping away skeuomorphism
For Svelte 5 component libraries, which direction?
shadcn-svelte — best polished look
Skeleton v3 — full design system
Bits UI — headless primitives only
confirm Esc cancel S snooze
Component library selection
?
Confirmation
For the conversation viewer you want: compact density, collapsible tool calls, card-based messages. Is that right?
confirm Esc cancel S snooze
Confirming UX requirements
You have 5 drafts, but 3 are "Untitled". Which should I create short.io links for?
Only the 2 titled drafts
All 5 drafts (I'll rename later)
None (I'll do it manually)
confirm Esc cancel S snooze
Batch operation scoping
Typography direction?
Sans-serif (Inter, SF Pro)
Keep monospace but refined
Mix: sans for UI, mono for code
confirm Esc cancel S snooze
Balancing personality with polish
2 of 3
How do you like the new history detail view?
1 Feature quality
2 Navigation ease
3 Overall satisfaction
confirm Esc cancel S snooze
Multi-question feedback collection
← Scroll to see more real questions →

Installation

Install the server and tray app for your platform.

curl -sSL https://raw.githubusercontent.com/doublej/consult-user-mcp/main/install.sh | bash

Setup steps

  1. 1
    Run the install command

    Downloads the app from GitHub and moves it to /Applications

  2. 2
    Launch the app

    Open "Consult User MCP" from Applications. A menu bar icon will appear.

  3. 3
    Run the install wizard

    Click the menu bar icon and select "Install Guide". Follow the steps to configure Claude Code or Claude Desktop.

  4. 4
    Restart your MCP client

    Quit and reopen Claude Code (or Claude Desktop) to load the MCP server

  5. 5
    Test it

    Ask Claude a question that requires your input—a dialog should appear

For manual installation or other MCP clients, see the README.

Unsigned software

macOS: This app is not signed with an Apple Developer certificate. On first launch, macOS will show a warning. Right-click the app and select "Open", then click "Open" in the dialog. Windows: SmartScreen may warn about an unidentified publisher. Click "More info" then "Run anyway". You only need to do this once.