Skip to content

Commit 80c0d23

Browse files
authored
Update Icon.sizes to use string array format (#1411)
1 parent 60f4b2d commit 80c0d23

File tree

3 files changed

+13
-13
lines changed

3 files changed

+13
-13
lines changed

examples/fastmcp/icons_demo.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
icon_data = base64.standard_b64encode(icon_path.read_bytes()).decode()
1515
icon_data_uri = f"data:image/png;base64,{icon_data}"
1616

17-
icon_data = Icon(src=icon_data_uri, mimeType="image/png", sizes="64x64")
17+
icon_data = Icon(src=icon_data_uri, mimeType="image/png", sizes=["64x64"])
1818

1919
# Create server with icons in implementation
2020
mcp = FastMCP("Icons Demo Server", website_url="https://github.com/modelcontextprotocol/python-sdk", icons=[icon_data])
@@ -40,9 +40,9 @@ def prompt_with_icon(text: str) -> str:
4040

4141
@mcp.tool(
4242
icons=[
43-
Icon(src=icon_data_uri, mimeType="image/png", sizes="16x16"),
44-
Icon(src=icon_data_uri, mimeType="image/png", sizes="32x32"),
45-
Icon(src=icon_data_uri, mimeType="image/png", sizes="64x64"),
43+
Icon(src=icon_data_uri, mimeType="image/png", sizes=["16x16"]),
44+
Icon(src=icon_data_uri, mimeType="image/png", sizes=["32x32"]),
45+
Icon(src=icon_data_uri, mimeType="image/png", sizes=["64x64"]),
4646
]
4747
)
4848
def multi_icon_tool(action: str) -> str:

src/mcp/types.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -222,8 +222,8 @@ class Icon(BaseModel):
222222
mimeType: str | None = None
223223
"""Optional MIME type for the icon."""
224224

225-
sizes: str | None = None
226-
"""Optional string specifying icon dimensions (e.g., "48x48 96x96")."""
225+
sizes: list[str] | None = None
226+
"""Optional list of strings specifying icon dimensions (e.g., ["48x48", "96x96"])."""
227227

228228
model_config = ConfigDict(extra="allow")
229229

tests/issues/test_1338_icons_and_metadata.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ async def test_icons_and_website_url():
1515
test_icon = Icon(
1616
src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg==",
1717
mimeType="image/png",
18-
sizes="1x1",
18+
sizes=["1x1"],
1919
)
2020

2121
# Create server with website URL and icon
@@ -80,9 +80,9 @@ async def test_multiple_icons():
8080
"""Test that multiple icons can be added to tools, resources, and prompts."""
8181

8282
# Create multiple test icons
83-
icon1 = Icon(src="data:image/png;base64,icon1", mimeType="image/png", sizes="16x16")
84-
icon2 = Icon(src="data:image/png;base64,icon2", mimeType="image/png", sizes="32x32")
85-
icon3 = Icon(src="data:image/png;base64,icon3", mimeType="image/png", sizes="64x64")
83+
icon1 = Icon(src="data:image/png;base64,icon1", mimeType="image/png", sizes=["16x16"])
84+
icon2 = Icon(src="data:image/png;base64,icon2", mimeType="image/png", sizes=["32x32"])
85+
icon3 = Icon(src="data:image/png;base64,icon3", mimeType="image/png", sizes=["64x64"])
8686

8787
mcp = FastMCP("MultiIconServer")
8888

@@ -98,9 +98,9 @@ def multi_icon_tool() -> str:
9898
tool = tools[0]
9999
assert tool.icons is not None
100100
assert len(tool.icons) == 3
101-
assert tool.icons[0].sizes == "16x16"
102-
assert tool.icons[1].sizes == "32x32"
103-
assert tool.icons[2].sizes == "64x64"
101+
assert tool.icons[0].sizes == ["16x16"]
102+
assert tool.icons[1].sizes == ["32x32"]
103+
assert tool.icons[2].sizes == ["64x64"]
104104

105105

106106
async def test_no_icons_or_website():

0 commit comments

Comments
 (0)