Cách xây dựng máy chủ MCP bằng Gradio

Bài viết này thảo luận về cách xây dựng máy chủ MCP bằng Gradio.

  • 6 min read
Cách xây dựng máy chủ MCP bằng Gradio
Bài viết này thảo luận về cách xây dựng máy chủ MCP bằng Gradio.

Cách xây dựng một máy chủ MCP với Gradio trong 5 dòng Python

Gradio là một thư viện Python được hơn 1 triệu nhà phát triển sử dụng mỗi tháng để xây dựng giao diện cho các mô hình máy học. Không chỉ tạo ra giao diện người dùng, Gradio còn cung cấp các khả năng API và — bây giờ! — các ứng dụng Gradio có thể được khởi chạy làm máy chủ Model Context Protocol (MCP) cho LLM. Điều này có nghĩa là ứng dụng Gradio của bạn, cho dù đó là trình tạo hình ảnh, máy tính thuế hay bất kỳ thứ gì khác, đều có thể được LLM gọi là một công cụ.

Hướng dẫn này sẽ chỉ cho bạn cách sử dụng Gradio để xây dựng một máy chủ MCP chỉ trong vài dòng Python.

Nếu chưa cài đặt, vui lòng cài đặt Gradio với MCP extra:

pip install "gradio[mcp]"

Điều này sẽ cài đặt các phụ thuộc cần thiết, bao gồm gói mcp. Bạn cũng sẽ cần một ứng dụng LLM hỗ trợ gọi công cụ bằng giao thức MCP, chẳng hạn như Claude Desktop, Cursor hoặc Cline (chúng được gọi là “MCP Clients”).

Tại sao nên xây dựng một máy chủ MCP?

Một máy chủ MCP là một cách tiêu chuẩn để hiển thị các công cụ để chúng có thể được sử dụng bởi LLM. Một máy chủ MCP có thể cung cấp cho LLM tất cả các loại khả năng bổ sung, chẳng hạn như khả năng tạo hoặc chỉnh sửa hình ảnh, tổng hợp âm thanh hoặc thực hiện các phép tính cụ thể như phân tích thừa số nguyên tố các số.

Gradio giúp bạn dễ dàng xây dựng các máy chủ MCP này, biến bất kỳ hàm Python nào thành một công cụ mà LLM có thể sử dụng.

Ví dụ: Đếm số chữ cái trong một từ

LLM nổi tiếng là không giỏi đếm số lượng chữ cái trong một từ (ví dụ: số lượng chữ “r” trong “strawberry”). Nhưng điều gì sẽ xảy ra nếu chúng ta trang bị cho chúng một công cụ để trợ giúp? Hãy bắt đầu bằng cách viết một ứng dụng Gradio đơn giản để đếm số lượng chữ cái trong một từ hoặc cụm từ:

import gradio as gr

def letter_counter(word, letter):
    """Đếm số lần xuất hiện của một chữ cái cụ thể trong một từ.

    Args:
        word: Từ hoặc cụm từ để phân tích
        letter: Chữ cái để đếm số lần xuất hiện

    Returns:
        Số lần chữ cái xuất hiện trong từ
    """
    return word.lower().count(letter.lower())

demo = gr.Interface(
    fn=letter_counter,
    inputs=["text", "text"],
    outputs="number",
    title="Letter Counter",
    description="Đếm số lần một chữ cái xuất hiện trong một từ"
)

demo.launch(mcp_server=True)

Lưu ý rằng chúng ta đã đặt mcp_server=True trong .launch(). Đây là tất cả những gì cần thiết để ứng dụng Gradio của bạn hoạt động như một máy chủ MCP! Bây giờ, khi bạn chạy ứng dụng này, nó sẽ:

  1. Khởi động giao diện web Gradio thông thường
  2. Khởi động máy chủ MCP
  3. In URL máy chủ MCP trong bảng điều khiển

Máy chủ MCP sẽ có thể truy cập tại:

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

Gradio tự động chuyển đổi hàm letter_counter thành một công cụ MCP có thể được sử dụng bởi LLM. Docstring của hàm được sử dụng để tạo mô tả về công cụ và các tham số của nó.

Tất cả những gì bạn cần làm là thêm điểm cuối URL này vào MCP Client của bạn (ví dụ: Cursor, Cline hoặc Tiny Agents), điều này thường có nghĩa là dán cấu hình này vào cài đặt:

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

Một số MCP Client, đáng chú ý là Claude Desktop, vẫn chưa hỗ trợ Máy chủ MCP dựa trên SSE. Trong những trường hợp đó, bạn có thể sử dụng một công cụ như mcp-remote. Đầu tiên cài đặt Node.js. Sau đó, thêm phần sau vào cấu hình MCP Client của riêng bạn:

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

(Nhân tiện, bạn có thể tìm thấy cấu hình chính xác để sao chép-dán bằng cách đi tới liên kết “Xem API” ở chân trang của ứng dụng Gradio của bạn, sau đó nhấp vào “MCP”).

Các tính năng chính của tích hợp Gradio <> MCP

  1. Chuyển đổi công cụ: Mỗi điểm cuối API trong ứng dụng Gradio của bạn sẽ tự động được chuyển đổi thành một công cụ MCP với tên, mô tả và lược đồ đầu vào tương ứng. Để xem các công cụ và lược đồ, hãy truy cập http://your-server:port/gradio_api/mcp/schema hoặc đi tới liên kết “Xem API” ở chân trang của ứng dụng Gradio của bạn, sau đó nhấp vào “MCP”.

Gradio cho phép các nhà phát triển tạo ra các giao diện phức tạp bằng cách sử dụng mã Python đơn giản, cung cấp khả năng thao tác UI động để có phản hồi trực quan ngay lập tức.

  1. Hỗ trợ biến môi trường. Có hai cách để kích hoạt chức năng máy chủ MCP:

    • Sử dụng tham số mcp_server, như được hiển thị ở trên:
    demo.launch(mcp_server=True)
    
    • Sử dụng các biến môi trường:
    export GRADIO_MCP_SERVER=True
    
  2. Xử lý tệp: Máy chủ tự động xử lý các chuyển đổi dữ liệu tệp, bao gồm:

    • Chuyển đổi chuỗi được mã hóa base64 thành dữ liệu tệp
    • Xử lý các tệp hình ảnh và trả về chúng ở định dạng chính xác
    • Quản lý lưu trữ tệp tạm thời

    Các bản cập nhật Gradio gần đây đã cải thiện khả năng xử lý hình ảnh của nó với các tính năng như thu phóng và xoay kiểu Photoshop và kiểm soát độ trong suốt hoàn toàn.

    Rất nên rằng hình ảnh và tệp đầu vào được truyền dưới dạng URL đầy đủ (“http://…” hoặc “https://…”) vì MCP Client không phải lúc nào cũng xử lý các tệp cục bộ một cách chính xác.

  3. Máy chủ MCP được lưu trữ trên 🤗 Spaces: Bạn có thể xuất bản ứng dụng Gradio của mình miễn phí trên Hugging Face Spaces, điều này sẽ cho phép bạn có một máy chủ MCP được lưu trữ miễn phí. Gradio là một phần của hệ sinh thái rộng lớn hơn bao gồm các thư viện Python và JavaScript để xây dựng hoặc truy vấn các ứng dụng máy học một cách có lập trình.

Đây là một ví dụ về Space như vậy: https://huggingface.co/spaces/abidlabs/mcp-tools. Lưu ý rằng bạn có thể thêm cấu hình này vào MCP Client của mình để bắt đầu sử dụng các công cụ từ Space này ngay lập tức:

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

Và đó là tất cả! Bằng cách sử dụng Gradio để xây dựng máy chủ MCP của bạn, bạn có thể dễ dàng thêm nhiều loại chức năng tùy chỉnh khác nhau vào LLM của mình.

Đọc thêm

Nếu bạn muốn tìm hiểu sâu hơn, đây là một số bài viết mà chúng tôi khuyên dùng:

  • MCP là gì và Tại sao Mọi người – Đột nhiên!– Nói về nó?
  • Giới thiệu về Giao thức MCP
  • Hướng dẫn: Xây dựng Máy chủ MCP với Gradio
  • Hướng dẫn thưởng: Xây dựng MCP Client với Gradio

Recommended for You

4 điều mà Chat Template của Qwen-3 dạy chúng ta

4 điều mà Chat Template của Qwen-3 dạy chúng ta

Chuyển ngữ whisper cực nhanh với Inference Endpoints

Chuyển ngữ whisper cực nhanh với Inference Endpoints

Bài viết này thảo luận về cách sử dụng Inference Endpoints để có được bản ghi whisper cực nhanh.