
只需一分钟即可将任何Python函数封装为MCP.
我对MCP的第一印象是, ...哇!
对其他人来说, 这没什么特别的. 当Antropic发布这个令人惊叹的协议时, 我们都感到震惊. 一夜之间, 一个完整的生态系统诞生了, 拥有数百个MCP服务器.
有一件事一直困扰着我.
如何创建任何我想要的MCP服务器? 如何将Python函数转换为MCP? 如何将我的私有API接口转换为MCP?
答案直到最近才浮现在我脑海中.
在浏览电子邮件简讯时, 我看到一个链接指向Huggingface. 它说你可以用不到五行Python代码创建一个MCP. 这太棒了.
我试了一下, 现在我已经为个人使用转换了大量MCP服务器.
其中一些可以通过现有的MCP解决方案实现, 但它们没有提供我需要的精细控制. 不过, 我的自定义MCP可以做到.
这就是它的运作方式.
使用 Gradio 界面将 Python 函数转换为 MCP.
Gradio 使这成为可能.
我原本以为 Gradio 只是一个网页界面构建工具. 它仍然是, 但现在 Gradio 能够做更多事情. 我们可以使用它来构建 MCP 服务器.
我喜欢 Gradio, 因为它既可以作为网页应用, 也可以作为笔记本中的嵌入式工具.
6 个 Python GUI 框架, 用于创建桌面, 网页甚至移动应用.
你可以纯粹用 Python 构建出精美的应用.
以下是构建 MCP 服务器的步骤. 我们还将将其连接到 Claude 桌面. 但首先, 让我们从安装开始.
arduino
pip install "gradio[mcp]"
# or: uv add "gradio[mcp]"
假设我们有一个计算弹道距离的函数. 它可以是任何内容. 但这个示例应该可以正常工作.
python
def compute_projectile_distance(initial_speed, angle):
"""
Calculate the horizontal distance traveled by a projectile.
Parameters:
initial_speed (float): Initial speed of the projectile in m/s
angle (float): Launch angle in degrees
Returns:
float: Horizontal distance traveled in meters
"""
# Convert angle from degrees to radians
angle_rad = math.radians(angle)
# Gravitational acceleration (m/s²)
g = 9.81
# Calculate the horizontal distance using the projectile motion formula:
# distance = (initial_speed² * sin(2*angle)) / g
distance = (initial_speed**2 * math.sin(2 * angle_rad)) / g
现在, 我们可以将它转换为 MCP. 以下是操作步骤.
ini
app = gr.Interface(
fn=compute_projectile_distance,
inputs=["number", "number"],
outputs="number",
title="Compute Projectile Distance",
description="Computes the theoretical horizontal distance a projectile travels for a given initial speed and angle."
)
通过这个API调用, 我们的应用程序就可以作为MCP运行. 然而, 以下代码行会创建实际的MCP服务器.
ini
app.launch(mcp_server=True)
现在, 我们可以像往常一样启动应用程序.
python app.py
这将启动我们的MCP服务器, 地址为: http://localhost:7860/gradio_api/mcp/sse
现在可以为任何客户端进行配置. Claude Desktop, Cursor 和 Cline 是流行的 MCP 客户端. 你也可以自行开发客户端.
在本篇文章中, 我将演示如何将其与 Claude Desktop 集成.
与 MCP 服务器一同启动的还有 Gradio 的应用程序网页界面. 你可通过 http://localhost:7860 访问该界面. 在网页界面的底部, 你会看到一个名为"通过 API 使用"的按钮.
点击该按钮.

这将打开一个弹出窗口. 其中有一个名为 MCP 的按钮. 点击它以查看如何设置 MCP 服务器与客户端的配置说明.

我使用这里标记的第二种方法, 该方法使用 Node.js. 要使此方法生效, 你需要在计算机上安装 Node.js.
将以下内容复制并粘贴到 Claude Desktop 的配置文件中. 你可以在安装位置找到名为 claude_desktop_config.json
的文件.
如果你无法找到安装位置, 请执行以下操作.
打开Claude Desktop, 点击应用程序左上角的汉堡菜单. 然后选择"文件"并点击"设置". 最后进入"开发者设置"并点击"编辑配置"按钮.
粘贴配置后, 你需要重新启动Claude Desktop. 这样就完成了. Claude Desktop现在可以调用你的函数来计算弹道距离.
让我们试试看.

在上面的提示中, 我询问如果 Tim 以 2m/s 的速度和 30 度角投掷一块石头, 是否会击中 Sam? Sam 距离 Tim 25 米.
Claude 并未自行进行计算. 相反, Claude 使用了我们提供的工具(通过 MCP). 基于该工具的结果, 模型得出结论:石头不会击中 Sam.
看! 创建MCP, 启动MCP服务器, 连接MCP客户端以及使用工具都轻而易举. 这就是我喜欢这种方法的原因.
MCP已创建;如何托管?
私有MCP需要托管. 你需要自行处理.
但你知道吗? 将其放入HuggingFace Space, 即可获得免费托管.
如果你是第一次在 Spaces 上发布, 这与 Git 的操作非常相似.
前往 HuggingFace Spaces 并点击"新建空间". 填写详细信息并选择 Gradio 作为空间 SDK. 保持模板空白.

当你第一次创建空间时, 会收到将空间与本地代码库连接的说明. 如果你之前使用过 Git, 请原谅我重复这些内容.
确保在 app.launch
方法中添加 share=True
.
ini
app.launch(mcp_server=True, share=True)
如果没有这个设置, 你的应用和API只能在同一环境中使用. 但当我们将其托管在云端时, 我们希望能够从本地计算机访问它. 当你将此设置为True时, Gradio会为你提供一个公共URL, 你可以将其替换到你的客户端(Claude Desktop)中.
最后思考
MCP是新的, 所以我不能声称自己是专家.
我虽然知道如何将 MCP 服务器连接到 Claude Desktop 和 Cursor, 但不知道如何创建一个. 我以为这会像写博士论文一样复杂.
但 Gradio 让这一切变得非常简单.
我现在已经为个人使用创建了数十个 MCP. 你创建过 MCP 服务器吗? 如果不是使用 Gradio, 你更喜欢哪种方法?
好吧, 今天的内容就分享到这里啦!
一家之言, 欢迎拍砖!
Happy coding! Stay GOLDEN!