diff --git a/src/server/streamableHttp.test.ts b/src/server/streamableHttp.test.ts
index efd5de1c..730d42ab 100644
--- a/src/server/streamableHttp.test.ts
+++ b/src/server/streamableHttp.test.ts
@@ -1077,6 +1077,13 @@ describe("StreamableHTTPServerTransport in stateless mode", () => {
     await stopTestServer({ server, transport });
   });
 
+  it("should support multiple initializations in stateless mode", async () => {
+    await sendPostRequest(baseUrl, TEST_MESSAGES.initialize);
+    const initResponse = await sendPostRequest(baseUrl, TEST_MESSAGES.initialize);
+    expect(initResponse.status).toBe(200);
+    expect(initResponse.headers.get("mcp-session-id")).toBeNull();
+  });
+
   it("should operate without session ID validation", async () => {
     // Initialize the server first
     const initResponse = await sendPostRequest(baseUrl, TEST_MESSAGES.initialize);
diff --git a/src/server/streamableHttp.ts b/src/server/streamableHttp.ts
index 31aad09c..3f19e1b2 100644
--- a/src/server/streamableHttp.ts
+++ b/src/server/streamableHttp.ts
@@ -334,7 +334,8 @@ export class StreamableHTTPServerTransport implements Transport {
       if (isInitializationRequest) {
         // If it's a server with session management and the session ID is already set we should reject the request
         // to avoid re-initialization.
-        if (this._initialized) {
+        // sessionId undefined means stateless mode, so we don't need to check for re-initialization
+        if (this._initialized && this.sessionId !== undefined) {
           res.writeHead(400).end(JSON.stringify({
             jsonrpc: "2.0",
             error: {