这是一个使用FastMCP库实现的MCP服务,旨在与AI工具(如Cursor、Windsurf等)进行交互。当AI工具在调用大型语言模型时需要用户输入或选项选择时,它们可以调用此MCP服务。

该插件的核心目的是使AI工具(如Cursor和Windsurf)与用户之间能够进行高频次的通信和确认。通过以下方式显著提高了AI交互的效率和效果:
该项目支持三种不同的用户界面类型,每种都有自己的特点:
# 使用PyQt界面测试选项选择
.\dist\mcp-interactive.exe test select_option --ui pyqt
# 使用PyQt界面测试信息补充
.\dist\mcp-interactive.exe test request_additional_info --ui pyqt
# 您还可以指定文件路径来测试request_additional_info工具
.\dist\mcp-interactive.exe test request_additional_info --ui pyqt D:\Path\To\Your\File.md
该项目根据不同的UI类型分离了依赖项:
requirements-base.txt:所有UI类型共享的基础依赖项requirements-pyqt.txt:PyQt5 UI依赖项requirements-web.txt:Web UI(Flask)依赖项您可以选择使用传统的pip或更快的uv包管理器来安装依赖项。
根据您想要使用的UI类型选择适当的依赖项文件:
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 venv
# 激活虚拟环境
# Windows
.venv\Scripts\activate
# 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文件直接安装所有依赖项:
# 安装基础依赖项
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类型
启动不同UI响应方法:
# 命令行界面(默认)
python main.py run --ui=cli
# Web界面
python main.py run --ui=web
# PyQt界面
python main.py run --ui=pyqt
其他服务启动选项:
# 使用默认设置启动服务(地址: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
stdio协议是最稳定且推荐的连接方法,通过标准输入/输出直接与Python脚本通信,具有以下优势:
配置示例:
{
"ai-interaction": {
"command": "python",
"args": ["path/to/main.py", "run", "--transport", "stdio", "--ui", "cli"],
"env": {}
}
}
{
"ai-interaction": {
"command": "D:/Path/To/Your/mcp-interactive.exe",
"args": ["run", "--transport", "stdio", "--ui", "pyqt"],
"env": {}
}
}
如果您需要通过网络连接到远程服务器,可以使用SSE协议:
本地启动:
python main.py run --transport sse
Cursor配置:
{
"ai-interaction": {
"type": "sse",
"url": "http://127.0.0.1:8000/sse",
"env": {}
}
}
Windsurf配置:
{
"ai-interaction": {
"serverUrl": "http://127.0.0.1:7888/sse",
"disabled": false
}
}
为了最大限度地提高Cursor和Windsurf中的AI交互效果,请配置以下规则供AI在使用MCP时遵循:
这些规则确保高质量的互动式AI辅助,同时最大化每次API调用的价值。
python main.py list-tools
# 测试选项选择工具
python main.py test select_option --ui=cli
# 测试信息补充工具
python main.py test request_additional_info --ui=cli
项目包含一个交互测试客户端,允许您使用不同的UI类型和方法测试MCP服务:
# 运行交互测试客户端
python mcp_client_en.py --host localhost --port 7888 --ui cli
选项:
--host:服务器主机(默认:localhost)--port:服务器端口(默认:7888)--ui:要测试的UI类型(cli, pyqt, web)客户端提供:
这特别适用于:
为了专门测试stdio传输协议,我们提供了一个命令行工具:
# 使用默认设置测试stdio连接
python mcp_client_stdio.py
# 指定UI类型
python mcp_client_stdio.py --ui=pyqt
# 测试特定工具
python mcp_client_stdio.py --test=select_option
更多详情,请参阅STDIO测试指南。
# 测试PyQt界面
python test_ui.py --ui=pyqt
# 测试Web界面
python test_ui.py --ui=web
# 测试CLI界面
python test_ui.py --ui=cli
此工具用于向用户提供一组选项,并让他们通过输入数字或提供自定义答案来选择。
参数:
options:选项列表,可以是字符串列表或字典列表prompt:显示给用户的提示消息返回值: 包含选择结果的字典,格式如下:
{
"selected_index": 0, // 用户选择的索引,如果为自定义答案则为-1
"selected_option": {}, // 用户选择的选项内容
"custom_input": "", // 用户的自定义输入,如果有
"is_custom": false // 是否为自定义答案
}
此工具用于请求用户补充信息。
参数:
prompt:请求信息的提示返回值: 用户输入的补充信息(字符串)
项目根目录下的config.json文件可以配置各种选项:
{
"reminder": {
"enable_reminder": true,
"reminder_text": "**注意**:\n除非我明确说明没有新的任务,否则您绝不能终止对话。完成每个任务后,请调用mcp ai-interaction来请求或确认任务!"
},
"ui": {
"default_ui_type": "pyqt"
},
"logging": {
"level": "warning"
}
}
配置选项:
reminder.enable_reminder:是否自动将提醒内容添加到工具返回结果中(默认:true)reminder.reminder_text:要添加的提醒文本内容ui.default_ui_type:默认UI类型logging.level:日志级别要将此MCP服务与AI工具集成,请按照以下步骤操作:
mcp-interactive.exe runpython main.py run要将Claude集成到Anthropic的官方产品或第三方应用中:
在您的AI工具设置中配置stdio连接:
{
"mcp-interaction": {
"command": "D:/Path/To/Your/mcp-interactive.exe",
"args": ["run", "--transport", "stdio", "--ui", "pyqt"],
"env": {}
}
}
配置Claude在需要时使用交互服务,例如:
Claude现在可以通过MCP服务直接呈现选项并请求额外信息。
from fastmcp import Client
async with Client("http://127.0.0.1:8000/sse") as client:
options = [
"选项1:使用TensorFlow实现",
"选项2:使用PyTorch实现",
{"title": "选项3:使用JAX实现", "description": "更适合研究目的"}
]
result = await client.call_tool(
"select_option",
{"options": options, "prompt": "请选择框架实现"}
)
selected_option = result.json
print(f"用户选择了:{selected_option}")
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": "请提供具体的项目需求"
}
)
print(f"用户提供的信息:{additional_info.text}")
请注意以下实现状态:
我们正在积极改进所有平台和UI类型之间的兼容性。
该项目包含一个脚本,用于构建Windows独立可执行文件:
# 构建Windows可执行文件
build_executable.bat
这将在dist目录下生成mcp-interactive.exe,您可以在没有Python安装的情况下运行它。
要为不同的平台构建可执行文件:
# 使用批处理脚本
build_executable.bat
# 或手动PyInstaller命令
pyinstaller mcp-interactive.spec
# 确保已安装PyInstaller
pip install pyinstaller
# 使用spec文件构建
pyinstaller mcp-interactive.spec
# 确保已安装PyInstaller
pip install pyinstaller
# 使用spec文件构建
pyinstaller mcp-interactive.spec
注意:必须在目标平台上构建(您不能从Windows构建macOS可执行文件等)。
要使您构建的可执行文件可供下载:
示例步骤:
用户可以从GitHub发布页面下载适合他们操作系统的适当版本。
本项目采用MIT许可证发布。