我是如何构建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!

相关推荐
吴佳浩1 小时前
Skill 为什么不同于 Tool?Agent 技能库的自演进与动态加载机制
人工智能·agent·ai编程
吴佳浩1 小时前
Tool 的安全性与执行沙箱:从 Docker 到 gVisor 的防御架构
agent·ai编程·mcp
全栈弄潮儿3 小时前
我的代码审查 Prompt:从“能跑”到“可维护”
aigc·openai·ai编程
Setsuna_F_Seiei4 小时前
前端转型 Agent 开发 05 之 Agent Hooks 与 Checkpointer(让 Agent 从全自动转变人为可掌控)
前端·agent·ai编程
飞哥数智坊6 小时前
一个周末,6个项目,我第一次感觉 AI 编程真的进入了新阶段
人工智能·ai编程
stormzhangV7 小时前
别吹 Jev 了
人工智能·aigc·ai编程
小虎AI生活7 小时前
不会写代码,我画了张 A4 草图扔给豆包,二十分钟后拿到能点的网页
ai编程
狗狗狗狗狗乐啊8 小时前
搭一个 AI 对话工作台 AChat:从 0 到可用的完整记录(一)
python·react.js·ai编程
qq_2518364578 小时前
springboot vue3 开发实现 拼豆管理系统
java·开发语言·ai编程
AlbertZein8 小时前
不只看跑分,Step 5 Preview 两个真实编程任务实测
人工智能·ai编程