Skip to main content
Glama

qrcode generator

qrcode_mcp_server.py3.99 kB
#!/usr/bin/env python3 """ QR码生成MCP服务器 使用FastMCP实现标准MCP协议 """ import logging from mcp.server.fastmcp import FastMCP from mcp.types import ImageContent from qrcode_utils import text_to_qr_base64 # 配置日志 logging.basicConfig(level=logging.INFO) logger = logging.getLogger("qrcode-mcp-server") # 初始化FastMCP服务器 mcp = FastMCP("qrcode-mcp") @mcp.tool() async def generate_qr_code( text: str, box_size: int = 10, border: int = 4, fill_color: str = "black", back_color: str = "white", ) -> ImageContent: """Generate QR code(生成二维码图片) from text and return as image with description. Args: text: Text content to convert to QR code box_size: Size of each box in pixels (1-50) border: Number of boxes for border (0-20) fill_color: Foreground color back_color: Background color """ if not text or not text.strip(): raise ValueError("Text content cannot be empty") # 验证参数范围 if not (1 <= box_size <= 50): raise ValueError("box_size must be between 1 and 50") if not (0 <= border <= 20): raise ValueError("border must be between 0 and 20") try: # 生成QR码的base64编码 base64_result = text_to_qr_base64( text=text, box_size=box_size, border=border, fill_color=fill_color, back_color=back_color, image_format="JPEG", ) # 按照MCP文档要求的格式返回图片 return ImageContent(type="image", data=base64_result, mimeType="image/jpeg") except Exception as e: logger.error(f"Failed to generate QR code: {e}") raise RuntimeError(f"Failed to generate QR code: {str(e)}") def main_stdio(): """STDIO传输模式入口点""" logger.info("启动QR码MCP服务器 (STDIO传输模式)") mcp.run(transport="stdio") def main_remote(host: str = "127.0.0.1", port: int = 8008, transport: str = "http"): """HTTP传输模式入口点""" import uvicorn logger.info(f"启动QR码MCP服务器 (HTTP传输模式) - {host}:{port}") if transport == "sse": app = mcp.sse_app() else: app = mcp.streamable_http_app() uvicorn.run(app, host=host, port=port) def main_http_with_args(): """带命令行参数解析的HTTP服务器启动器""" import argparse import sys # 如果从主脚本调用,需要过滤掉 --http 参数 argv = sys.argv[1:] if argv and argv[0] == "--http": argv = argv[1:] parser = argparse.ArgumentParser(description="QR码MCP服务器 - HTTP传输模式") parser.add_argument("--host", default="127.0.0.1", help="绑定的主机地址") parser.add_argument("--port", type=int, default=8008, help="绑定的端口号") args = parser.parse_args(argv) main_remote(args.host, args.port) def main_sse_with_args(): """带命令行参数解析的HTTP服务器启动器""" import argparse import sys # 如果从主脚本调用,需要过滤掉 --http 参数 argv = sys.argv[1:] if argv and argv[0] == "--sse": argv = argv[1:] parser = argparse.ArgumentParser(description="QR码MCP服务器 - SSE传输模式") parser.add_argument("--host", default="127.0.0.1", help="绑定的主机地址") parser.add_argument("--port", type=int, default=8008, help="绑定的端口号") args = parser.parse_args(argv) main_remote(args.host, args.port, transport="sse") if __name__ == "__main__": import sys if len(sys.argv) > 1 and sys.argv[1] == "--http": # HTTP模式:python qrcode_mcp_server.py --http [--host HOST] [--port PORT] main_http_with_args() elif len(sys.argv) > 1 and sys.argv[1] == "--sse": # SSE模式:python qrcode_mcp_server.py --sse [--host HOST] [--port PORT] main_sse_with_args() else: # 默认使用STDIO模式 main_stdio()

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/2niuhe/qrcode_mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server