deleteSession method
Terminates the active server-side MCP session and clears local state.
Implementation
Future<void> deleteSession({
Map<String, String> headers = const <String, String>{},
}) async {
if (protocolVersion == latestProtocolVersion) {
throw const McpStreamableProtocolException(
'MCP 2026 HTTP does not support DELETE session requests',
);
}
final requestSessionState = _sessionStateSnapshot;
final requestAuthorizationState = _authorizationStateSnapshot;
final activeSessionId = requestSessionState.sessionId;
if (activeSessionId == null) {
_clearSessionState();
return;
}
return _runTrackedHttpOperation<void>((operation) async {
final activeProtocolVersion = protocolVersion;
final request = await _openTrackedHttpRequest(
() => _httpClient.deleteUrl(endpoint),
operation,
requestAuthorizationState,
);
_applyHeaders(
request,
accept: _acceptJson,
protocolVersion: activeProtocolVersion,
sessionState: requestSessionState,
authorizationState: requestAuthorizationState,
extraHeaders: headers,
);
final response = await _sendTrackedHttpRequest(request, operation);
final body = await _readTrackedHttpResponseBody(
request,
response,
operation,
);
_throwIfHttpErrorForSession(
response,
body,
expectedSessionToken: requestSessionState.token,
expectedAuthorizationToken: requestAuthorizationState.token,
);
_captureSessionHeaders(
response,
captureSessionState: false,
expectedSessionState: requestSessionState,
expectedProtocolVersion: activeProtocolVersion,
);
if (identical(_sessionStateToken, requestSessionState.token)) {
_clearSessionState();
}
});
}