Integrations
Provides cross-platform support for Linux environments, allowing LLMs to interact directly with users on their local Linux machines.
Supports running on macOS with specific recommendations for Terminal.app settings to ensure a smooth experience with the interactive MCP server.
Implements the Model Context Protocol (MCP) server in Node.js, allowing seamless integration with the local operating system for displaying notifications and command-line prompts.
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.
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 to the args
array after "--"
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):
Example with Custom Timeout (60s):
Usage with VS Code
Add the following minimal configuration to your User Settings (JSON) file or .vscode/mcp.json
:
macOS Recommendations
For a smoother experience on macOS using the default Terminal.app
, consider these profile settings:
- (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.
- (Advanced Tab): Under Input (Terminal > Settings > Profiles > [Your Profile] > Advanced), uncheck the option "Delete sends Control-H". By default, macOS Terminal sends Control-H (ASCII Backspace) when you press Delete. Unchecking this might help in applications that expect a different sequence, though achieving a specific sequence like
\033[3~
(often needed for forward delete) might still require other configurations or terminal alternatives.
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.json
for version compatibility. - pnpm: Used for package management. Install via
npm install -g pnpm
after installing Node.js.
Installation (Developers)
- Clone the repository:Copy
- Install dependencies:Copy
Running the Application (Developers)
Command-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 to the args
array after a "--"
separator (see "Client Configuration" examples).
Option | Alias | Description |
---|---|---|
--timeout | -t | Sets the default timeout (in seconds) for user input prompts. Defaults to 30 seconds. |
--disable-tools | -d | Disables specific tools or groups (comma-separated list). Prevents the server from advertising or registering them. Options: request_user_input , message_complete_notification , intensive_chat . |
Example: Setting multiple options in the client config args
array:
Development Commands
- Build:
pnpm build
- Lint:
pnpm lint
- Format:
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:
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).
You must be authenticated.
local-only server
The server can only run on the client's local machine because it depends on local resources.
Tools
interactive-mcp