From c76f82736800e034e7a1ce9384c10c195527bb45 Mon Sep 17 00:00:00 2001 From: Tobin South Date: Wed, 21 Jan 2026 08:51:23 -0800 Subject: [PATCH] fix(example qr server): Embed widget HTML in QR server (#317) * feat(qr-server): embed widget HTML for self-contained usage Embed the widget HTML directly in server.py following the same pattern as the say-server. This allows the QR server to be run without any local file dependencies using `uv run `. The get_widget_html() function prefers the built version from dist/ for local development but falls back to the embedded HTML for unbundled usage. * refactor(qr-server): remove widget.html and simplify embedded HTML Address PR review feedback: - Remove separate widget.html file (no longer needed) - Remove get_widget_html() function and dist/mcp-app.html reference - Inline EMBEDDED_WIDGET_HTML directly in widget() resource - Remove unused Path import The server is now fully self-contained in a single file. --------- Co-authored-by: Claude --- examples/qr-server/server.py | 73 +++++++++++++++++++++++++++++++++- examples/qr-server/widget.html | 68 ------------------------------- 2 files changed, 71 insertions(+), 70 deletions(-) delete mode 100644 examples/qr-server/widget.html diff --git a/examples/qr-server/server.py b/examples/qr-server/server.py index f008f67..8838143 100755 --- a/examples/qr-server/server.py +++ b/examples/qr-server/server.py @@ -15,7 +15,6 @@ import os import sys import io import base64 -from pathlib import Path import qrcode import uvicorn @@ -29,6 +28,76 @@ PORT = int(os.environ.get("PORT", "3108")) mcp = FastMCP("QR Code Server") +# Embedded widget HTML for self-contained usage (uv run or unbundled) +EMBEDDED_WIDGET_HTML = """ + + + + + + +
+ + +""" + @mcp.tool(meta={ "ui":{"resourceUri": WIDGET_URI}, @@ -84,7 +153,7 @@ def generate_qr( ) def widget() -> str: """Widget HTML resource with CSP metadata for external dependencies.""" - return Path(__file__).parent.joinpath("widget.html").read_text() + return EMBEDDED_WIDGET_HTML if __name__ == "__main__": if "--stdio" in sys.argv: diff --git a/examples/qr-server/widget.html b/examples/qr-server/widget.html deleted file mode 100644 index 10a594d..0000000 --- a/examples/qr-server/widget.html +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - - -
- - -