ask-user
Click on "Install 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., "@ask-userAsk me questions about my project setup"
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.
Ask User MCP App
An MCP App that enables AI agents to ask users multiple questions with tab-based navigation, multiple-choice options, multi-select support, and custom text input - all rendered inline in the conversation.
Features
Multi-Question Tabs: Ask multiple questions at once, displayed as navigable tabs
Keyboard Navigation: Tab/Shift+Tab to navigate tabs, Arrow keys for options, Enter to select/submit
Next/Submit Button: Each question has a Next button to advance to the next tab (or "Review & Submit" on the last question)
Multiple Choice Questions: Present 2-4 options per question
Single & Multi-Select: Support both radio-button style (single) and checkbox style (multi) selection
Custom "Other" Input: Optional text input for answers not covered by predefined options
Skip Questions: Non-required questions can be skipped
Theme Support: Automatically adapts to host's light/dark theme
Dual Transport: Works with both HTTP (web clients) and stdio (desktop clients)
Installation in Claude.ai (Hosted)
Use the hosted MCP server directly with Claude's connector feature:
Open Claude.ai and go to Settings → Connectors
Click Add custom connector and enter:
Remote MCP server URL:
https://ask-user-mcp-app-seven.vercel.app/mcp
Browse the hosted landing page at ask-user-mcp-app-seven.vercel.app for a quick overview of the tool schema and install steps. 3. Save and start a new conversation
The ask_user tool will now be available to Claude.
Related MCP server: mcp-interactive-ui-server
Installation
Or clone and build locally:
git clone https://github.com/anthropics/ask-user-mcp-app
cd ask-user-mcp-app
npm install
npm run buildUsage
Local Development (stdio)
Build and run locally with Claude Desktop:
# Clone and build
git clone https://github.com/anthropics/ask-user-mcp-app
cd ask-user-mcp-app
npm install
npm run buildAdd to your claude_desktop_config.json (use the absolute path to your clone):
{
"mcpServers": {
"ask-user": {
"command": "node",
"args": ["/absolute/path/to/ask-user-mcp-app/dist/main.js", "--stdio"]
}
}
}Tool Schema
The ask_user tool accepts a questions array containing one or more questions to display as tabs:
Top-Level Parameters
Parameter | Type | Required | Description |
| array | Yes | Array of question objects (minimum 1) |
Question Object Parameters
Parameter | Type | Required | Description |
| string | Yes | The question to ask (also used as unique identifier) |
| string | Yes | Short label displayed as tab name (max 12 chars) |
| array | Yes | 2-4 choices, each with |
| boolean | No | Allow multiple selections (default: false) |
| boolean | No | Include "Other" text input option (default: true) |
| boolean | No | Whether this question must be answered (default: false) |
Example Tool Call
{
"name": "ask_user",
"arguments": {
"questions": [
{
"question": "Which frontend framework would you like to use for this project?",
"header": "Framework",
"options": [
{ "label": "React", "value": "react", "description": "Popular library with component-based architecture" },
{ "label": "Vue", "value": "vue", "description": "Progressive framework for simplicity" },
{ "label": "Svelte", "value": "svelte", "description": "Compiler-based, highly optimized" }
],
"required": true
},
{
"question": "How should we handle authentication?",
"header": "Auth Method",
"options": [
{ "label": "OAuth 2.0", "value": "oauth", "description": "Industry standard, supports SSO" },
{ "label": "JWT", "value": "jwt", "description": "Stateless, good for APIs" },
{ "label": "Session-based", "value": "session", "description": "Traditional, server-side state" }
]
},
{
"question": "Which testing frameworks should we include?",
"header": "Testing",
"options": [
{ "label": "Jest", "value": "jest", "description": "Popular testing framework" },
{ "label": "Vitest", "value": "vitest", "description": "Fast, Vite-native testing" },
{ "label": "Playwright", "value": "playwright", "description": "E2E testing" }
],
"multiSelect": true
}
]
}
}Response Format
When the user submits their answers, the response is formatted as:
Which frontend framework would you like to use for this project? -> React
How should we handle authentication? -> JWT
Which testing frameworks should we include? -> Vitest, PlaywrightKeyboard Navigation
Key | Action |
Tab / Shift+Tab | Navigate between question tabs |
Arrow Left / Right | Navigate between question tabs |
Arrow Up / Down | Navigate between options in current question |
Enter / Space | Select current option |
Enter (on Submit tab) | Submit all answers |
Development
Commands
Command | Description |
| Build server and UI |
| Build only server (TypeScript) |
| Build only UI (Vite + React) |
| Start HTTP server |
| Build and serve |
| Development mode with tsx |
Testing Locally
Start the server:
npm startUse the basic-host from the ext-apps repo:
cd ext-apps/examples/basic-host SERVERS='["http://localhost:3001/mcp"]' npm startOpen http://localhost:8080 and test the
ask_usertool
Architecture
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Host Client │────▶│ MCP Server │────▶│ React UI │
│ (Claude, etc.) │ │ (server.ts) │ │ (mcp-app.tsx) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │ │
│ Tool call with │ Serves bundled │
│ ui/resourceUri │ HTML via resource │
│ │ │
└───────────────────────┴───────────────────────┘
postMessage communicationKey Files
server.ts: Registers the
ask_usertool andui://resourcemain.ts: Entry point supporting HTTP and stdio transports
mcp-app.tsx: React UI with multi-question state management
vite.config.ts: Bundles UI into single HTML file via
vite-plugin-singlefile
UI Components
Component | Purpose |
| Pill-style tab navigation with progress indicator |
| Renders individual question with refined card styling |
| Review page showing all answers with staggered animations |
| Elegant option cards with smooth transitions |
| Custom text input with auto-focus behavior |
Design System
The UI uses a warm, Claude-native color palette for seamless integration:
Surfaces: Warm cream backgrounds (
#faf8f5,#f5f1eb)Accent: Terra cotta (
#c4704b) for selections and CTAsText: Warm gray hierarchy with subtle undertones
Interactions: Smooth 150ms transitions, focus rings, hover states
Dark mode: Full support with warm dark palette
Navigation Hooks
Hook | Purpose |
| Handles Tab/Shift+Tab and arrow key navigation between tabs |
| Handles arrow key navigation and Enter/Space selection within options |
Dependencies
@modelcontextprotocol/ext-apps- MCP Apps SDK@modelcontextprotocol/sdk- Core MCP SDKreact/react-dom- UI frameworkexpress/cors- HTTP serverzod- Schema validationtailwindcss- Styling
License
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ergunsh/ask-user-mcp-app'
If you have feedback or need assistance with the MCP directory API, please join our Discord server