Skip to content

Recover from lost MCP operation responses #334

Description

@QinyangTan

I’m using DevSpace with ChatGPT over the remote MCP endpoint for normal coding work on my Mac.

The specific reliability problem here is not the transport disconnect itself. It is what happens when a local side effect has already started or completed, but the MCP response is lost before the caller receives it.

Two concrete cases:

  • A file mutation succeeds locally, but ChatGPT does not receive the result. A blind retry can repeat the mutation or act on stale file state.
  • exec_command creates a process session locally, but the response containing the sessionId is lost. The process can continue running while the caller no longer has its handle. The same retry problem applies to write_stdin, where repeating an unknown call could send input twice.

The scope here is only recovery from that lost-response ambiguity. DevSpace does not need to handle tunnel failures or reconnect the transport itself.

The current #335 approach uses a required stable operationId on side-effecting tools. DevSpace records the first operation result in memory for the lifetime of the server process. An exact retry with the same operation ID joins/replays the original operation instead of repeating the side effect; using the same ID with different arguments fails closed. File write/edit also keep an expected-before content hash as a second guard for a new operation based on stale state.

This is intentionally process-local. It does not try to survive a DevSpace restart, which is a separate lifecycle problem.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions