chore: import upstream snapshot with attribution
Deploy Docs / deploy-docs (push) Failing after 1s
Conformance Tests / client-conformance (push) Failing after 3s
Conformance Tests / server-conformance (push) Failing after 1s
GitHub Actions Security Analysis / zizmor (push) Failing after 1s
CI / checks (push) Failing after 59m20s
CI / all-green (push) Has been cancelled
Deploy Docs / deploy-docs (push) Failing after 1s
Conformance Tests / client-conformance (push) Failing after 3s
Conformance Tests / server-conformance (push) Failing after 1s
GitHub Actions Security Analysis / zizmor (push) Failing after 1s
CI / checks (push) Failing after 59m20s
CI / all-green (push) Has been cancelled
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
"""MCPServer Icons Demo Server
|
||||
|
||||
Demonstrates using icons with tools, resources, prompts, and implementation.
|
||||
"""
|
||||
|
||||
import base64
|
||||
from pathlib import Path
|
||||
|
||||
from mcp.server.mcpserver import Icon, MCPServer
|
||||
|
||||
# Load the icon file and convert to data URI
|
||||
icon_path = Path(__file__).parent / "mcp.png"
|
||||
icon_data = base64.standard_b64encode(icon_path.read_bytes()).decode()
|
||||
icon_data_uri = f"data:image/png;base64,{icon_data}"
|
||||
|
||||
icon_data = Icon(src=icon_data_uri, mime_type="image/png", sizes=["64x64"])
|
||||
|
||||
# Create server with icons in implementation
|
||||
mcp = MCPServer(
|
||||
"Icons Demo Server", website_url="https://github.com/modelcontextprotocol/python-sdk", icons=[icon_data]
|
||||
)
|
||||
|
||||
|
||||
@mcp.tool(icons=[icon_data])
|
||||
def demo_tool(message: str) -> str:
|
||||
"""A demo tool with an icon."""
|
||||
return message
|
||||
|
||||
|
||||
@mcp.resource("demo://readme", icons=[icon_data])
|
||||
def readme_resource() -> str:
|
||||
"""A demo resource with an icon"""
|
||||
return "This resource has an icon"
|
||||
|
||||
|
||||
@mcp.prompt("prompt_with_icon", icons=[icon_data])
|
||||
def prompt_with_icon(text: str) -> str:
|
||||
"""A demo prompt with an icon"""
|
||||
return text
|
||||
|
||||
|
||||
@mcp.tool(
|
||||
icons=[
|
||||
Icon(src=icon_data_uri, mime_type="image/png", sizes=["16x16"]),
|
||||
Icon(src=icon_data_uri, mime_type="image/png", sizes=["32x32"]),
|
||||
Icon(src=icon_data_uri, mime_type="image/png", sizes=["64x64"]),
|
||||
]
|
||||
)
|
||||
def multi_icon_tool(action: str) -> str:
|
||||
"""A tool demonstrating multiple icons."""
|
||||
return "multi_icon_tool"
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
# Run the server
|
||||
mcp.run()
|
||||
Reference in New Issue
Block a user