Skip to main content
Glama
mikeysrecipes

interactive-mcp

interactive-mcp-main

interactive-mcp

npm version npm downloads GitHub license code style: prettier Platforms GitHub last commit

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

Interactive 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

Normal Question Demo

Completion Notification Demo

Intensive Chat Start

Intensive Chat End

Start Intensive Chat Demo

End Intensive Chat Demo

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.json for version compatibility.

  • pnpm: Used for package management. Install via npm install -g pnpm after installing Node.js.

Installation (Developers)

  1. Clone the repository:

    git clone https://github.com/ttommyth/interactive-mcp.git
    cd interactive-mcp
  2. Install dependencies:

    pnpm install

Running the Application (Developers)

pnpm start

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 directly to the args array (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:

// 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 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:

# 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 tools
ask_intensive_chatA
ParametersJSON Schema
NameRequiredDescriptionDefault
sessionIdYesID of the intensive chat session
questionYesQuestion to ask the user
predefinedOptionsNoPredefined options for the user to choose from (optional)

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness3/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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
ParametersJSON Schema
NameRequiredDescriptionDefault
projectNameYesNotification title
messageYesNotification body

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness3/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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
ParametersJSON Schema
NameRequiredDescriptionDefault
projectNameYesIdentifies the context/project making the request (used in prompt formatting)
messageYesThe specific question for the user (appears in the prompt)
predefinedOptionsNoPredefined options for the user to choose from (optional)

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness3/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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
ParametersJSON Schema
NameRequiredDescriptionDefault
sessionTitleYesTitle for the intensive chat session

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness3/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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
ParametersJSON Schema
NameRequiredDescriptionDefault
sessionIdYesID of the intensive chat session to stop

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness3/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

  1. 5 tool updates
    • First observedask_intensive_chat
    • First observedmessage_complete_notification
    • First observedrequest_user_input
    • First observedstart_intensive_chat
    • First observedstop_intensive_chat

TDQS

A4.4/5.0
Disambiguation4/5

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).

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness5/5

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

ActivityInactive
ResponsivenessNo issues

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

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    A 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.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Complete 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.
    2
    MIT
  • A
    license
    D
    quality
    D
    maintenance
    A TypeScript MCP server demo supporting local Stdio and remote Streamable HTTP, demonstrating tool invocation for AI agents.
    2
    MIT

Latest Blog Posts

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