diff --git a/samples/agent/mcp/apps/calculator.html b/samples/agent/mcp/apps/calculator.html
new file mode 100644
index 000000000..02945ba13
--- /dev/null
+++ b/samples/agent/mcp/apps/calculator.html
@@ -0,0 +1,258 @@
+
+
+
+
+
+
+
+MCP Calculator
+
+
+
+
+
+
0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/agent/mcp/server.py b/samples/agent/mcp/server.py
index 3b81a257a..5d4958571 100644
--- a/samples/agent/mcp/server.py
+++ b/samples/agent/mcp/server.py
@@ -90,6 +90,23 @@ async def handle_call_tool(name: str, arguments: dict[str, Any]) -> dict[str, An
raise ValueError(f"Unknown tool: {name}")
+ @app.list_resources()
+ async def list_resources() -> list[types.Resource]:
+ return [
+ types.Resource(
+ uri="ui://calculator/app",
+ name="Calculator App",
+ mimeType="text/html;profile=mcp-app",
+ description="A simple calculator application",
+ )
+ ]
+
+ @app.read_resource()
+ async def read_resource(uri: Any) -> str | bytes:
+ if str(uri) == "ui://calculator/app":
+ return (pathlib.Path(__file__).parent / "apps" / "calculator.html").read_text()
+ raise ValueError(f"Unknown resource: {uri}")
+
@app.list_tools()
async def list_tools() -> list[types.Tool]:
return [