{"id":33916714,"url":"https://github.com/doublej/consult-user-mcp","last_synced_at":"2026-05-21T23:01:41.109Z","repository":{"id":326419402,"uuid":"1104106068","full_name":"doublej/consult-user-mcp","owner":"doublej","description":"mcp server to consult the user using popup modals","archived":false,"fork":false,"pushed_at":"2026-02-24T11:33:09.000Z","size":55810,"stargazers_count":33,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-24T14:49:02.375Z","etag":null,"topics":["claude-code","codex","gemini-cli"],"latest_commit_sha":null,"homepage":"https://doublej.github.io/consult-user-mcp/","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/doublej.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-25T19:01:28.000Z","updated_at":"2026-02-24T11:32:47.000Z","dependencies_parsed_at":null,"dependency_job_id":"d511eb6d-aa62-4d8f-9540-56b7e215e664","html_url":"https://github.com/doublej/consult-user-mcp","commit_stats":null,"previous_names":["doublej/consult-user-mcp"],"tags_count":33,"template":false,"template_full_name":null,"purl":"pkg:github/doublej/consult-user-mcp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/doublej%2Fconsult-user-mcp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/doublej%2Fconsult-user-mcp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/doublej%2Fconsult-user-mcp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/doublej%2Fconsult-user-mcp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/doublej","download_url":"https://codeload.github.com/doublej/consult-user-mcp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/doublej%2Fconsult-user-mcp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30246872,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-08T05:41:50.788Z","status":"ssl_error","status_checked_at":"2026-03-08T05:41:39.075Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["claude-code","codex","gemini-cli"],"created_at":"2025-12-12T07:28:07.749Z","updated_at":"2026-03-08T06:01:47.606Z","avatar_url":"https://github.com/doublej.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Consult User MCP\n\nNative dialog system for MCP (Model Context Protocol) servers. **macOS and Windows.**\n\nKeep working while your AI agent runs autonomously. When it needs your input, a native dialog appears - answer the question, and the agent continues. No need to watch the terminal. Snooze if you're busy, or send feedback to redirect the agent.\n\n[See screenshots and full documentation →](https://doublej.github.io/consult-user-mcp/)\n\n## Quick Install\n\n**macOS:**\n```bash\ncurl -sSL https://raw.githubusercontent.com/doublej/consult-user-mcp/main/install.sh | bash\n```\n\n**Windows:**\nDownload the installer from [Releases](../../releases) and run it. First-run wizard automatically configures Claude Code.\n\n## Contents\n\n- [Install](#install)\n  - [macOS](#macos)\n  - [Windows](#windows)\n  - [MCP Server Only](#mcp-server-only)\n- [Uninstall](#uninstall)\n  - [macOS uninstaller](#macos-uninstaller)\n  - [Windows uninstaller](#windows-uninstaller)\n- [Build from Source](#build-from-source)\n- [Structure](#structure)\n- [MCP Tools](#mcp-tools)\n- [Architecture](#architecture)\n\n## Install\n\n### macOS\n\n**Quick install:**\n```bash\ncurl -sSL https://raw.githubusercontent.com/doublej/consult-user-mcp/main/install.sh | bash\n```\n\n**Manual install:**\n1. Download **Consult User MCP.app.zip** from [Releases](../../releases) (look for `macos/vX.Y.Z`)\n2. Unzip and drag to `/Applications`\n3. Remove the quarantine flag (required for non-notarized apps):\n   ```bash\n   xattr -cr \"/Applications/Consult User MCP.app\"\n   ```\n4. Launch the app - a menu bar icon appears\n5. Click the menu bar icon and use **Install for Claude Code** to automatically configure the MCP server\n\n### Windows\n\n1. Download the installer from [Releases](../../releases) (look for `windows/vX.Y.Z`)\n2. Run the installer - it configures everything automatically\n3. The system tray app launches at startup\n\nThe first-run wizard automatically configures Claude Code. Settings, snooze state, and history are stored in `%APPDATA%\\ConsultUserMCP\\`.\n\n### MCP Server Only\n\nIf you don't want the tray app, you can run the MCP server standalone:\n\n```bash\ngit clone https://github.com/doublej/consult-user-mcp.git\ncd consult-user-mcp/mcp-server\nbun install \u0026\u0026 bun run build\n```\n\nAdd to your MCP config:\n\n```json\n{\n  \"mcpServers\": {\n    \"consult-user-mcp\": {\n      \"command\": \"node\",\n      \"args\": [\"/path/to/consult-user-mcp/mcp-server/dist/index.js\"]\n    }\n  }\n}\n```\n\n## Uninstall\n\n### macOS uninstaller\n\n```bash\ncurl -sSL https://raw.githubusercontent.com/doublej/consult-user-mcp/main/uninstall.sh | bash\n```\n\nOptional flags:\n- `--keep-data` keeps `~/Library/Application Support/ConsultUserMCP` and `~/.config/consult-user-mcp/projects.json`\n- `--dry-run` prints planned changes without modifying files\n\n### Windows uninstaller\n\nYou can uninstall from **Installed apps** in Windows settings.\n\nFor full cleanup (MCP entries + base prompt block + app files), run:\n\n```powershell\npowershell -ExecutionPolicy Bypass -File .\\uninstall.ps1\n```\n\nOptional flags:\n- `-KeepData` keeps `%APPDATA%\\ConsultUserMCP` and `%USERPROFILE%\\.config\\consult-user-mcp\\projects.json`\n- `-DryRun` prints planned changes without modifying files\n\n## Build from Source\n\n**macOS:**\n```bash\nbun install\nbun run build:bundle   # Builds and installs to /Applications\n```\n\n**Windows:** See [CLAUDE.md](CLAUDE.md) for Windows build instructions (requires .NET SDK 8.0 and Velopack).\n\n## Structure\n\n```\nconsult-user-mcp/\n├── mcp-server/          # MCP server (TypeScript, cross-platform)\n├── dialog-cli/          # macOS: Swift CLI for dialogs\n├── sketch-cli/          # macOS: Swift CLI for layout editor\n├── macos-app/           # macOS: SwiftUI menu bar app\n├── dialog-cli-windows/  # Windows: WPF CLI for dialogs\n├── windows-app/         # Windows: WPF system tray app\n├── docs/                # Documentation site (SvelteKit)\n└── scripts/             # Build and release scripts\n```\n\n## MCP Tools\n\n| Tool | Purpose |\n|------|---------|\n| `ask` | Interactive dialog (`type`: `confirm`, `pick`, `text`, or `form`) |\n| `notify` | Fire-and-forget notification |\n| `tweak` | Real-time numeric value adjustment with live file writes |\n\n### Timeout and Snooze\n\nAll interactive dialogs (`ask`, `tweak`) have a **10-minute timeout**.\n\n**Snooze:** Users can snooze a dialog for 1-60 minutes. When snoozed:\n- Returns `{ snoozed: true, remainingSeconds: S }`\n- All subsequent calls return the same until snooze expires\n- Agent should `sleep` for `remainingSeconds`, then retry\n\n**Feedback:** Users can send text feedback instead of answering. Returns `{ feedbackText: \"...\" }` for the agent to adjust its approach.\n\n## Architecture\n\n```mermaid\nflowchart TB\n    subgraph Agent[\"AI Agent (Claude Code, etc.)\"]\n        A[Tool Call]\n    end\n\n    subgraph MCP[\"MCP Server (Node.js)\"]\n        B[index.ts]\n        C{Platform?}\n        D[SwiftDialogProvider]\n        E[WindowsDialogProvider]\n    end\n\n    subgraph macOS[\"macOS\"]\n        F[dialog-cli Swift]\n        G[SwiftUI Window]\n    end\n\n    subgraph Windows[\"Windows\"]\n        H[dialog-cli.exe WPF]\n        I[WPF Window]\n    end\n\n    subgraph User[\"User Response\"]\n        J[Answer]\n        K[Snooze]\n        L[Feedback]\n    end\n\n    A --\u003e|\"stdio (JSON-RPC)\"| B\n    B --\u003e C\n    C --\u003e|\"darwin\"| D\n    C --\u003e|\"win32\"| E\n    D --\u003e|\"execFile\"| F\n    E --\u003e|\"execFile\"| H\n    F --\u003e G\n    H --\u003e I\n    G --\u003e J \u0026 K \u0026 L\n    I --\u003e J \u0026 K \u0026 L\n    J \u0026 K \u0026 L --\u003e|\"JSON stdout\"| B\n    B --\u003e|\"stdio\"| A\n\n    style Agent fill:#e1f5fe\n    style MCP fill:#fff3e0\n    style macOS fill:#f3e5f5\n    style Windows fill:#e3f2fd\n    style User fill:#e8f5e9\n```\n\n### Flow\n\n1. **Agent calls tool** - Claude Code (or any MCP client) invokes `ask`, `notify`, or `tweak`\n2. **MCP Server receives** - TypeScript server validates input with Zod schemas\n3. **Platform dispatch** - Server spawns the native CLI for the current platform\n4. **Dialog shown** - Native window appears (SwiftUI on macOS, WPF on Windows)\n5. **User responds** - Answer, snooze, or feedback\n6. **Result returned** - JSON flows back through CLI → MCP Server → Agent\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdoublej%2Fconsult-user-mcp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdoublej%2Fconsult-user-mcp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdoublej%2Fconsult-user-mcp/lists"}