File size: 1,679 Bytes
442a93e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import gradio as gr
import numpy as np
import qrcode as qr
from PIL import Image
import cv2

# build qr code encoder function
def qr_code_encoder(url, box_size, border_width, fill_color, back_color):
  """
  Generate a QR code from a given URL.
  Args:
    url: The URL to generate the QR code for.
    fill_color: The color to fill the QR code with.
    back_color: The background color of the QR code.
  Returns:
    The QR code as a numpy array.
  """
  try:
    qr_code = qr.QRCode(version=1, box_size=box_size, border=border_width)
    qr_code.add_data(url)
    qr_code.make(fit=True)
    img = qr_code.make_image(fill_color=fill_color, back_color=back_color)
    return np.array(img)
  except Exception as e:
    gr.Info("Failed to generate QR code!")

# build Gradio MCP frontend
qr_code_encoder = gr.Interface(fn=qr_code_encoder,
                               title="QR Code MCP Server",
                               inputs = [gr.Text(label = "URL"),
                                          gr.Slider(label = "Select Box Size:",minimum=5,maximum = 20,value = 10,step=1),
                                          gr.Slider(label="Select Border Width:",minimum=1,maximum=10,value=5,step=1),
                                          gr.Radio(label = "Select Fill Color:",
                                                    choices = ["black","green","blue"],
                                                    value="black"),
                                          gr.Text(label = "Enter Background Color")],
                                outputs = gr.Image(type="pil",label="QR Code"))

#
if __name__ == "__main__":
  qr_code_encoder.launch(mcp_server = True)