Skip to content

Commit 1b88a9d

Browse files
committed
feat: export createServer and add ping interval to SSE
1 parent 496b3f6 commit 1b88a9d

File tree

2 files changed

+8
-1
lines changed

2 files changed

+8
-1
lines changed

src/services/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { stdioServer } from './stdio'
66
import { webServer } from './web'
77
import type { OptionsType } from '@/types'
88

9-
const createServer = (options: OptionsType) => {
9+
export const createServer = (options: OptionsType) => {
1010
const server = new McpServer({
1111
name: options.name,
1212
version: options.version,

src/services/web.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import cors from '@fastify/cors'
33
import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js'
44
import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js'
55
import { isInitializeRequest } from '@modelcontextprotocol/sdk/types.js'
6+
import { createServer } from '@/services'
67
import { generateSessionId } from '@/utils'
78
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'
89
import type { OptionsType } from '@/types'
@@ -72,10 +73,16 @@ export async function webServer(server: McpServer, options: OptionsType) {
7273
const transport = new SSEServerTransport('/messages', reply.raw)
7374
transports.sse[transport.sessionId] = transport
7475

76+
const interval = setInterval(() => {
77+
reply.raw.write(`event: ping\ndata: {"time":"${new Date().toISOString()}"}\n\n`)
78+
}, 15000)
79+
7580
reply.raw.on('close', () => {
7681
delete transports.sse[transport.sessionId]
82+
clearInterval(interval)
7783
})
7884

85+
const server = createServer(options)
7986
await server.connect(transport)
8087
})
8188

0 commit comments

Comments
 (0)