diff --git a/packages/server/src/server.ts b/packages/server/src/server.ts
index 487aad9e23b2a2aebd2f7e3fd27eb99a9da9392c..128f8ef95ceeb6ae8ce12db6c18e364182d5a2b0 100644
--- a/packages/server/src/server.ts
+++ b/packages/server/src/server.ts
@@ -1,5 +1,6 @@
 import type { Message } from "ai";
 import express from "express";
+import type { ChatMessage } from "llamaindex";
 import { getUserMessageContent, pipeExpressResponse } from "./helper";
 import { chatWithWorkflow } from "./workflow/stream";
 import type { ServerWorkflow } from "./workflow/type";
@@ -7,12 +8,16 @@ import type { ServerWorkflow } from "./workflow/type";
 export interface LlamaIndexServerParams {
   workflow: ServerWorkflow;
   port?: number;
+  callbacks?: {
+    beforeChat?: (messages: ChatMessage[]) => void;
+  };
 }
 
 export class LlamaIndexServer {
   app: express.Application;
   workflow: ServerWorkflow;
   port: number;
+  callbacks?: LlamaIndexServerParams["callbacks"];
 
   constructor({ workflow, port = 3000 }: LlamaIndexServerParams) {
     this.app = express();
@@ -28,6 +33,7 @@ export class LlamaIndexServer {
     try {
       const { messages } = req.body as { messages: Message[] };
       const userMessageContent = getUserMessageContent(messages);
+      this.callbacks?.beforeChat?.(messages as ChatMessage[]);
       const streamResponse = await chatWithWorkflow(
         userMessageContent,
         this.workflow,