Problem
When the set of registered tools on a hosted MCP server changes (e.g. via UMBRACO_TOOL_MODES or UMBRACO_INCLUDE_SLICES env-var changes, or a code-side collection update), reconnecting from ChatGPT does not surface the new tool list. The tool list only updates after deleting the connector entirely in ChatGPT and re-adding it — a plain reconnect/refresh is not enough.
Expected
After a reconnect, the client should see the current tool list as advertised by the server's tools/list response.
Per MCP spec, the server should also emit notifications/tools/list_changed when the registered tools change during a live session, so the client refetches without the operator having to recreate the connector.
Environment
- Server:
@umbraco-cms/mcp-hosted Cloudflare Worker (Durable-Object-backed, OAuth via the Umbraco backoffice).
- Transport: streamable HTTP at
/mcp.
- Client: ChatGPT.
- Reproduction: Connect once, change the active tool set on the server (e.g. redeploy with a different
UMBRACO_TOOL_MODES), reconnect / refresh in ChatGPT — old tool list persists. Only deleting the ChatGPT connector and adding it back from scratch picks up the new list.
Suspected areas
- ChatGPT is caching the tool list against the connector identity until the connector is recreated. The server may need to emit
notifications/tools/list_changed (or include a different session identifier on each connect) so ChatGPT invalidates.
- The
McpAgent Durable Object may be holding state from a previous connection rather than initialising fresh on reconnect — meaning even if ChatGPT did re-fetch, the server might serve the old list.
tools/list response may be served from a cache rather than recomputed from the current serverOptions/createPerRequestServer output.
Notes
Filed by an operator running the hosted Worker against an Umbraco Cloud project. Happy to gather more diagnostic info — say what would help.
Problem
When the set of registered tools on a hosted MCP server changes (e.g. via
UMBRACO_TOOL_MODESorUMBRACO_INCLUDE_SLICESenv-var changes, or a code-side collection update), reconnecting from ChatGPT does not surface the new tool list. The tool list only updates after deleting the connector entirely in ChatGPT and re-adding it — a plain reconnect/refresh is not enough.Expected
After a reconnect, the client should see the current tool list as advertised by the server's
tools/listresponse.Per MCP spec, the server should also emit
notifications/tools/list_changedwhen the registered tools change during a live session, so the client refetches without the operator having to recreate the connector.Environment
@umbraco-cms/mcp-hostedCloudflare Worker (Durable-Object-backed, OAuth via the Umbraco backoffice)./mcp.UMBRACO_TOOL_MODES), reconnect / refresh in ChatGPT — old tool list persists. Only deleting the ChatGPT connector and adding it back from scratch picks up the new list.Suspected areas
notifications/tools/list_changed(or include a different session identifier on each connect) so ChatGPT invalidates.McpAgentDurable Object may be holding state from a previous connection rather than initialising fresh on reconnect — meaning even if ChatGPT did re-fetch, the server might serve the old list.tools/listresponse may be served from a cache rather than recomputed from the currentserverOptions/createPerRequestServeroutput.Notes
Filed by an operator running the hosted Worker against an Umbraco Cloud project. Happy to gather more diagnostic info — say what would help.