@@ -8,58 +8,68 @@ import type { Request, Response } from "express"
88import Logger from "@/utils/logger"
99import { startServer } from "./base"
1010
11- const app = express ( )
12- const server = startServer ( )
13- app . use ( cors ( ) )
11+ export const startSSEServer = async ( ) => {
12+ try {
13+ const app = express ( )
14+ const server = startServer ( )
15+ app . use ( cors ( ) )
1416
15- // Log the current log level on startup
16- Logger . info ( `Starting sse server with log level: ${ Logger . getLevel ( ) } ` )
17+ // Log the current log level on startup
18+ Logger . info ( `Starting sse server with log level: ${ Logger . getLevel ( ) } ` )
1719
18- // to support multiple simultaneous connections we have a lookup object from
19- // sessionId to transport
20- const transports : { [ sessionId : string ] : SSEServerTransport } = { }
20+ // to support multiple simultaneous connections we have a lookup object from
21+ // sessionId to transport
22+ const transports : { [ sessionId : string ] : SSEServerTransport } = { }
2123
22- app . get ( "/sse" , async ( _ : Request , res : Response ) => {
23- const transport = new SSEServerTransport ( "/messages" , res )
24- transports [ transport . sessionId ] = transport
25- Logger . info ( "New SSE connection established" , {
26- sessionId : transport . sessionId
27- } )
24+ app . get ( "/sse" , async ( _ : Request , res : Response ) => {
25+ const transport = new SSEServerTransport ( "/messages" , res )
26+ transports [ transport . sessionId ] = transport
27+ Logger . info ( "New SSE connection established" , {
28+ sessionId : transport . sessionId
29+ } )
2830
29- res . on ( "close" , ( ) => {
30- Logger . info ( "SSE connection closed" , { sessionId : transport . sessionId } )
31- delete transports [ transport . sessionId ]
32- } )
31+ res . on ( "close" , ( ) => {
32+ Logger . info ( "SSE connection closed" , { sessionId : transport . sessionId } )
33+ delete transports [ transport . sessionId ]
34+ } )
3335
34- try {
35- await server . connect ( transport )
36- } catch ( error ) {
37- Logger . error ( "Error connecting transport" , {
38- sessionId : transport . sessionId ,
39- error
36+ try {
37+ await server . connect ( transport )
38+ } catch ( error ) {
39+ Logger . error ( "Error connecting transport" , {
40+ sessionId : transport . sessionId ,
41+ error
42+ } )
43+ }
4044 } )
41- }
42- } )
4345
44- app . post ( "/messages" , async ( req : Request , res : Response ) => {
45- const sessionId = req . query . sessionId as string
46- const transport = transports [ sessionId ]
46+ app . post ( "/messages" , async ( req : Request , res : Response ) => {
47+ const sessionId = req . query . sessionId as string
48+ const transport = transports [ sessionId ]
4749
48- if ( transport ) {
49- Logger . debug ( "Handling message" , { sessionId, body : req . body } )
50- try {
51- await transport . handlePostMessage ( req , res )
52- } catch ( error ) {
53- Logger . error ( "Error handling message" , { sessionId, error } )
54- res . status ( 500 ) . send ( "Internal server error" )
55- }
56- } else {
57- Logger . warn ( "No transport found for session" , { sessionId } )
58- res . status ( 400 ) . send ( "No transport found for sessionId" )
59- }
60- } )
50+ if ( transport ) {
51+ Logger . debug ( "Handling message" , { sessionId, body : req . body } )
52+ try {
53+ await transport . handlePostMessage ( req , res )
54+ } catch ( error ) {
55+ Logger . error ( "Error handling message" , { sessionId, error } )
56+ res . status ( 500 ) . send ( "Internal server error" )
57+ }
58+ } else {
59+ Logger . warn ( "No transport found for session" , { sessionId } )
60+ res . status ( 400 ) . send ( "No transport found for sessionId" )
61+ }
62+ } )
6163
62- const PORT = process . env . PORT || 3001
63- app . listen ( PORT , ( ) => {
64- Logger . info ( `BNBChain MCP SSE Server is running on http://localhost:${ PORT } ` )
65- } )
64+ const PORT = process . env . PORT || 3001
65+ app . listen ( PORT , ( ) => {
66+ Logger . info (
67+ `BNBChain MCP SSE Server is running on http://localhost:${ PORT } `
68+ )
69+ } )
70+ return server
71+ } catch ( error ) {
72+ Logger . error ( "Error starting BNBChain MCP SSE Server:" , error )
73+ process . exit ( 1 )
74+ }
75+ }
0 commit comments