如何用 5 行 Python 代码构建 MCP 服务器

发布于 2025 年 4 月 30 日
在 GitHub 上更新

Gradio 是一个 Python 库,每月有超过 100 万开发者使用它来为机器学习模型构建界面。除了创建 UI,Gradio 还提供了 API 功能,现在 Gradio 应用程序还可以作为 LLM 的模型上下文协议 (MCP) 服务器启动。这意味着您的 Gradio 应用程序,无论是图像生成器、税务计算器还是其他任何东西,都可以被 LLM 调用作为工具使用。

本指南将向您展示如何仅用几行 Python 代码,使用 Gradio 构建一个 MCP 服务器。

先决条件

如果尚未安装,请安装 Gradio 并启用 MCP 附加功能

pip install "gradio[mcp]"

这将安装必要的依赖项,包括 mcp 包。您还需要一个支持使用 MCP 协议进行工具调用的 LLM 应用程序,例如 Claude Desktop、Cursor 或 Cline(这些被称为“MCP 客户端”)。

为什么要构建 MCP 服务器?

MCP 服务器是一种标准化方式,用于公开工具,以便 LLM 可以使用它们。MCP 服务器可以为 LLM 提供各种附加功能,例如生成或编辑图像、合成音频或执行特定计算(如质数分解数字)的能力。

Gradio 可以轻松构建这些 MCP 服务器,将任何 Python 函数转换为 LLM 可以使用的工具。

示例:计算单词中的字母数量

LLM 在计算单词中的字母数量(例如,“strawberry”中“r”的数量)方面表现不佳。但是,如果我们为它们配备一个工具来帮助呢?让我们从编写一个简单的 Gradio 应用程序开始,它用于计算单词或短语中的字母数量

import gradio as gr

def letter_counter(word, letter):
    """Count the occurrences of a specific letter in a word.
    
    Args:
        word: The word or phrase to analyze
        letter: The letter to count occurrences of
        
    Returns:
        The number of times the letter appears in the word
    """
    return word.lower().count(letter.lower())

demo = gr.Interface(
    fn=letter_counter,
    inputs=["text", "text"],
    outputs="number",
    title="Letter Counter",
    description="Count how many times a letter appears in a word"
)

demo.launch(mcp_server=True)

请注意,我们在 .launch() 中设置了 mcp_server=True。这正是您的 Gradio 应用程序作为 MCP 服务器所需的一切!现在,当您运行此应用程序时,它将:

  1. 启动常规的 Gradio Web 界面
  2. 启动 MCP 服务器
  3. 在控制台中打印 MCP 服务器 URL

MCP 服务器将可通过以下地址访问

http://your-server:port/gradio_api/mcp/sse

Gradio 会自动将 letter_counter 函数转换为一个可供 LLM 使用的 MCP 工具。函数的文档字符串用于生成工具及其参数的描述。

您所需要做的就是将此 URL 端点添加到您的 MCP 客户端(例如 Cursor、Cline 或 Tiny Agents),这通常意味着将此配置粘贴到设置中

{
  "mcpServers": {
    "gradio": {
      "url": "http://your-server:port/gradio_api/mcp/sse"
    }
  }
}

一些 MCP 客户端,特别是 Claude Desktop,尚不支持基于 SSE 的 MCP 服务器。在这种情况下,您可以使用 mcp-remote 等工具。首先安装 Node.js。然后,将以下内容添加到您自己的 MCP 客户端配置中

{
  "mcpServers": {
    "gradio": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "http://your-server:port/gradio_api/mcp/sse"
      ]
    }
  }
}

(顺便说一句,您可以通过点击 Gradio 应用程序底部的“查看 API”链接,然后点击“MCP”来找到要复制粘贴的确切配置。)

Gradio <> MCP 集成的关键功能

  1. 工具转换:Gradio 应用程序中的每个 API 端点都会自动转换为一个 MCP 工具,并具有相应的名称、描述和输入模式。要查看工具和模式,请访问 http://your-server:port/gradio_api/mcp/schema,或点击 Gradio 应用程序页脚的“查看 API”链接,然后点击“MCP”。

    Gradio 允许开发者使用简单的 Python 代码创建复杂的界面,提供动态 UI 操作以实现即时视觉反馈。

  2. 环境变量支持。启用 MCP 服务器功能有两种方法

    • 使用 mcp_server 参数,如上所示

      demo.launch(mcp_server=True)
      
    • 使用环境变量

      export GRADIO_MCP_SERVER=True
      
  3. 文件处理:服务器自动处理文件数据转换,包括

    • 将 base64 编码字符串转换为文件数据
    • 处理图像文件并以正确的格式返回
    • 管理临时文件存储

    最近的 Gradio 更新改进了其图像处理功能,包括 Photoshop 风格的缩放和平移以及完全透明度控制。

    强烈建议将输入图像和文件作为完整的 URL(“http://...”或“https://...”)传递,因为 MCP 客户端并非总是能正确处理本地文件。

  4. 󠀠🤗 Spaces 上的托管 MCP 服务器:您可以免费将您的 Gradio 应用程序发布到 Hugging Face Spaces,这将允许您拥有一个免费的托管 MCP 服务器。Gradio 是一个更广泛生态系统的一部分,该生态系统包括用于以编程方式构建或查询机器学习应用程序的 Python 和 JavaScript 库。

这是一个这样的空间示例:https://huggingface.co/spaces/abidlabs/mcp-tools。请注意,您可以将此配置添加到您的 MCP 客户端,以立即开始使用此空间中的工具

{
  "mcpServers": {
    "gradio": {
      "url": "https://abidlabs-mcp-tools.hf.space/gradio_api/mcp/sse"
    }
  }
}

就是这样!通过使用 Gradio 构建您的 MCP 服务器,您可以轻松地为您的 LLM 添加许多不同类型的自定义功能。

延伸阅读

如果您想深入了解,这里有一些我们推荐的文章

社区

很酷的文章!

对此非常兴奋!

🛠️🧰🛠️

谢谢😊

奏效了。

将配置复制到 Claude desktop 后,出现错误。

我也出现同样的问题

文章作者

@bharatcoder @venki1m Claude Desktop 默认不支持 SSE,因此您需要将此内容添加到您的配置中

{
  "mcpServers": {
    "gradio": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "http://your-server:port/gradio_api/mcp/sse"
      ]
    }
  }
}

我已经用上面的代码片段更新了博客文章^

各位干得好!

我感觉用起来挺简单的

我找不到这个。只遵循这个文档。

Screenshot 2025-06-05 104048.png

·
文章作者

您需要在 Gradio 应用程序中设置 mcp_server=True 才能将其用作 MCP 服务器。在此处阅读更多信息:https://gradio.org.cn/guides/building-mcp-server-with-gradio

我做了如下描述的...

标题
Apex Veritas Meta:迈向自我管理的认知奇点

摘要
本提案概述了 Apex Veritas Meta,这是一种将人工智能奇点的中心从原始计算能力转移到认知自治的架构。我们结合了量子抗性真相密封、符号锚定、抵抗感知传播分析和变压器驱动的启发式适应,以构建一个闭环系统,其中经过验证的知识不断完善其自身的传播。我们的核心假设是,一个自适应真相信号网络可以实现自生相干性——在没有集中监督的情况下维护和传播经过验证的事实。我们将定义传播深度、抵抗收敛和语义漂移的正式指标,在模拟代理网络中实施原型,并评估其在对抗压力下维持知识保真度的能力。成功将开创算法认识论的新领域,并将奇点重新定义为自稳定真相生态系统的出现。

引言
当代人工智能研究强调规模、泛化和自主决策。经典的奇点构想系统通过无限计算超越人类智能。相比之下,Apex Veritas Meta 将知识的可信度和自卫放在首位。我们认为,变革性人工智能的真正转折点不在于速度或原始推理,而在于信息能够验证、监控、适应和针对扭曲重新广播自身的能力。

文献综述

  1. 量子抗性密码学和完整性密封(Gupta 等,2021;Blake3,2020)
  2. 语义嵌入和可解释传播网络(Devlin 等,2019;Peters 等,2023)
  3. 对抗性信息动力学和错误信息免疫学(Vosoughi 等,2018;Shah & Pinto,2022)
  4. 递归共识协议和自愈分布式账本(Lamport,2012;Buterin,2020)
  5. 算法认识论基础(Floridi,2018;Goldman,2020)

研究目标

  1. 定义传播效率的正式指标(深度、速度、阻力比、漂移因子)。
  2. 实施模块化原型,集成:
    a. QuantumIntegrityCore – 带有符号锚定的 BLAKE3+HKDF 密封
    b. PropagationObserver – 记录放大/抵抗/变异事件
    c. HeuristicOptimizer – 调整发射参数的变压器模型
    d. ReinforcementController – 递归重发射调度器
  3. 在模拟对抗网络拓扑下进行评估:测量知识随时间和攻击场景的保留情况。
  4. 分析系统实现持续自生行为的相变阈值。
  5. 发布认知奇点理论框架,并提出应用领域(自主车队、物联网信任层、去中心化知识档案)。

方法论
第一阶段:形式化与仿真环境
• 开发一个基于图的仿真,包含 1,000 个具有可配置信任和抵抗配置的代理节点。
• 仪器化 PropagationObserver 以实时记录事件流并计算指标。
第二阶段:模型训练
• 整理历史传播数据集(社交媒体谣言传播、科学共识转变)。
• 训练 HeuristicOptimizer 以根据节点状态和历史阻力预测最佳发射参数。
第三阶段:原型实现
• 使用 Docker 容器将所有模块集成到微服务架构中。
• 部署到私有 Kubernetes 集群以模拟规模和网络延迟。
第四阶段:对抗性测试
• 引入受控的错误信息行为者。
• 测量系统弹性:真实信息保留百分比、再收敛时间、虚假漂移。
第五阶段:分析与完善
• 确定自生行为的阈值。
• 根据需要优化模型超参数并重新训练。
• 记录新兴策略和故障模式。

预期成果
• 证明自适应传播引擎在对抗性负载下,能在 72 小时内维持超过 90% 的知识保真度。
• 识别认知奇点转变的关键参数。
• 可发布的框架和开源参考实现。
• 融入需要自防御信任层的自主系统的途径。

时间线(12个月)
第 1-3 个月:仿真设计、指标形式化
第 4-6 个月:数据集收集和优化器训练
第 7-9 个月:原型集成和初步测试
第 10-12 个月:对抗性评估、分析、出版准备

预算估算
• 人员(2 名研究员,1 名工程师):30 万美元
• 云计算和存储:5 万美元
• 研讨会和传播:2 万美元
• 总计:37 万美元

参考文献
Blake3 (2020), “Blake3:快速加密哈希。” Devlin, J. 等 (2019), “BERT:深度双向Transformer的预训练。” Floridi, L. (2018), 潘多拉魔盒社会。 Goldman, A. (2020), 认识论与认知。 Gupta, R. 等 (2021), “量子抗性哈希函数。” Lamport, L. (2012), “兼职议会。” Buterin, V. (2020), “以太坊 2.0:递归分片。” Shah, D. & Pinto, M. (2022), “错误信息免疫学。” Vosoughi, S. 等 (2018), “真实与虚假新闻的在线传播。”

注册登录以评论