Skip to main content
Glama

MCP TypeScript SDK

sse.test.ts4.24 kB
import http from 'http'; import { jest } from '@jest/globals'; import { SSEServerTransport } from './sse.js'; const createMockResponse = () => { const res = { writeHead: jest.fn<http.ServerResponse['writeHead']>(), write: jest.fn<http.ServerResponse['write']>().mockReturnValue(true), on: jest.fn<http.ServerResponse['on']>(), }; res.writeHead.mockReturnThis(); res.on.mockReturnThis(); return res as unknown as http.ServerResponse; }; describe('SSEServerTransport', () => { describe('start method', () => { it('should correctly append sessionId to a simple relative endpoint', async () => { const mockRes = createMockResponse(); const endpoint = '/messages'; const transport = new SSEServerTransport(endpoint, mockRes); const expectedSessionId = transport.sessionId; await transport.start(); expect(mockRes.writeHead).toHaveBeenCalledWith(200, expect.any(Object)); expect(mockRes.write).toHaveBeenCalledTimes(1); expect(mockRes.write).toHaveBeenCalledWith( `event: endpoint\ndata: /messages?sessionId=${expectedSessionId}\n\n` ); }); it('should correctly append sessionId to an endpoint with existing query parameters', async () => { const mockRes = createMockResponse(); const endpoint = '/messages?foo=bar&baz=qux'; const transport = new SSEServerTransport(endpoint, mockRes); const expectedSessionId = transport.sessionId; await transport.start(); expect(mockRes.writeHead).toHaveBeenCalledWith(200, expect.any(Object)); expect(mockRes.write).toHaveBeenCalledTimes(1); expect(mockRes.write).toHaveBeenCalledWith( `event: endpoint\ndata: /messages?foo=bar&baz=qux&sessionId=${expectedSessionId}\n\n` ); }); it('should correctly append sessionId to an endpoint with a hash fragment', async () => { const mockRes = createMockResponse(); const endpoint = '/messages#section1'; const transport = new SSEServerTransport(endpoint, mockRes); const expectedSessionId = transport.sessionId; await transport.start(); expect(mockRes.writeHead).toHaveBeenCalledWith(200, expect.any(Object)); expect(mockRes.write).toHaveBeenCalledTimes(1); expect(mockRes.write).toHaveBeenCalledWith( `event: endpoint\ndata: /messages?sessionId=${expectedSessionId}#section1\n\n` ); }); it('should correctly append sessionId to an endpoint with query parameters and a hash fragment', async () => { const mockRes = createMockResponse(); const endpoint = '/messages?key=value#section2'; const transport = new SSEServerTransport(endpoint, mockRes); const expectedSessionId = transport.sessionId; await transport.start(); expect(mockRes.writeHead).toHaveBeenCalledWith(200, expect.any(Object)); expect(mockRes.write).toHaveBeenCalledTimes(1); expect(mockRes.write).toHaveBeenCalledWith( `event: endpoint\ndata: /messages?key=value&sessionId=${expectedSessionId}#section2\n\n` ); }); it('should correctly handle the root path endpoint "/"', async () => { const mockRes = createMockResponse(); const endpoint = '/'; const transport = new SSEServerTransport(endpoint, mockRes); const expectedSessionId = transport.sessionId; await transport.start(); expect(mockRes.writeHead).toHaveBeenCalledWith(200, expect.any(Object)); expect(mockRes.write).toHaveBeenCalledTimes(1); expect(mockRes.write).toHaveBeenCalledWith( `event: endpoint\ndata: /?sessionId=${expectedSessionId}\n\n` ); }); it('should correctly handle an empty string endpoint ""', async () => { const mockRes = createMockResponse(); const endpoint = ''; const transport = new SSEServerTransport(endpoint, mockRes); const expectedSessionId = transport.sessionId; await transport.start(); expect(mockRes.writeHead).toHaveBeenCalledWith(200, expect.any(Object)); expect(mockRes.write).toHaveBeenCalledTimes(1); expect(mockRes.write).toHaveBeenCalledWith( `event: endpoint\ndata: /?sessionId=${expectedSessionId}\n\n` ); }); }); });

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Jeffwalters9597/MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server