LLMs之MCP:如何使用 Gradio 构建 MCP 服务器

LLMs之MCP:如何使用 Gradio 构建 MCP 服务器

导读:本文详细介绍了如何使用Gradio构建MCP服务器,包括前提条件、构建方法、关键特性和相关资源。通过一个简单的字母计数示例,演示了如何将Gradio应用转换为LLM可以使用的工具。Gradio在构建MCP服务器比较便利和灵活,开发者可以使用Gradio为LLM添加各种自定义功能。

>> Gradio 的新功能:Gradio 现在支持将应用作为 MCP 服务器启动,使得 LLMs 能够调用这些应用作为工具,扩展其能力。

>> 构建 MCP 服务器的简便性:只需几行代码,开发者就可以将自己的 Python 函数包装为 LLMs 可调用的工具,极大地降低了集成门槛。

>> 广泛的适用性:无论是图像生成、音频合成还是数学计算,只要是 Python 函数,都可以通过 Gradio 转换为 MCP 工具,供 LLMs 使用。

总之,Gradio 与 MCP 的集成为开发者提供了一个强大而灵活的工具,使得构建和部署可供 LLMs 使用的工具变得前所未有的简单

目录

如何使用 Gradio 构建 MCP 服务器

1. 引言

2. 构建 MCP 服务器的先决条件

3. 为什么构建 MCP 服务器?

4. 示例:统计单词中某个字母的出现次数

5. Gradio 与 MCP 集成的关键特性


如何使用 Gradio 构建 MCP 服务器

地址

文章地址:https://huggingface.co/blog/gradio-mcp

时间

2025年430

作者

Abubakar Abid

yuvraj sharma

1. 引言

Gradio 是一个广泛使用的 Python 库,每月有超过 100 万开发者使用它来构建机器学习模型的用户界面。 除了创建 UI,Gradio 还提供 API 功能,现在更支持将 Gradio 应用作为 Model Context Protocol(MCP)服务器启动的新功能,使得大型语言模型(LLMs)能够调用这些应用作为工具。
>> Gradio是一个流行的Python库,用于构建机器学习模型的接口。
>> Gradio不仅可以创建UI,还提供API功能。
>> Gradio应用现在可以作为LLM的Model Context Protocol (MCP) 服务器启动。这意味着Gradio应用可以被LLM调用作为工具。

2. 构建 MCP 服务器的先决条件

明确了使用Gradio构建MCP服务器所需的软件环境。要构建 MCP 服务器,需要满足以下条件:
>> 安装Gradio时需要包含[mcp] extra,即pip install "gradio[mcp]"。
>> 需要支持工具调用且使用MCP协议的LLM应用,例如Claude Desktop, Cursor, 或 Cline(称为“MCP客户端”)。

3. 为什么构建 MCP 服务器?

MCP 服务器是一种标准化的方式,用于向 LLMs 暴露工具,使其能够执行额外的功能,如生成或编辑图像、合成音频或执行特定计算(例如质因数分解)。Gradio 使得构建这些 MCP 服务器变得简单,将任何 Python 函数转换为 LLMs 可使用的工具。
阐述了构建MCP服务器的价值和意义,强调了Gradio的便利性。
>> MCP服务器是一种标准化的方式来暴露工具,以便LLM可以使用它们。
>>MCP服务器可以为LLM提供各种额外的能力,例如生成或编辑图像、合成音频、执行特定计算等。
>>Gradio使得构建这些MCP服务器变得容易,将任何Python函数转换为LLM可以使用的工具。

4. 示例:统计单词中某个字母的出现次数

通过一个具体的例子,演示了如何使用Gradio构建MCP服务器,并提供了配置信息。LLMs 在统计单词中某个字母的出现次数方面表现不佳。 通过为其提供一个工具,可以提升其能力。

以下是一个使用 Gradio 构建的简单应用,用于统计单词或短语中某个字母的出现次数:
通过设置mcp_server=True,Gradio应用就可以作为MCP服务器运行。
Gradio自动将letter_counter函数转换为MCP工具,函数的docstring用于生成工具的描述和参数。

提供了将MCP服务器URL添加到MCP客户端配置的示例:

import gradio as grdef letter_counter(word, letter):"""统计特定字母在单词中的出现次数。参数:word: 要分析的单词或短语letter: 要统计的字母返回:字母在单词中出现的次数"""return word.lower().count(letter.lower())demo = gr.Interface(fn=letter_counter,inputs=["text", "text"],outputs="number",title="字母计数器",description="统计某个字母在单词中出现的次数"
)demo.launch(mcp_server=True)

设置 mcp_server=True 后,Gradio 应用将:

  1. 启动常规的 Gradio Web 界面

  2. 启动 MCP 服务器

  3. 在控制台打印 MCP 服务器的 URL

MCP 服务器将可通过以下地址访问:http://your-server:port/gradio_api/mcp/sse

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

只需将此 URL 端点添加到 MCP 客户端的配置中即可,例如:

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

对于尚不支持 SSE 的 MCP 客户端(如 Claude Desktop),可以使用 mcp-remote 工具进行中转。 首先安装 Node.js,然后在 MCP 客户端配置中添加以下内容:

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

此外,可以通过 Gradio 应用底部的 "View API" 链接,点击 "MCP" 查看确切的配置。

5. Gradio 与 MCP 集成的关键特性

详细介绍了Gradio <> MCP集成的关键特性,包括工具转换、环境变量支持、文件处理和托管服务器。

>> 工具转换:Gradio 应用中的每个 API 端点都会自动转换为具有相应名称、描述和输入模式的 MCP 工具。 可以通过访问 http://your-server:port/gradio_api/mcp/schema 或 Gradio 应用底部的 "View API" 链接,点击 "MCP" 查看工具和模式。

>> 环境 变量支持: 可以使用mcp_server参数或设置GRADIO_MCP_SERVER=True环境变量来启用MCP服务器功能。

>> 文件处理: 服务器自动处理文件数据转换,包括base64编码字符串到文件数据、图像文件处理和临时文件存储。

>> 托管 MCP 服务器在 �� Spaces 上: 可以将Gradio应用免费发布到Hugging Face Spaces,从而获得免费的托管MCP服务器。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/news/907821.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu20.04.5-arm64版安装robotjs

ubuntu20.04.5arm上使用robotjs #ssh&#xff0c;可选 sudo apt update sudo apt install openssh-server sudo systemctl status ssh sudo systemctl enable ssh sudo systemctl enable --now ssh #防火墙相关&#xff0c;可选 sudo ufw allow ssh sudo ufw allow 2222/tc…

craw4ai 抓取实时信息,与 mt4外行行情结合实时交易,基本面来觉得趋势方向,搞一个外汇交易策略

结合实时信息抓取、MT4行情数据、基本面分析的外汇交易策略框架&#xff0c;旨在通过多维度数据融合提升交易决策质量&#xff1a;行不行不知道先试试&#xff0c;理论是对的&#xff0c;只要基本面方向没错 策略名称&#xff1a;Tri-Sync 外汇交易系统 核心理念 「基本面定方…

Python中scapy库详细使用(强大的交互式数据包操作程序和库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、scapy概述1.1 scapy介绍1.2 安装1.3 交互模式1.4 安全注意事项二、基本使用2.1 数据包构造基础2.2 数据包发送2.3 数据包嗅探2.4 数据包分析与操作2.5 网络扫描技术2.6 协议实现示例三、高级功能3.1 数据包重放3.2 …

基于Web的濒危野生动物保护信息管理系统设计(源码+定制+开发)濒危野生动物监测与保护平台开发 面向公众参与的野生动物保护与预警信息系统

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

[SAP] 矩阵复制(Matrix Copy)

SAP中的复制粘贴功能被称为矩阵复制&#xff0c;通过点击对话框或屏幕&#xff0c;并执行下述命令&#xff0c;使用矩阵复制就可以复制多行文本 ① 按下Ctrl-Y&#xff0c;从左上到右下拖拉鼠标来选择文本 ② 文本高亮显示后&#xff0c;按下Ctrl-C ③ 移到新的位置插入文本…

【笔记】在 MSYS2(MINGW64)中安装 Python 工具链的记录

#工作记录 &#x1f4cc; 安装背景 操作系统&#xff1a;MSYS2 MINGW64当前时间&#xff1a;2025年6月1日Python 版本&#xff1a;3.12&#xff08;默认通过 pacman 安装&#xff09;目标工具链&#xff1a; pipxnumpypipsetuptoolswheel &#x1f6e0;️ 安装过程与结果记录…

OpenCV CUDA模块结构分析与形状描述符------在 GPU 上计算图像的原始矩(spatial moments)函数spatialMoments()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 该函数用于在 GPU 上计算图像的原始矩&#xff08;spatial moments&#xff09;。这些矩可用于描述图像中物体的形状特征&#xff0c;如面积、质…

Nacos实战——动态 IP 黑名单过滤

1、需求分析 一些恶意用户&#xff08;‏可能是黑客、爬虫、DDoS ؜攻击者&#xff09;可能频繁请求服务器资​源&#xff0c;导致资源占用过高。针对这种问题&#xff0c;可以通过IP‏ 封禁&#xff0c;可以有效拉؜黑攻击者&#xff0c;防止资源​被滥用&#xff0c;保障合法…

opencv + jpeg_turbo(启用SIMD加速)

背景 opencv的imreadimwrite耗时过大 一张5M的图片读用了140ms,写一张1.7M的图片用149ms 平台&#xff1a;mingw64编译Windows程序版本&#xff1a;opencv4.5.4 加速方案 opencv启用openmpopencv启用jpeg_turbojpeg_turbo启动SIMD加速 下载jpeg_turbo源码 opencv源码自带…

Redis 主从节点

Redis 主从节点的核心区别 特性主节点 (Master)从节点 (Slave/Replica)读写权限可读可写只读&#xff08;默认配置&#xff09;数据流向数据来源从主节点同步数据连接关系可连接多个从节点只能连接一个主节点故障切换故障时需要手动/自动提升从节点可被提升为新的主节点命令执…

汽车安全:功能安全FuSa、预期功能安全SOTIF与网络安全Cybersecurity 解析

汽车安全的三重防线&#xff1a;深入解析FuSa、SOTIF与网络安全技术 现代汽车已成为装有数千个传感器的移动计算机&#xff0c;安全挑战比传统车辆复杂百倍。 随着汽车智能化、网联化飞速发展&#xff0c;汽车电子电气架构已从简单的分布式控制系统演变为复杂的移动计算平台。现…

github好玩的工具

以下是 GitHub 上一些有趣且实用的开源工具推荐,涵盖 AI 应用、效率提升、趣味开发等方向,结合最新趋势和项目热度整理: 一、AI 与深度伪造工具 Deep-Live-Cam 仅需一张图片即可在视频直播中实时替换人脸,适用于内容创作和虚拟角色开发,支持多平台硬件运行(如 NVIDIA CUD…

Python应用for循环临时变量作用域

大家好!如果你刚开始学习Python&#xff0c;可能会对for循环中临时变量的作用域感到好奇。下面通过一个简单的练习&#xff0c;帮助你理解这个概念。 代码呈现: i 0 for i in range(5):print(i)print(i)代码介绍: 首先我们初始化变量i 0然后进入for循环&#xff0c;这里i成为…

深度学习---负样本训练

一、负样本的本质与核心作用 1. 定义与范畴 负样本&#xff08;Negative Sample&#xff09;是与目标样本&#xff08;正样本&#xff09;在语义、特征或任务目标上存在显著差异的样本。其核心价值在于通过对比学习引导模型学习样本间的判别性特征&#xff0c;而非仅记忆正样本…

实验设计与分析(第6版,Montgomery)第3章单因子实验:方差分析3.11思考题3.7 R语言解题

本文是实验设计与分析&#xff08;第6版&#xff0c;Montgomery著&#xff0c;傅珏生译) 第3章单因子实验&#xff1a;方差分析3.11思考题3.7 R语言解题。主要涉及单因子方差分析&#xff0c;正态性假设检验&#xff0c;残差与拟合值的关系图&#xff0c;平方根变换。 X<-c(…

【PhysUnits】15.8 引入P1后的减法运算(sub.rs)

一、源码 这段代码实现了一个类型级别的二进制数减法系统&#xff0c;包含标准减法和带借位减法。 use core::ops::{Neg, Not, Sub}; use super::basic::{Z0, N1, P1, B0, B1, Integer, NonZero}; use super::add1::Add1; use super::sub1::Sub1; use super::standardization…

npm install命令都做了哪些事情

npm install&#xff08;或其简写 npm i&#xff09;是 Node.js 项目中最重要的命令之一&#xff0c;它负责安装项目所需的所有依赖项。下面我将详细解释这个命令的完整执行过程和底层机制&#xff0c;让你彻底理解它背后的工作原理。 一、npm install 的完整工作流程 1. 依赖…

mkdir: cannot create directory ‘gitlab-stu’: No space left on device

Linux中创建目录时报错“mkdir: cannot create directory ‘gitlab-stu’: No space left on device”&#xff0c;磁盘空间不足。 使用df命令查看&#xff0c;发现 / 下面use%占满了&#xff1a; 查看inode使用情况&#xff1a; 可以看到docker的数据大部分存放在/var/lib/do…

中国高分辨率高质量地面NO2数据集(2008-2023)

时间分辨率&#xff1a;日空间分辨率&#xff1a;1km - 10km共享方式&#xff1a;开放获取数据大小&#xff1a;15.36 GB数据时间范围&#xff1a;2008-01-01 — 2023-12-31元数据更新时间&#xff1a;2024-08-19 数据集摘要 ChinaHighNO2数据集是中国高分辨率高质量近地表空气…

Redis实战-基于redis和lua脚本实现分布式锁以及Redission源码解析【万字长文】

前言&#xff1a; 在上篇博客中&#xff0c;我们探讨了单机模式下如何通过悲观锁&#xff08;synchronized&#xff09;实现"一人一单"功能。然而&#xff0c;在分布式系统或集群环境下&#xff0c;单纯依赖JVM级别的锁机制会出现线程并发安全问题&#xff0c;因为这…