此仓库是一个使用Gradio实现模型上下文协议(MCP)客户端的概念验证。它展示了如何在Gradio界面中通过STDIO和SSE通信方法与MCP服务器进行交互。
模型上下文协议(MCP)旨在标准化语言模型与工具之间的交互,提供统一的通信接口。这个概念验证展示了MCP在构建具有工具集成的人工智能助手中的实际应用。
该项目在一个Gradio应用程序中实现了MCP客户端,允许用户与通过MCP暴露的工具进行交互。通过利用MCP的标准通信协议,客户端可以无缝地集成各种工具,增强语言模型的能力。
来自模型上下文协议的关键元素:
克隆仓库
git clone https://github.com/yourusername/mcp-gradio-client.git
cd mcp-gradio-client
创建虚拟环境 Unix/macOS:
python -m venv venv
source venv/bin/activate # 在Windows上使用 `venv\Scripts\activate`
Windows:
python -m venv .venv
.venv\Scripts\activate
安装依赖项
pip install -r requirements.txt
设置环境变量
使用.env.example作为参考,在根目录下创建一个.env文件,并添加您的OpenAI API密钥:
OPENAI_API_KEY=your_openai_api_key
运行应用
启动Gradio应用程序:
python gradio_ui.py
详情参见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使用的非常相似,但并不完全相同。
存在几个重要差异(所有注释都在其他readme中)
"type": "stdio"|"sse"是必需的,用于指定您正在使用的服务器类型"command": "uvx"|"npx"|"python"可能需要根据Windows用户进行调整。例如,npx在Windows上需要改为npx.cmd"stdio"。"python"、"uv"、"uvx"或"npx")。["weather_server.py"])。注意:STDIO服务器由Gradio自动实例化,无需手动启动。它们通常通过npx、uvicorn/uvx或python -m命令参数启动。某些Python STDIO服务器必须首先下载并安装,如果它们不是已知的包。
"sse"。注意:SSE服务器必须手动启动,以便Gradio客户端能够连接。确保在运行Gradio应用程序之前启动SSE服务器。
启动SSE服务器(如果有)
确保在config.json中定义的任何SSE服务器都在运行。
运行Gradio应用程序
python gradio_ui.py
与界面交互
在您的网络浏览器中打开提供的URL(通常是http://127..0.1:7860),以访问Gradio界面。
提问 使用聊天界面与语言模型以及MCP服务器提供的工具进行交互。
本项目采用MIT许可证。详情请参阅LICENSE文件。
有关模型上下文协议及其功能的更多信息,请访问官方MCP文档。
Gradio需要Python 3.12+
创建此仓库的分支,然后克隆它:
git clone xxxxx
cd xxx
接下来,创建一个虚拟环境并安装FastMCP: Unix/macOS:
uv venv
source .venv/bin/activate
uv sync --frozen --all-extras --dev
Windows
venv
.venv/bin/activate
请确保测试任何新功能。您的测试应该简单且原子化,并预期变化而不是固化复杂模式。
从根目录运行测试:
pytest -v
此POC强制执行一系列所需格式,您可以使用pre-commit自动执行这些格式。
安装pre-commit钩子:
pre-commit install
现在,这些钩子将在每次提交时运行(以及在每个PR上)。要手动运行它们:
pre-commit run --all-files
分叉仓库并创建一个新分支:
git checkout -b my-branch
进行更改并提交:
git add . && git commit -m "我的更改"
将更改推送到您的分叉:
git push origin my-branch
如果您有任何问题,请随时在GitHub问题或讨论中联系我们!
</details>