From cd20854242c795b77366cf785127860ae0b51c07 Mon Sep 17 00:00:00 2001 From: logikonline Date: Sat, 4 Apr 2026 18:10:53 -0400 Subject: [PATCH] feat(spec): add icon field to MCP manifest spec Add optional icon field to server metadata for displaying server icons in clients. Update JSON schema with URI format validation. Add documentation explaining icon should be square PNG/SVG with fallback behavior. Update examples with icon URLs --- examples/github.json | 1 + examples/ironlicensing.json | 3 ++- schema/v0.1.json | 5 +++++ spec.md | 4 ++++ 4 files changed, 12 insertions(+), 1 deletion(-) diff --git a/examples/github.json b/examples/github.json index aa10bd0..47e29ae 100644 --- a/examples/github.json +++ b/examples/github.json @@ -10,6 +10,7 @@ "homepage": "https://github.com", "repository": "https://github.com/anthropics/mcp-servers", "license": "MIT", + "icon": "https://github.githubassets.com/favicons/favicon.svg", "keywords": ["github", "git", "code", "issues", "pull-requests"] }, "install": [ diff --git a/examples/ironlicensing.json b/examples/ironlicensing.json index 3fe2b8b..0485289 100644 --- a/examples/ironlicensing.json +++ b/examples/ironlicensing.json @@ -1,5 +1,5 @@ { - "$schema": "https://mcp-manifest.org/schema/v0.1.json", + "$schema": "https://mcp-manifest.dev/schema/v0.1.json", "version": "0.1", "server": { "name": "ironlicensing", @@ -10,6 +10,7 @@ "homepage": "https://www.ironlicensing.com", "repository": "https://git.marketally.com/IronServices/ironlicensing-mcp", "license": "MIT", + "icon": "https://www.ironlicensing.com/favicon.svg", "keywords": ["licensing", "saas", "product-management", "analytics", "tiers", "features"] }, "install": [ diff --git a/schema/v0.1.json b/schema/v0.1.json index 86a0146..f641af9 100644 --- a/schema/v0.1.json +++ b/schema/v0.1.json @@ -55,6 +55,11 @@ "type": "string", "description": "SPDX license identifier" }, + "icon": { + "type": "string", + "format": "uri", + "description": "URL to the server's icon (square, PNG or SVG recommended). Clients SHOULD fall back to a default MCP icon when absent." + }, "keywords": { "type": "array", "items": { "type": "string" }, diff --git a/spec.md b/spec.md index bffa0d8..67ba66d 100644 --- a/spec.md +++ b/spec.md @@ -45,6 +45,7 @@ The manifest MUST be named `mcp-manifest.json` and SHOULD be placed at the root "homepage": "string (optional) — URL to project homepage", "repository": "string (optional) — URL to source repository", "license": "string (optional) — SPDX license identifier", + "icon": "string (optional) — URL to the server's icon (square, PNG or SVG)", "keywords": ["string (optional) — discovery tags"] }, @@ -92,6 +93,8 @@ The manifest MUST be named `mcp-manifest.json` and SHOULD be placed at the root Metadata about the MCP server. The `name` field is the canonical identifier used in client configuration (e.g., the key in `mcpServers`). +The `icon` field is a URL to the server's icon (square, PNG or SVG recommended, minimum 64x64). Clients SHOULD display this icon alongside the server name. When absent, clients SHOULD fall back to a default MCP icon. + #### `install` (required, array) One or more installation methods, ordered by `priority` (lower = preferred). Clients SHOULD present the highest-priority method that matches the user's environment. @@ -163,6 +166,7 @@ A pre-built template for the client's MCP server configuration entry. Variables "homepage": "https://www.ironlicensing.com", "repository": "https://git.marketally.com/IronServices/ironlicensing-mcp", "license": "MIT", + "icon": "https://www.ironlicensing.com/favicon.svg", "keywords": ["licensing", "saas", "product-management", "analytics"] }, "install": [