Skip to content

Tool list changes not picked up by ChatGPT on reconnect #84

@hifi-phil

Description

@hifi-phil

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions