X

interaction-mcp

Information

MCP 交互服务 这是一个使用 FastMCP 库实现的 MCP 服务,旨在与像 Cursor、Windsurf 等 AI 工具进行交互。当 AI 工具在调用大型语言模型时需要用户输入或选择选项时,可以调用此 MCP 服务。 核心目的 该插件的核心目的是实现 AI 工具(如 Cursor 和 Windsurf)与用户之间的高频通信和确认。它通过以下方式显著提高了 AI 交互的效率和效果: 减少资源浪费:通过允许用户在 AI 提交到可能错误的解决方案路径之前确认或重定向 AI 的方法,该插件最小化了浪费的 API 调用和计算资源。 最大化资源利用率:每次对 Cursor 或 Windsurf 的 API 调用都变得更加高效,因为 AI 可以在继续之前验证其理解和方法是否正确。 防止注意力分散:通过早期确认方法,该插件有助于保持对正确解决方案路径的关注,而不是将注意力转移到错误的方法上。 支持交互式决策:用户可以积极参与决策过程,为 AI 提供即时反馈和指导。 简化复杂任务:对于多步骤任务,该插件确保在每个关键决策点上用户期望与 AI 执行之间的一致性。 功能 选项选择:显示一个选项列表供用户通过输入数字或提供自定义答案来选择 信息补充:当 AI 模型需要更完整的信息时,它们可以请求用户直接输入补充信息 多种用户界面:支持 CLI、Web 和 PyQt 界面 用户界面类型 该项目支持三种不同的用户界面类型,每种都有自己的特点: CLI(命令行界面) 描述:打开一个新的命令提示符窗口供用户交互 优点: 最小依赖(不需要额外的包) 可以同时处理多个对话窗口 在没有图形界面的环境中工作良好 轻量级且启动速度快 缺点: 基本的视觉呈现 对非技术用户来说可能不够直观 最适合:服务器环境、资源有限的系统或需要同时进行多个对话的情况 PyQt 界面 描述:使用 PyQt 提供现代图形用户界面 优点: 清晰、专业的对话框 熟悉的桌面应用程序体验 对所有类型的用户都易于使用 缺点: 一次只能显示一个对话框 需要 PyQt 依赖项(安装较大) 最适合:重视视觉吸引力的桌面使用场景,或者只需要一个对话框的情况 Web 界面 描述:在网页浏览器中打开对话框 优点: 可以同时处理多个对话窗口 可以通过网页浏览器从任何地方访问 现代、可定制的界面 缺点: 需要安装网页浏览器 设置稍微复杂一些 最适合:远程访问场景、偏好使用网页界面的环境,或者需要同时进行多个对话的情况 使用指南 1. 入门(两种选项) 选项 A:使用预编译的可执行文件(推荐用于 Windows) 从 GitHub Releases 页面下载最新的预编译可执行文件。 无需安装 - 直接下载并运行可执行文件即可。 您可以使用以下命令测试功能: bash 使用 PyQt 界面测试选项选择 .distmcp-interactive.exe test select_option --ui pyqt 使用 PyQt 界面测试信息补充 .distmcp-interactive.exe test request_additional_info --ui pyqt 您还可以指定文件路径来测试 request_additional_info 工具 .distmcp-interactive.exe test request_additional_info --ui pyqt D.md4. 跳至下面的步骤3进行配置。 选项B:从源代码安装 该项目根据不同UI类型分离依赖项: requirements-base.txt:基础依赖项,所有UI类型共享 requirements-pyqt.txt:PyQt5 UI依赖项 requirements-web.txt:Web UI (Flask) 依赖项 您可以选择使用传统的pip或更快的uv包管理器来安装依赖项。 使用pip(传统方法) 根据您要使用的UI类型选择适当的依赖文件: bash cd requirements CLI UI(最小依赖) pip install -r requirements-base.txt PyQt5 UI pip install -r requirements-pyqt.txt Web UI pip install -r requirements-web.txt 注意:每个特定的UI依赖文件已经包含了对基础依赖的引用(通过 -r requirements-base.txt),因此您只需要安装一个文件。 使用uv(推荐,更快) 如果您已经安装了uv,可以使用以下命令创建虚拟环境并安装依赖项: bash 创建虚拟环境 uv venv 激活虚拟环境 Windows .venvScriptsactivate macOS / Linux source .venv/bin/activate 根据UI类型安装依赖项 cd requirements CLI UI(最小依赖) uv pip install -r requirements-base.txt PyQt5 UI uv pip install -r requirements-pyqt.txt Web UI uv pip install -r requirements-web.txt 您也可以使用项目的 pyproject.toml 文件直接安装所有依赖项: bash 安装基础依赖项 uv pip install -e . 安装特定UI类型的依赖项 uv pip install -e ".[pyqt]" # PyQt5 UI uv pip install -e ".[web]" # Web UI uv pip install -e ".[all]" # 所有UI类型 2. 启动程序 启动不同的UI响应方式: bash 命令行界面(默认) python main.py run --ui=cli Web界面 python main.py run --ui=web PyQt界面 python main.py run --ui=pyqt 其他服务启动选项: bash 使用默认设置启动服务(地址:127.0.0.1,端口:7888) python main.py run 指定主机和端口 python main.py run --host 0.0.0.0 --port 8888 指定日志级别 python main.py run --log-level warning 3. 配置Cursor、Windsurf或Claude 使用stdio协议(推荐) stdio协议是最稳定且推荐的连接方法,通过标准输入/输出直接与Python脚本通信,具有以下优点: 更高的稳定性和可靠性 可以同时打开多个对话框 简单直接,无需处理网络连接问题 与系统更紧密集成,响应更快 配置示例: 使用Python(源代码) json \{ "ai-interaction": \{ "command": "python", "args": ["path/to/main.py", "run", "--transport", "stdio", "--ui", "cli"], "env": \{\} \} \} 使用可执行文件 json \{ "ai-interaction": \{ "command": "D:/Path/To/Your/mcp-interactive.exe", "args": ["run", "--transport", "stdio", "--ui", "pyqt"], "env": \{\} \} \} 使用SSE协议(备选方案) 如果需要通过网络连接到远程服务器,可以使用SSE协议: 本地启动: bash python main.py run --transport sse Cursor配置: json \{ "ai-interaction": \{ "type": "sse", "url": "http://127.0.0.1:8000/sse", "env": \{\} \} \} Windsurf配置: json \{ "ai-interaction": \{ "serverUrl": "http://127.0.0.1:7888/sse", "disabled": false \} \} 4. 配置AI交互规则 为了最大化Cursor和Windsurf中AI交互的效果,请为MCP使用时配置以下规则:1. 当AI对任务不清楚或需要额外信息时,应调用MCP ai-interaction来请求用户澄清。 当AI有多种可能的解决方案时,应调用MCP ai-interaction让用户选择首选方案。 完成任务后,AI应调用MCP ai-interaction确认是否有其他需要执行的任务。 AI应将任务分解为多个阶段,并在开始新阶段之前调用MCP ai-interaction询问用户是否需要加入任何额外的想法或考虑因素。 AI应主动使用MCP确认关键决策,而不是做出假设。 这些规则确保了高质量、互动式的AI辅助服务,同时最大化每次API调用的价值。 其他功能 查看可用工具 bash python main.py list-tools 测试工具 bash 测试选项选择工具 python main.py test select_option --ui=cli 测试信息补充工具 python main.py test request_additional_info --ui=cli 交互式测试客户端 项目包括一个交互式测试客户端,允许您使用不同的UI类型和方法测试MCP服务: bash 运行交互式测试客户端 python mcp_client_en.py --host localhost --port 7888 --ui cli 选项: --host: 服务器主机(默认:localhost) --port: 服务器端口(默认:7888) --ui: 要使用的UI类型(cli, pyqt, web) 客户端提供: 与MCP服务的连接测试 选择要测试的UI类型 测试select_option和request_additional_info两种方法 每种方法的多个参数预设 请求和响应的完全可视化 这对于以下方面特别有用: 调试UI交互问题 测试不同UI类型的行为 向用户演示服务 验证服务器功能 STDIO测试客户端 为了专门测试stdio传输协议,我们提供了一个命令行工具: bash 使用默认设置测试stdio连接 python mcp_client_stdio.py 指定UI类型 python mcp_client_stdio.py --ui=pyqt 测试特定工具 python mcp_client_stdio.py --test=select_option 更多详情,请参阅STDIO测试指南。 UI测试 bash 测试PyQt界面 python test_ui.py --ui=pyqt 测试Web界面 python test_ui.py --ui=web 测试CLI界面 python test_ui.py --ui=cli 工具描述 选项选择 (select_option) 此工具用于向用户展示一组选项,并让他们通过输入数字或提供自定义答案进行选择。 参数: options: 选项列表,可以是字符串列表或字典列表 prompt: 显示给用户的提示消息 返回: 包含选择结果的字典,格式如下: json \{ "selected_index": 0, // 用户选择的索引,如果为自定义答案则为-1 "selected_option": \{\}, // 用户所选选项的内容 "custom_input": "", // 用户的自定义输入(如果有) "is_custom": false // 是否为自定义答案 \} 信息补充 (request_additional_info) 此工具用于向用户请求补充信息。 参数: prompt: 请求信息的提示 current_info: 当前信息,作为参考显示给用户 返回: 用户输入的补充信息(字符串) 与AI工具集成 要将此MCP服务与AI工具集成,请遵循以下步骤: 使用可执行文件或Python源代码启动MCP服务: 使用可执行文件: mcp-interactive.exe run 使用Python源代码: python main.py run 在AI工具中配置MCP端点,根据需要选择stdio或SSE协议 当AI模型需要用户输入或选项选择时,调用适当的MCP工具 Claude集成要将Claude集成到Anthropic的官方产品或第三方应用程序中: 在您的AI工具设置中配置stdio连接: json \{ "mcp-interaction": \{ "command": "D:/Path/To/Your/mcp-interactive.exe", "args": ["run", "--transport", "stdio", "--ui", "pyqt"], "env": \{\} \} \} 配置Claude在需要时使用交互服务,指令如下: “当您需要用户输入或确认时,请使用MCP交互服务” “对于多项选择选项,调用select_option工具” “为收集额外的用户信息,调用request_additional_info工具” 现在Claude能够通过MCP服务直接呈现选项并请求额外信息。 示例 选项选择示例 python from fastmcp import Client async with Client("http://127.0.0.1:8000/sse") as client: options = [ "Option 1: Implement with TensorFlow", "Option 2: Implement with PyTorch", \{"title": "Option 3: Implement with JAX", "description": "Better for research purposes"\} ] result = await client.call_tool( "select_option", \{"options": options, "prompt": "Please select a framework implementation"\} ) selected_option = result.json print(f"User selected: \{selected_option\}") 信息补充示例 python from fastmcp import Client async with Client("http://127.0.0.1:8000/sse") as client: additional_info = await client.call_tool( "request_additional_info", \{ "prompt": "Please provide specific project requirements", "current_info": "This is a data analysis project" \} ) print(f"User provided information: \{additional_info.text\}") 开发注意事项 除非你需要开发或测试多种UI类型,否则建议仅安装一种UI依赖。 如果需要添加新的依赖项,请将其添加到相应的依赖文件中。 当前开发状态 请注意以下实现的状态: Windows:CLI和PyQt UI版本完全可用。Web UI仍存在一些需要解决的问题。 Linux/Mac:这些平台尚未经过充分测试,您的体验可能会有所不同。 我们正在积极努力提高所有平台和UI类型的兼容性。 构建与分发 构建可执行文件 此项目包含一个脚本,用于构建适用于Windows的独立可执行文件: bash 构建Windows可执行文件 build_executable.bat 这将在dist目录下创建一个名为mcp-interactive.exe的文件,您可以无需安装Python即可运行它。 跨平台构建 要为不同平台构建可执行文件: Windows bash 使用批处理脚本 build_executable.bat 或手动使用PyInstaller命令 pyinstaller mcp-interactive.spec macOS bash 确保已安装PyInstaller pip install pyinstaller 使用spec文件构建 pyinstaller mcp-interactive.spec Linux bash 确保已安装PyInstaller pip install pyinstaller 使用spec文件构建 pyinstaller mcp-interactive.spec 注意:必须在目标平台上进行构建(例如,不能从Windows上构建macOS可执行文件等)。 通过GitHub分发 要使您构建的可执行文件可供下载: 为您的项目创建一个GitHub发布 将构建的可执行文件作为发布资产上传 提供清晰的文档说明每个平台应使用哪个可执行文件 示例步骤: 导航到您的GitHub仓库 点击右侧边栏中的“Releases” 点击“Create a new release”(创建新发布) 设置版本标签(例如v1.0.0) 添加发布的标题和描述 拖放或上传针对不同平台的可执行文件 点击“Publish release”(发布)用户随后可以从GitHub的发布页面下载适用于他们操作系统的相应版本。 许可证 本项目在MIT许可证下发布。

Prompts

Reviews

Tags

Write Your Review

Detailed Ratings

ALL
Correctness
Helpfulness
Interesting
Upload Pictures and Videos

Name
Size
Type
Download
Last Modified
  • Community

Add Discussion

Upload Pictures and Videos