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 [