交互式mcp
在Node.js/TypeScript中实现的MCP服务器,促进LLM和用户之间的交互式通信。 注: 此服务器设计为与MCP客户端(例如Claude Desktop、VS Code)一起在本地运行,因为它需要直接访问用户的操作系统来显示通知和命令行提示。
(注:该项目尚处于初期阶段。)
想要快速浏览一下吗? 查看介绍性博客文章: 让你的人工智能助手停止猜测——介绍交互式mcp
工具
此服务器通过模型上下文协议(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后。
安装(开发人员)
- 克隆存储库:
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` 文件以获取详细信息(如果适用,或直接指定许可证)。