交互式选择MCP服务器(原生UI)
](https://www.npmjs.com/package/mcp-interactive-choice)
一种模型上下文协议(MCP)服务器,允许AI代理通过 原生窗口 (使用Tauri构建),防止上下文中断,提供优质的用户体验。
✨ 特性
- 本机窗口:当代理需要您的输入时,会出现一个本机窗口。
- Markdown支持:来自AI的详细描述在markdown中呈现。
- 键盘导航:可通过键盘完全访问。使用箭头键导航选项,
Enter确认,以及Shift+Enter用于自定义输入中的新行。 - 交叉平台的:支持Windows和macOS。
🚀 设置和安装
选项A:使用npx运行(推荐)
您可以直接通过以下方式使用服务器 npx 在MCP客户端配置中:
{
"mcpServers": {
"interactive-choice": {
"command": "npx",
"args": [
"-y",
"mcp-interactive-choice"
]
}
}
}选项B:本地构建
1.建造一切
从项目根:
npm install
npm run build这将:
- 构建前端(Vite)
- 构建Tauri二进制文件(Rust)
- 编译MCP服务器(TypeScript)
- 将二进制文件复制到
bin/文件夹
2.向您的MCP客户注册
更新您的配置(例如。, claude_desktop_config.json):
{
"mcpServers": {
"interactive-choice": {
"command": "node",
"args": [
"/path/to/mcp-interactive-choice/dist/index.js"
]
}
}
}可选:全局强制服务器端超时
通过 --timeout 到服务器为代理不提供的所有调用设置回退超时 timeoutSec:
{
"mcpServers": {
"interactive-choice": {
"command": "node",
"args": [
"/path/to/mcp-interactive-choice/dist/index.js",
"--timeout", "120"
]
}
}
}可选:防止全局焦点窃取
通过 --silent 以防止UI每次启动时“窃取”窗口焦点(如果代理经常使用该工具,则很有用):
{
"mcpServers": {
"interactive-choice": {
"command": "node",
"args": [
"/path/to/mcp-interactive-choice/dist/index.js",
"--silent"
]
}
}
}🛠️ 工具: ask_user
当需要人工决策时,代理会调用此工具。
论据:
title(可选):问题的简短标题。body(可选):Markdown中的详细上下文。choices(必填):字符串列表。recommended(可选):以下字符串之一choices正如代理人所暗示的那样。
答复:
- 返回所选选项的字符串值。
- 退货
"User provided answer: {text}"如果用户键入了自定义响应。 - 退货
"User skipped the question"如果用户单击了“跳过”。 - 退货
"user cancelled the selection"如果窗口是手动关闭的。
🛠️ 开发与调试
UI开发(热重载)
要使用热重新加载迭代UI,请执行以下操作:
- 首选
packages/native-ui. - 跑
npm run tauri dev.
使用CLI参数运行(Windows/PPowerShell): 要在开发过程中测试特定数据,请使用该标志 --input:
npm run tauri dev -- -- -- --input '{"title":"Dev Test","choices":["A","B"]}'🔍 MCP检验员测试
- 构建一切:
npm run build根。 - 运行检查器 从项目根:
npx -y @modelcontextprotocol/inspector node dist/index.js⚠️ IDE/客户端兼容性
此服务器正在等待 无限期地 默认情况下。这是否有效取决于您的MCP客户端:
| 客户 | 行为 |
|---|---|
| 反重力 谷歌✅ 无客户端超时——工作完美 | |
| VS代码/GitHub副本 | ✅ MCP工具调用没有硬超时;使用取消令牌 |
| 克劳德桌面版 | ⚠️ 强制执行a 60秒 通过MCP TypeScript SDK实现客户端超时(DEFAULT_REQUEST_TIMEOUT_MSEC = 60000).如果用户没有及时响应,工具调用将失败。 |
| 光标 | ⚠️ 还强制执行a 60秒 客户端超时。这是一个正在上游跟踪的已知限制。 |
📝 许可证
麻省理工学院
