本项目是一个使用 Gradio 框架实现的极简 MCP (Model Context Protocol) 服务器示例。它不仅提供一个可视化的 Web UI,还能同时作为一个 MCP 服务器运行,允许兼容 MCP 的 LLM 客户端通过网络调用预设的功能(即“工具”)。

主要功能点:

  • Gradio Web UI: 提供一个简单的网页界面,展示工具的使用方式。
  • MCP 服务器功能: 在同一端口上启动一个 SSE (Server-Sent Events) 形式的 MCP 服务端点。
  • 工具注册: 自动将符合规范的 Python 函数(例如 'letter_counter')作为 MCP 工具暴露给客户端。
  • 易于扩展: 通过添加带有类型提示和文档字符串的 Python 函数,可以方便地增加新的 MCP 工具。
  • 多种部署方式: 可以在本地运行,也可以轻松部署到如 Hugging Face Spaces 等平台,成为公开的 MCP 服务器。

安装步骤:

  1. 克隆仓库:
    git clone https://github.com/Sunwood-ai-labs/gradio-mcp-minimal.git
    cd gradio-mcp-minimal
  2. 创建并激活虚拟环境: 推荐使用 'uv' 或标准 'venv'。
    • 使用 'uv' (如果已安装):
      uv venv
      source .venv/bin/activate
    • 使用标准 'venv':
      python -m venv .venv
      source .venv/bin/activate
  3. 安装依赖:
    uv pip install -r requirements.txt
    # 或者使用 pip:
    # pip install -r requirements.txt

服务器配置(供 MCP 客户端参考):

某些 MCP 客户端需要配置如何启动 MCP 服务器进程。这种配置通常包含服务器的唯一名称、用于启动服务器的可执行命令及其参数。对于本项目,启动命令是运行 'app.py' 文件。

配置时需要提供以下信息:

  • 服务器名称 (server name): 一个用于在客户端中识别此服务器的任意字符串(例如 'gradio-local' 或 'my-gradio-mcp')。
  • 启动命令 (command): 启动服务器进程的可执行程序,通常是 Python 解释器路径(例如 'python' 或 '/path/to/.venv/bin/python')。
  • 命令参数 (args): 传递给启动命令的参数列表。对于本项目,参数是脚本文件的路径(例如 'app.py')。启动脚本会监听 'PORT' 环境变量或默认端口 7860。

根据此仓库信息,一个典型的启动命令配置会指向 'python' 和 'app.py'。客户端会根据这些信息在需要时启动服务器进程。

请注意,本项目示例也展示了客户端直接连接到已运行服务器的 SSE URL 的方式,具体连接方法取决于你使用的 MCP 客户端。

基本使用方法:

  1. 启动服务器: 在项目目录下执行:
    python app.py
    服务器将启动并监听端口(默认为 7860)。你可以在浏览器中访问 'http://127.0.0.1:7860' 查看 Gradio Web UI。MCP SSE 服务端点位于 'http://127.0.0.1:7860/gradio_api/mcp/sse'。
  2. 配置 MCP 客户端: 打开你的 MCP 客户端(如 Claude Desktop, Cline 等)的配置文件。根据客户端要求,添加一个新的 MCP 服务器配置项。这个配置项会包含服务器名称和连接信息(如上面提到的启动命令/参数,或直接的 SSE URL)。
  3. 在 LLM 中调用工具: 重启 MCP 客户端。在 LLM 界面中,你应该能看到一个新的可用工具服务器,以及其中包含的 'letter_counter' 工具。现在你可以在与 LLM 交互时指示它调用 'letter_counter' 工具,例如通过 prompts 中触发工具调用的语法来让 LLM 调用该工具进行字母计数。

可用的工具:

  • 'letter_counter': 计算给定文本中某个字母出现的次数。接受 'text' (要搜索的文本) 和 'letter' (要计数的字母) 作为输入,返回计数结果。

信息

分类

开发者工具