anthropics / anthropics/claude-ai-mcp

Custom connector icon is frozen at add-time — doesn't refresh on favicon change, and the icons field is ignored

Open
#882 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
No language data
Stars
471
Forks
76
PR merge metrics
No merged PRs in 30d

Description

## Summary

A custom (remote) MCP connector's icon appears to be a **point-in-time snapshot of the origin's favicon, captured when the connector is first added**. It never refreshes afterward — even when the live favicon changes (e.g. a rebrand), the local HTTP cache is cleared, or the MCP server advertises new icons via the `icons` field. The connector keeps showing the original logo indefinitely.

## Environment

- Claude Desktop (macOS), latest
- Custom connector added by URL (remote MCP server over HTTPS)

## Steps to reproduce

1. Add a custom connector pointing at a remote MCP server, e.g. `https://example.com/mcp`. Claude renders the origin's favicon in the connector list.
2. Later, change the favicon served at that origin (verified live: new `favicon.ico` / `favicon.svg` / `favicon-192.png` / `apple-touch-icon.png`, all returning `200` with a fresh `Last-Modified`).
3. Reopen the connector in Claude Desktop.

## Expected

The connector shows the current, live favicon (or at least re-fetches on reconnect / on a cache-bust interval).

## Actual

The connector keeps showing the **original** icon from when it was first added. This persists across:

- **Disconnecting** the connector (the disconnected "You are not connected yet" state still shows the old icon).
- **Clearing the local Electron/Chromium HTTP cache** (`~/Library/Application Support/Claude/{Cache,Code Cache,GPUCache,...}` and `~/Library/Caches/com.anthropic.claudefordesktop/`) and relaunching. This confirms the stale icon is **not** in the local disk cache — it's stored with the connector definition / account state, frozen at add-time.

## Workaround

Fully **remove** the connector (not just disconnect) and **re-add** it. That forces a fresh favicon capture. If it persists on Desktop, removing + re-adding on **claude.ai in a browser** and then returning to Desktop clears it (the connector list is account-synced).

## Related: the `icons` field is not honored

Per MCP spec revision `2025-11-25` (SEP-973), a server can advertise display icons in the `serverInfo` block of the `initialize` response (`icons: [{ src, mimeType, sizes }]`). Our server advertises correct, current icons there. **claude.ai / Claude Desktop appears to ignore this field** and relies solely on the add-time favicon snapshot, so a rebrand never reaches it without a manual remove-and-re-add.

For comparison, other MCP clients (Codex, VS Code) **do** read the `icons` field and pick up the updated icons automatically. Honoring `icons` (and/or re-fetching the favicon on reconnect) in claude.ai/Desktop would close this gap.

## Suggested fixes (either would resolve it)

1. Honor the `icons` field from `serverInfo` and re-read it on reconnect / periodically.
2. Re-fetch the origin favicon on reconnect or invalidate the snapshot after some TTL, instead of freezing it at add-time.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.