交互式MCP服务器

一个基于Node.js/TypeScript实现的MCP服务器,用于促进LLM与用户之间的交互式通信,适用于本地运行并与MCP客户端(如Claude Desktop、VS Code)配合使用。

作者 By ttommyth
本地部署 交互式通信 本地服务器
GitHub

交互式mcp

在Node.js/TypeScript中实现的MCP服务器,促进LLM和用户之间的交互式通信。 注: 此服务器设计为与MCP客户端(例如Claude Desktop、VS Code)一起在本地运行,因为它需要直接访问用户的操作系统来显示通知和命令行提示。

(注:该项目尚处于初期阶段。)

想要快速浏览一下吗? 查看介绍性博客文章: 让你的人工智能助手停止猜测——介绍交互式mcp

演示视频

interactive-mcp MCP server

工具

此服务器通过模型上下文协议(MCP)公开以下工具:

  • request_user_input:向用户提问并返回答案。可以显示预定义的选项。
  • message_complete_notification:发送一个简单的操作系统通知。
  • start_intensive_chat:启动持久的命令行聊天会话。
  • ask_intensive_chat:在活跃的密集聊天会话中提问。
  • stop_intensive_chat:关闭正在进行的密集聊天会话。

演示

以下是互动功能的演示:

普通问题完成通知
密集聊天开始密集聊天结束

使用场景

此服务器非常适合LLM需要直接与本地计算机上的用户交互的场景,例如:

  • 交互式设置或配置过程。
  • 在代码生成或修改过程中收集反馈。
  • 在结对编程中澄清指令或确认操作。
  • 在LLM操作期间需要用户输入或确认的任何工作流。

客户端配置

本节解释如何配置MCP客户端以使用 interactive-mcp 服务器。

默认情况下,用户提示将在30秒后超时。您可以通过直接向添加命令行标志来自定义服务器选项,如超时或禁用工具 args 配置客户端时使用数组。

请确保您有 npx 命令可用。

使用Claude桌面/光标

将以下最低配置添加到您的 claude_desktop_config.json (克劳德桌面)或 mcp.json (光标):

JSON``` 1 2 3 4 5 6 7 8{ “mcpServers”: { “interactive”: { “command”: “npx”, “args”: [“-y”, “interactive-mcp”] } } }


**特定版本**


JSON```
1
2
3
4
5
6
7
8{
  "mcpServers": {
    "interactive": {
      "command": "npx",
      "args": ["-y", "interactive-mcp@1.9.0"]
    }
  }
}

自定义超时(30s)示例:

JSON``` 1 2 3 4 5 6 7 8{ “mcpServers”: { “interactive”: { “command”: “npx”, “args”: [“-y”, “interactive-mcp”, “-t”, “30”] } } }


### 使用VS代码


将以下最低配置添加到您的用户设置(JSON)文件中,或 `.vscode/mcp.json`:


JSON```
1
2
3
4
5
6
7
8
9
10{
  "mcp": {
    "servers": {
      "interactive-mcp": {
        "command": "npx",
        "args": ["-y", "interactive-mcp"]
      }
    }
  }
}

macOS推荐

使用默认设置在macOS上获得更流畅的体验 Terminal.app,请考虑此配置文件设置:

  • (外壳选项卡): 在…之下 “当外壳退出时” (终端>设置>配置文件> [您的个人资料] >壳牌),选择 “如果外壳干净退出,则关闭”“关闭窗口”。这有助于在MCP服务器启动和停止时管理窗口。

开发设置

本节主要面向希望修改或贡献服务器的开发人员。如果你只是想 使用 带有MCP客户端的服务器,请参阅上面的“客户端配置”部分。

先决条件

  • Node.js: 检查 package.json 为了版本兼容性。
  • pnpm: 用于包管理。通过安装 npm install -g pnpm 安装Node.js后。

安装(开发人员)

  1. 克隆存储库:

BASH``` 1 2git clone https://github.com/ttommyth/interactive-mcp.git cd interactive-mcp

2. 安装依赖项:


BASH```
1pnpm install

运行应用程序(开发人员)

BASH``` 1pnpm start


#### 命令行选项


这 `interactive-mcp` 服务器接受以下命令行选项。这些通常应在MCP客户端的JSON设置中配置,方法是将它们直接添加到 `args` 阵列(请参阅“客户端配置”示例)。


| 选项 | 别名 | 描述 |
| --- | --- | --- |
| `--timeout` | `-t` | 设置用户输入提示的默认超时时间(秒)。默认为30秒。 |
| `--disable-tools` | `-d` | 禁用特定工具或组(逗号分隔列表)。阻止服务器发布广告或注册它们。选项: `request_user_input`, `message_complete_notification`, `intensive_chat`. |


**例子:** 在客户端配置中设置多个选项 `args` 数组:


JSONC```
1
2
3
4
5
6// 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
]

开发命令

  • 构建: pnpm build
  • 棉绒: pnpm lint
  • 格式: pnpm format

互动指导原则

与此MCP服务器交互时(例如,作为LLM客户端),请遵守以下原则,以确保清晰并减少意外更改:

  • 优先考虑互动: 使用提供的MCP工具(request_user_input, start_intensive_chat等等)频繁地与用户互动。
  • 寻求澄清: 如果要求、说明或上下文不清楚, 总是 在继续之前,请先提出澄清问题。不要做出假设。
  • 确认操作: 在执行重要操作(如修改文件、运行复杂命令或做出架构决策)之前,请与用户确认计划。
  • 提供选项: 只要有可能,通过MCP工具向用户提供预定义的选项,以方便快速决策。

您可以向LLM客户端提供以下说明:

MARKDOWN``` 1 2 3 4 5 6# 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.

## 贡献


欢迎投稿!请遵循标准开发实践。(更多细节可以稍后添加)。


## 许可证


麻省理工学院(见 `LICENSE` 文件以获取详细信息(如果适用,或直接指定许可证)。