Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion schema/2025-03-26/schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -584,13 +584,21 @@
"type": "object"
},
"Implementation": {
"description": "Describes the name and version of an MCP implementation.",
"description": "Describes the MCP implementation.",
"properties": {
"iconUrl": {
"description": "The optional URL, pointing to an icon for this implementation. The URL should be accessible over the public internet, and should return a square (1:1 aspect ratio) PNG, with recommended dimensions of 512x512.",
"type": "string"
},
"name": {
"type": "string"
},
"version": {
"type": "string"
},
"websiteUrl": {
"description": "An optional URL of the website for this implementation.",
"type": "string"
}
},
"required": [
Expand Down
12 changes: 11 additions & 1 deletion schema/2025-03-26/schema.ts
Original file line number Diff line number Diff line change
Expand Up @@ -272,11 +272,21 @@ export interface ServerCapabilities {
}

/**
* Describes the name and version of an MCP implementation.
* Describes the MCP implementation.
*/
export interface Implementation {
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I do wonder if this makes sense for only servers, or for clients too. I don't think there is a natural place in the spec today to put something server-specific.

name: string;
version: string;
/**
* An optional URL of the website for this implementation.
*
* @format: uri
*/
websiteUrl?: string;
/**
* The optional URL, pointing to an icon for this implementation. The URL should be accessible over the public internet, and should return a square (1:1 aspect ratio) PNG, with recommended dimensions of 512x512.
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am very open to being less opinionated about the file format - just a stake in the ground

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder if quickly people would want to be able to provide different sizes to ensure proper rendering. The Web Manifest's handling if icons might be a reasonable pattern that could be useful here : https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Manifest/Reference/icons

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My thinking here was to keep it simple and just allow folks to specify one large icon, rather than supporting many resolutions. I'm flexible on this.

Copy link
Copy Markdown

@myaroshefsky myaroshefsky May 13, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I started out in your camp, @timrogers , thinking one-size icon should be used and scaled appropriately as needed. It keeps things simple.

But I think there's a reasonable argument to be made for allowing the definition of alternate scales, as @dsp-ant
suggests, since some icons/logos don't scale well up-and-down. I've worked on projects where the actual icon changes in nature depending on how much detail comes through at the target resolution. An icon at 32x32 (e.g. the Favicon dimensions) may look poor when certain details are included and down-scaled, so a simpler variant is used for those scales. But at 128x128 or 512x512, there's opportunity for tiny details to be rendered, so they could be included.

A good example comes from the Apple human interface guidelines.

The Safari icon at 512x512 shows tick marks. The 16x16 version isn't just downsampled. The tick marks are removed:
image

The nice thing about the PWA format is that it's still easy to define one single icon:
"icons": [ { "src": "icon/basic-icon.png" } ]

*/
iconUrl?: string;
}

/* Ping */
Expand Down