MCP Gradio客户端概念验证
此存储库是一个概念验证,用于使用以下方式实现模型上下文协议(MCP)客户端 格拉迪奥它演示了如何在Gradio接口中使用STDIO和SSE通信方法与MCP服务器进行交互。
模型上下文协议(MCP)旨在规范语言模型和工具之间的交互,为通信提供统一的接口。这个概念验证展示了MCP在构建具有工具集成的AI助手中的实际应用。
目录
- STDIO服务器定义 - SSE服务器定义
引言
该项目在Gradio应用程序中实现了一个MCP客户端,允许用户与通过MCP公开的工具进行交互。通过利用MCP的标准化通信协议,客户端可以与各种工具无缝集成,增强语言模型的能力。
关键要素 模型上下文协议:
- 标准化MCP为语言模型与工具交互提供了一种标准化的方式,促进了互操作性。
- 沟通方法:支持多种通信方法,包括STDIO和SSE,以实现工具集成的灵活性。
- 工具集成:使语言模型能够使用外部工具,增强其功能和适用性。
特性
- Gradio界面:用于与MCP客户端和工具交互的用户友好界面。
- STDIO和SSE支持:演示如何使用STDIO和SSE方法连接到MCP服务器。
- 动态工具加载:自动发现和集成MCP服务器公开的工具。
- 调试支持:可选调试模式,有助于开发和故障排除。
安装
先决条件
- Python 3.12或更高版本
- 优维康 (适用于STDIO服务器的UVX)
- NPX (适用于STDIO服务器的NPX)
- python (适用于Python模块STDIO服务器)
- OpenAI API密钥(用于语言模型交互)
步骤
- 克隆存储库
git clone https://github.com/yourusername/mcp-gradio-client.git
cd mcp-gradio-client- 创建虚拟环境
Unix/macOS:
python -m venv venv
source venv/bin/activate # On Windows use `venv\Scripts\activate`窗户:
python -m venv .venv
.venv\Scripts\activate- 再进行
pip install -r requirements.txt- 设置环境变量
创建一个 .env 根目录中的文件使用 .env.example 作为参考,并添加您的OpenAI API密钥:
OPENAI_API_KEY=your_openai_api_key- 运行应用程序
启动Gradio应用程序:
python gradio_ui.py了解MCP STDIO与SSE服务器
看 stdio_versus_sse_mcp_servers.md 有关这两种服务器类型之间差异的详细信息。
配置
应用程序需要 config.json 文件来定义MCP服务器。此文件应放置在根目录中。 config.json应该具有以下格式:
{
"mcpServers": {
"stdio_server_name": {
"type": "stdio",
"command": "uvx",
"args": [],
"env": {}
},
"sse_server_name": {
"type": "sse",
"url": "http://127.0.0.1:3001/sse",
"headers": {}
}
}
}看 信息-如何配置config.json文件 了解详情。请注意,虽然文件结构与什么非常相似 Claude Desktop 使用,它并不完全相同。 有几个重要的区别(都在其他自述文件中注释)
"type": "stdio"|"sse"需要指定您使用的服务器类型"command": "uvx"|"npx"|"python"可能需要为windows用户进行调整。例子,npx将需要npx.cmd对于Windows
STDIO服务器定义
- 类型:应设置为
"stdio". - 命令:启动STDIO服务器的命令(例如。,
"python","uv","uvx",或"npx"). - 参数:命令的参数(例如。,
["weather_server.py"]). - 环境:服务器所需的环境变量。
备注:STDIO服务器由Gradio实例化,不需要手动启动。它们通常通过以下方式启动 npx, uvicorn/uvx,或 python -m 命令参数。如果无法识别包,则必须先下载并安装一些Python STDIO服务器。
SSE服务器定义
- 类型:应设置为
"sse". - 统一资源定位符:运行SSE服务器的端点。
- 标头:(可选)连接所需的任何标头。
备注:必须手动启动并运行SSE服务器,Gradio客户端才能连接。确保在运行Gradio应用程序之前启动SSE服务器。
用法
- 启动SSE服务器(如果有)
确保您的系统中定义了任何SSE服务器 config.json 正在奔跑。
- 运行Gradio应用程序
python gradio_ui.py- 与界面交互
在web浏览器中打开提供的URL(通常 http://127.0.0.1:7860)访问Gradio界面。
- 提出问题
使用聊天界面与语言模型和MCP服务器提供的工具进行交互。
备注
- STDIO服务器:Gradio将根据您的配置根据需要自动实例化STDIO服务器。
- SSE服务器:在运行Gradio客户端之前,必须手动启动。
- 调试模式:使用界面中的复选框启用或禁用调试模式以查看详细日志。
- 工具安装:如果某些工具不是标准软件包,则可能需要额外的安装步骤。确保所有必要的工具都已安装且便于使用。
许可证
该项目根据MIT许可证获得许可。请参阅 许可证 文件以获取详细信息。
______________________________________________________________________
有关模型上下文协议及其功能的更多信息,请访问 MCP官方文件.
贡献
Open Developer Guide
先决条件
Gradio需要Python 3.12+
安装
创建此存储库的分支,然后克隆它:
git clone xxxxx
cd xxx接下来,创建一个虚拟环境并安装FastMCP: Unix/macOS:
uv venv
source .venv/bin/activate
uv sync --frozen --all-extras --dev视窗
venv
.venv/bin/activate测试
请确保测试任何新功能。你的测试应该简单而原子化,并预测变化,而不是巩固复杂的模式。
从根目录运行测试:
pytest -v格式化
此POC强制执行各种所需的格式,您可以通过预提交自动执行这些格式。
安装预提交挂钩:
pre-commit install钩子现在将在每个提交(以及每个PR)上运行。要手动运行它们,请执行以下操作:
pre-commit run --all-files打开拉取请求
分叉存储库并创建一个新分支:
git checkout -b my-branch进行更改并提交:
git add . && git commit -m "My changes"将您的更改推到叉子上:
git push origin my-branch如果您有任何问题,请随时联系GitHub问题或讨论!
