interactive-mcp
The interactive-mcp server facilitates interactive communication between LLMs and users via OS-level features:
Request User Input: Prompt users for information via pop-up windows, with support for predefined options, useful for clarification or confirmation
Send Notifications: Alert users when a message or task is completed
Intensive Chat: Start, manage, and end persistent command-line chat sessions for gathering sequential user input efficiently
Customizable Settings: Configure timeouts (default: 30 seconds) and disable specific tools as needed
Cross-Platform: Works across Windows, macOS, and Linux
Integration: Compatible with Claude Desktop, Cursor, VS Code, and other MCP clients
Supports running the MCP server on Linux platforms, enabling OS-level interactions like notifications and command-line prompts
Supports macOS-specific optimizations with Terminal.app profile settings for improved window management when the MCP server starts and stops
Provides a Model Context Protocol server that runs locally alongside MCP clients, with direct access to the user's operating system for notifications and interactive prompts
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., "@interactive-mcpask the user which programming language they prefer for this project"
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.

interactive-mcp
A MCP Server implemented in Node.js/TypeScript, facilitating interactive communication between LLMs and users. Note: This server is designed to run locally alongside the MCP client (e.g., Claude Desktop, VS Code), as it needs direct access to the user's operating system to display notifications and command-line prompts.
(Note: This project is in its early stages.)
Want a quick overview? Check out the introductory blog post: Stop Your AI Assistant From Guessing — Introducing interactive-mcp
Demo Video |
|
Tools
This server exposes the following tools via the Model Context Protocol (MCP):
request_user_input: Asks the user a question and returns their answer. Can display predefined options.message_complete_notification: Sends a simple OS notification.start_intensive_chat: Initiates a persistent command-line chat session.ask_intensive_chat: Asks a question within an active intensive chat session.stop_intensive_chat: Closes an active intensive chat session.
Related MCP server: MCP Server TypeScript Template
Demo
Here are demonstrations of the interactive features:
Normal Question | Completion Notification |
|
|
Intensive Chat Start | Intensive Chat End |
|
|
Usage Scenarios
This server is ideal for scenarios where an LLM needs to interact directly with the user on their local machine, such as:
Interactive setup or configuration processes.
Gathering feedback during code generation or modification.
Clarifying instructions or confirming actions in pair programming.
Any workflow requiring user input or confirmation during LLM operation.
Client Configuration
This section explains how to configure MCP clients to use the interactive-mcp server.
By default, user prompts will time out after 30 seconds. You can customize server options like timeout or disabled tools by adding command-line flags directly to the args array when configuring your client.
Please make sure you have the npx command available.
Usage with Claude Desktop / Cursor
Add the following minimal configuration to your claude_desktop_config.json (Claude Desktop) or mcp.json (Cursor):
{
"mcpServers": {
"interactive": {
"command": "npx",
"args": ["-y", "interactive-mcp"]
}
}
}Example with Custom Timeout (30s):
{
"mcpServers": {
"interactive": {
"command": "npx",
"args": ["-y", "interactive-mcp", "-t", "30"]
}
}
}Usage with VS Code
Add the following minimal configuration to your User Settings (JSON) file or .vscode/mcp.json:
{
"mcp": {
"servers": {
"interactive-mcp": {
"command": "npx",
"args": ["-y", "interactive-mcp"]
}
}
}
}macOS Recommendations
For a smoother experience on macOS using the default Terminal.app, consider this profile setting:
(Shell Tab): Under "When the shell exits" (Terminal > Settings > Profiles > [Your Profile] > Shell), select "Close if the shell exited cleanly" or "Close the window". This helps manage windows when the MCP server starts and stops.
Development Setup
This section is primarily for developers looking to modify or contribute to the server. If you just want to use the server with an MCP client, see the "Client Configuration" section above.
Prerequisites
Node.js: Check
package.jsonfor version compatibility.pnpm: Used for package management. Install via
npm install -g pnpmafter installing Node.js.
Installation (Developers)
Clone the repository:
git clone https://github.com/ttommyth/interactive-mcp.git cd interactive-mcpInstall dependencies:
pnpm install
Running the Application (Developers)
pnpm startCommand-Line Options
The interactive-mcp server accepts the following command-line options. These should typically be configured in your MCP client's JSON settings by adding them directly to the args array (see "Client Configuration" examples).
Option | Alias | Description |
|
| Sets the default timeout (in seconds) for user input prompts. Defaults to 30 seconds. |
|
| Disables specific tools or groups (comma-separated list). Prevents the server from advertising or registering them. Options: |
Example: Setting multiple options in the client config args array:
// Example combining options in client config's "args":
"args": [
"-y", "interactive-mcp",
"-t", "30", // Set timeout to 30 seconds
"--disable-tools", "message_complete_notification,intensive_chat" // Disable notifications and intensive chat
]Development Commands
Build:
pnpm buildLint:
pnpm lintFormat:
pnpm format
Guiding Principles for Interaction
When interacting with this MCP server (e.g., as an LLM client), please adhere to the following principles to ensure clarity and reduce unexpected changes:
Prioritize Interaction: Utilize the provided MCP tools (
request_user_input,start_intensive_chat, etc.) frequently to engage with the user.Seek Clarification: If requirements, instructions, or context are unclear, always ask clarifying questions before proceeding. Do not make assumptions.
Confirm Actions: Before performing significant actions (like modifying files, running complex commands, or making architectural decisions), confirm the plan with the user.
Provide Options: Whenever possible, present the user with predefined options through the MCP tools to facilitate quick decisions.
You can provide these instructions to an LLM client like this:
# Interaction
- Please use the interactive MCP tools
- Please provide options to interactive MCP if possible
# Reduce Unexpected Changes
- Do not make assumption.
- Ask more questions before executing, until you think the requirement is clear enough.Contributing
Contributions are welcome! Please follow standard development practices. (Further details can be added later).
License
MIT (See LICENSE file for details - if applicable, or specify license directly).
Available Tools
5 toolsask_intensive_chatA
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | ID of the intensive chat session | |
| question | Yes | Question to ask the user | |
| predefinedOptions | No | Predefined options for the user to choose from (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well: it discloses that the tool requires a session ID from another tool, supports predefined options, returns user answers or non-response indicators, should be used repeatedly within sessions, maintains chat history, and has specific best practices. It doesn't mention rate limits, authentication needs, or error conditions, but covers most behavioral aspects well for a chat tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections, but is overly verbose with redundant information. The core purpose is stated upfront, but sections like <features> largely repeat what's in other parts. While organized, it could be more concise by eliminating duplication between sections like <importantNotes>, <features>, and <parameters>.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations and no output schema, the description provides substantial context: it explains the tool's role in a workflow, prerequisites, usage patterns, behavioral characteristics, and best practices. The main gap is the lack of output description (what format the response takes), but given the tool's relatively simple purpose and good behavioral coverage, it's mostly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters thoroughly. The description's <parameters> section repeats what's in the schema without adding significant semantic context beyond what's already covered. The <examples> section provides some usage context but doesn't fundamentally enhance parameter understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Ask a new question in an active intensive chat session previously started with 'start_intensive_chat'' - this provides a specific verb ('Ask'), resource ('question'), and context ('intensive chat session'), clearly distinguishing it from sibling tools like 'start_intensive_chat' and 'stop_intensive_chat'. The purpose is immediately clear in the first sentence.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides extensive guidance through dedicated sections: <whenToUseThisTool> lists four specific scenarios, <importantNotes> explicitly states when to use ('Use this repeatedly within the same response message after 'start_intensive_chat' until all questions are asked'), and the description itself mentions the prerequisite ('Requires a valid session ID from 'start_intensive_chat''). This gives clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
message_complete_notificationA
| Name | Required | Description | Default |
|---|---|---|---|
| projectName | Yes | Notification title | |
| message | Yes | Notification body |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behavioral traits: the tool triggers cross-platform OS notifications, is mandatory for completion signaling, and must be called exactly once per response. It also hints at best practices like keeping messages concise. However, it doesn't mention potential side effects like notification persistence or user interaction requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (description, importantNotes, whenToUseThisTool, etc.), but it is verbose for a simple notification tool. Some sections (like features and bestPractices) could be condensed or integrated. While all content is relevant, it could be more front-loaded and concise without losing clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (2 simple parameters, no output schema, no annotations), the description is highly complete. It covers purpose, mandatory usage, parameters with semantic context, examples, and behavioral notes. For a notification tool, this provides all necessary context for an agent to invoke it correctly without needing additional structured data.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds meaningful context beyond the schema: it explains that projectName 'identifies the context/project making the notification' and 'appears in notification title,' while message is 'the specific notification text' and 'appears in the body.' This clarifies the semantic role and UI placement of each parameter, elevating the score above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool's purpose: 'Notify when a response has completed' and 'signal completion to the user.' It clearly distinguishes this as a notification/signaling tool, unlike its siblings which are chat/input tools (ask_intensive_chat, request_user_input, etc.). The verb 'notify' and resource 'completion' are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit, detailed guidance on when to use this tool: 'once at the end of each and every message,' 'when you've completed answering a user's query,' 'when you've finished executing a task,' etc. It also specifies exclusions: 'Do not forget this step' and 'ONLY use this tool exactly once per message.' This leaves no ambiguity about usage context or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_user_inputA
| Name | Required | Description | Default |
|---|---|---|---|
| projectName | Yes | Identifies the context/project making the request (used in prompt formatting) | |
| message | Yes | The specific question for the user (appears in the prompt) | |
| predefinedOptions | No | Predefined options for the user to choose from (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure and does so comprehensively. It describes timeout behavior ('Returns user response or timeout notification (timeout defaults to 60 seconds)'), context maintenance ('Maintains context across user interactions'), error handling ('Handles empty responses gracefully'), and formatting behavior ('Properly formats prompt with project context'). This goes well beyond basic functionality disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (<importantNotes>, <whenToUseThisTool>, etc.), but it's overly verbose with redundant information across sections. The core purpose is stated multiple times, and some sections (like <features>) repeat information that could be more efficiently integrated. While organized, it could be more concise without losing clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (interactive user input with timeout handling) and the absence of both annotations and output schema, the description provides exceptional completeness. It covers purpose, usage scenarios, behavioral characteristics, parameters, examples, and best practices. The extensive <examples> section and detailed behavioral descriptions in <features> compensate for the lack of structured metadata, making this fully self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
While schema description coverage is 100% (providing baseline 3), the description adds significant value through the <parameters> section that explains each parameter's purpose and usage context. It clarifies that projectName is 'used in prompt formatting' and message 'appears in the prompt,' and provides examples showing how these parameters work together. However, it doesn't explain format constraints or edge cases beyond what's in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Send a question to the user via a pop-up command prompt.' It specifies the exact action (send a question) and mechanism (pop-up command prompt), and distinguishes itself from sibling tools like ask_intensive_chat by focusing on discrete user queries rather than ongoing chat sessions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides extensive, explicit guidance on when to use this tool versus alternatives. It includes a dedicated <whenToUseThisTool> section with 10 specific scenarios, emphasizes proactive questioning over assumptions, and explicitly states 'Do not ask the question if you have another tool that can answer the question' in the best practices section, providing clear alternative selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_intensive_chatA
| Name | Required | Description | Default |
|---|---|---|---|
| sessionTitle | Yes | Title for the intensive chat session |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key traits: it opens a persistent console window, returns a session ID for later use, requires closure with 'stop_intensive_chat', and maintains state between questions. It also mentions configurable timeouts and chat history visibility. However, it lacks details on error handling or what happens if the session is not closed properly, preventing a perfect score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is structured with sections like '<importantNotes>' and '<whenToUseThisTool>', which aids readability, but it is overly verbose and repetitive. For example, the purpose is stated multiple times across sections, and some points (e.g., usefulness for brainstorming) are reiterated. While the structure helps, the content could be more streamlined to avoid redundancy, making it less concise than ideal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (initiating a persistent session with dependencies on sibling tools) and no output schema, the description is largely complete. It covers the purpose, usage guidelines, behavioral traits, parameters, and examples. However, it lacks details on the output (e.g., format of the session ID) and does not fully address edge cases like session timeouts or failure scenarios, which slightly reduces completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, with the parameter 'sessionTitle' fully documented in the schema. The description adds minimal value beyond the schema by reiterating the parameter in the '<parameters>' section and providing an example. It does not explain why the title is important or how it affects the session, so it meets the baseline of 3 for high schema coverage without significant enhancement.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Start an intensive chat session for gathering multiple answers quickly from the user.' It specifies the verb ('start'), resource ('intensive chat session'), and distinguishes it from sibling tools like 'ask_intensive_chat' and 'stop_intensive_chat' by explaining it initiates a persistent session. The description avoids tautology by elaborating on the session's nature and use cases.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool vs. alternatives. The '<whenToUseThisTool>' section lists specific scenarios (e.g., 'more than 2-3 questions,' 'multi-step process'), and the '<bestPractices>' section advises against using it when other tools can answer questions (e.g., 'prefer to use other tools to find the answer'). It also clearly outlines the workflow with sibling tools, specifying that 'ask_intensive_chat' must be used for subsequent questions and 'stop_intensive_chat' for closure.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stop_intensive_chatA
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | ID of the intensive chat session to stop |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes what the tool does beyond the basic 'stop' action: closes the console window, frees system resources, marks the session as complete, and gracefully handles cleanup. However, it doesn't mention potential side effects like whether data is preserved or if the session can be restarted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
While the information is well-structured with clear sections, the description is verbose with redundant information across sections. The core purpose could be communicated more efficiently without repeating the same guidance in <description>, <importantNotes>, <whenToUseThisTool>, and <bestPractices> sections.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with no annotations and no output schema, the description provides comprehensive context about the tool's role in the workflow, behavioral effects, and usage patterns. It covers the essential information an agent needs to use this tool correctly within the intensive chat flow, though it could benefit from more detail about error conditions or return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100% (the single parameter 'sessionId' is fully documented in the schema), so the baseline is 3. The description adds minimal value beyond the schema by repeating the parameter information in the <parameters> section, but doesn't provide additional context about sessionId format, validation, or sourcing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('stop and close') and resource ('active intensive chat session'). It explicitly distinguishes this tool from its sibling 'ask_intensive_chat' by stating it must be called after using that tool, and differentiates from 'start_intensive_chat' by being the final step in the flow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool versus alternatives through the <whenToUseThisTool> section, which lists five specific scenarios. It also clearly states this should be the final step after 'ask_intensive_chat' and typically at the end of the response message where 'start_intensive_chat' was called, creating clear sequencing rules.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
5 tool updates
- First observed
ask_intensive_chat - First observed
message_complete_notification - First observed
request_user_input - First observed
start_intensive_chat - First observed
stop_intensive_chat
TDQS
Most tools have distinct purposes: start/stop/ask_intensive_chat form a clear lifecycle for intensive chat sessions, message_complete_notification is for signaling completion, and request_user_input is for general pop-up prompts. However, ask_intensive_chat and request_user_input both ask questions to the user, which could cause some confusion about when to use each, though their contexts differ (session-based vs. standalone).
All tool names follow a consistent snake_case pattern with clear verb_noun structure: start_intensive_chat, ask_intensive_chat, stop_intensive_chat, message_complete_notification, request_user_input. The naming is predictable and readable throughout the set.
With 5 tools, this server is well-scoped for interactive user input scenarios. It covers the core needs: starting, managing, and stopping intensive chat sessions, sending standalone user prompts, and signaling completion. Each tool has a clear role without being overly complex or insufficient.
The tool set provides complete coverage for interactive user input workflows. It supports both intensive chat sessions (with start, ask, and stop tools) and standalone user prompts, plus a notification tool for completion signaling. There are no obvious gaps; agents can handle various interactive scenarios effectively.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
MCP server for AI dialogue using various LLM models via AceDataCloud
A TypeScript MCP server for Home Assistant, enabling programmatic management of entities, automati…
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Related MCP Servers
- TypeScriptMIT
- FlicenseNot gradedqualityDmaintenanceA demonstration MCP server built in TypeScript that shows how to implement stdio-based communication for integration with MCP clients. Serves as a template for building custom MCP servers with strong typing and maintainability.-
- AlicenseNot gradedqualityCmaintenanceComplete Model Context Protocol (MCP) server designed to facilitate seamless interaction between Large Language Models (LLMs) and end-users. It provides a robust set of tools for notifications, confirmations, selections, and text inputs, supporting multiple rendering modes including Console, GUI, and Telegram Bot.2MIT
- AlicenseDqualityDmaintenanceA TypeScript MCP server demo supporting local Stdio and remote Streamable HTTP, demonstrating tool invocation for AI agents.2MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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/mikeysrecipes/interactive-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server




