我是如何构建MCP服务器并免费托管的

只需一分钟即可将任何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!

相关推荐
潘锦7 小时前
AI 编程的真相:一个老程序员的冷静观察
ai编程·cursor
꒰ঌ小武໒꒱7 小时前
DeepSeek 引领前端开发变革:AI 助力学习与工作新路径
人工智能·学习·ai编程
沐森10 小时前
websockt vs sse
前端·ai编程
Jooolin15 小时前
【编程史】全球最大编程论坛:Stack Overflow是如何诞生的?
ai编程·产品·代码规范
Jooolin15 小时前
【编程史】Gitee是啥?它和GitHub关系是什么?
git·github·ai编程
用户8451076036015 小时前
MCP - AI 自动化的金钥匙
ai编程
用户8451076036015 小时前
MindsDB 可能是你唯一需要的MCP服务器
ai编程
用户8451076036015 小时前
不写SQL就能构建数据分析AI代理?
ai编程
简放15 小时前
Cursor-1.0安装Jupyter-Notebook,可视化运行.ipynb文件中Python分片代码
jupyter·ai编程·cursor