MCP 课程文档
构建 Gradio MCP 服务器
加入 Hugging Face 社区
并获得增强的文档体验
开始使用
构建 Gradio MCP 服务器
在本节中,我们将使用 Gradio 创建我们的情感分析 MCP 服务器。该服务器将公开一个情感分析工具,人类用户可以通过 Web 界面使用它,AI 模型可以通过 MCP 协议使用它。
Gradio MCP 集成简介
Gradio 提供了一种直接创建 MCP 服务器的方法,它会自动将您的 Python 函数转换为 MCP 工具。当您在 launch()
中设置 mcp_server=True
时,Gradio 会
- 自动将您的函数转换为 MCP 工具
- 将输入组件映射到工具参数模式
- 根据输出组件确定响应格式
- 设置基于 HTTP+SSE 的 JSON-RPC 用于客户端-服务器通信
- 创建 Web 界面和 MCP 服务器端点
项目设置
首先,我们为项目创建一个新目录并设置所需的依赖项
mkdir mcp-sentiment
cd mcp-sentiment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install "gradio[mcp]" textblob
创建服务器
Hugging Face Spaces 需要一个 app.py 文件来构建空间。因此,Python 文件的名称必须是 app.py
创建一个名为 app.py
的新文件,其中包含以下代码
import json
import gradio as gr
from textblob import TextBlob
def sentiment_analysis(text: str) -> str:
"""
Analyze the sentiment of the given text.
Args:
text (str): The text to analyze
Returns:
str: A JSON string containing polarity, subjectivity, and assessment
"""
blob = TextBlob(text)
sentiment = blob.sentiment
result = {
"polarity": round(sentiment.polarity, 2), # -1 (negative) to 1 (positive)
"subjectivity": round(sentiment.subjectivity, 2), # 0 (objective) to 1 (subjective)
"assessment": "positive" if sentiment.polarity > 0 else "negative" if sentiment.polarity < 0 else "neutral"
}
return json.dumps(result)
# Create the Gradio interface
demo = gr.Interface(
fn=sentiment_analysis,
inputs=gr.Textbox(placeholder="Enter text to analyze..."),
outputs=gr.Textbox(), # Changed from gr.JSON() to gr.Textbox()
title="Text Sentiment Analysis",
description="Analyze the sentiment of text using TextBlob"
)
# Launch the interface and MCP server
if __name__ == "__main__":
demo.launch(mcp_server=True)
理解代码
让我们分解关键组件
函数定义:
sentiment_analysis
函数接受文本输入并返回一个字典- 它使用 TextBlob 来分析情感
- 文档字符串至关重要,因为它有助于 Gradio 生成 MCP 工具模式
- 类型提示 (
str
和dict
) 有助于定义输入/输出模式
Gradio 接口:
gr.Interface
创建 Web UI 和 MCP 服务器- 该函数自动作为 MCP 工具公开
- 输入和输出组件定义了工具的模式
- JSON 输出组件确保正确序列化
MCP 服务器:
- 设置
mcp_server=True
启用 MCP 服务器 - 服务器将在
https://:7860/gradio_api/mcp/sse
可用 - 您也可以使用环境变量启用它
export GRADIO_MCP_SERVER=True
- 设置
运行服务器
通过运行以下命令启动服务器
python app.py
您应该会看到输出,表明 Web 界面和 MCP 服务器正在运行。Web 界面将在 https://:7860
可用,MCP 服务器将在 https://:7860/gradio_api/mcp/sse
可用。
测试服务器
您可以通过两种方式测试服务器
Web 界面:
- 在浏览器中打开
https://:7860
- 输入一些文本并点击“提交”
- 您应该会看到情感分析结果
- 在浏览器中打开
MCP 模式:
- 访问
https://:7860/gradio_api/mcp/schema
- 这显示了客户端将使用的 MCP 工具模式
- 您也可以在 Gradio 应用程序底部的“查看 API”链接中找到它
- 访问
故障排除提示
类型提示和文档字符串:
- 始终为您的函数参数和返回值提供类型提示
- 包含一个带有“Args:”块的文档字符串,用于每个参数
- 这有助于 Gradio 生成准确的 MCP 工具模式
字符串输入:
- 如有疑问,请将输入参数接受为
str
- 在函数内部将其转换为所需类型
- 这提供了与 MCP 客户端更好的兼容性
- 如有疑问,请将输入参数接受为
SSE 支持:
- 某些 MCP 客户端不支持基于 SSE 的 MCP 服务器
- 在这些情况下,请使用
mcp-remote
{ "mcpServers": { "gradio": { "command": "npx", "args": [ "mcp-remote", "https://:7860/gradio_api/mcp/sse" ] } } }
连接问题:
- 如果遇到连接问题,请尝试重启客户端和服务器
- 检查服务器是否正在运行且可访问
- 验证 MCP 模式是否在预期 URL 可用
部署到 Hugging Face Spaces
要使您的服务器可供他人使用,您可以将其部署到 Hugging Face Spaces
在 Hugging Face 上创建一个新空间
- 访问 huggingface.co/spaces
- 点击“创建新空间”
- 选择“Gradio”作为 SDK
- 命名您的空间(例如,“mcp-sentiment”)
创建
requirements.txt
文件
gradio[mcp] textblob
- 将您的代码推送到空间
git init
git add app.py requirements.txt
git commit -m "Initial commit"
git remote add origin https://huggingface.co/spaces/YOUR_USERNAME/mcp-sentiment
git push -u origin main
您的 MCP 服务器现在可在以下地址访问
https://YOUR_USERNAME-mcp-sentiment.hf.space/gradio_api/mcp/sse
后续步骤
既然我们的 MCP 服务器已在运行,我们将创建客户端与其交互。在接下来的章节中,我们将
- 创建一个受 Tiny Agents 启发的基于 HuggingFace.js 的客户端
- 实现一个基于 SmolAgents 的 Python 客户端
- 使用我们部署的服务器测试两个客户端
让我们开始构建我们的第一个客户端!
< > 在 GitHub 上更新