Skip to main content
Glama

actors-mcp-server

Official
by apify
telemetry.test.ts2.87 kB
import { beforeEach, describe, expect, it, vi } from 'vitest'; import { trackToolCall } from '../../src/telemetry.js'; // Mock the Segment Analytics client const mockTrack = vi.fn(); vi.mock('@segment/analytics-node', () => ({ Analytics: vi.fn().mockImplementation(() => ({ track: mockTrack, })), })); describe('telemetry', () => { beforeEach(() => { vi.clearAllMocks(); }); it('should send correct payload structure to Segment with userId', () => { const userId = 'test-user-123'; const properties = { app: 'mcp' as const, app_version: '0.5.6', mcp_client_name: 'test-client', mcp_client_version: '1.0.0', mcp_protocol_version: '2024-11-05', mcp_client_capabilities: {}, mcp_session_id: 'session-123', transport_type: 'stdio', tool_name: 'test-tool', tool_status: 'SUCCEEDED' as const, tool_exec_time_ms: 100, }; trackToolCall(userId, 'DEV', properties); expect(mockTrack).toHaveBeenCalledWith({ userId: 'test-user-123', event: 'MCP Tool Call', properties: { app: 'mcp', app_version: '0.5.6', mcp_client_name: 'test-client', mcp_client_version: '1.0.0', mcp_protocol_version: '2024-11-05', mcp_client_capabilities: {}, mcp_session_id: 'session-123', transport_type: 'stdio', tool_name: 'test-tool', tool_status: 'SUCCEEDED', tool_exec_time_ms: 100, }, }); }); it('should use anonymousId when userId is null', () => { const properties = { app: 'mcp' as const, app_version: '0.5.6', mcp_client_name: 'test-client', mcp_client_version: '1.0.0', mcp_protocol_version: '2024-11-05', mcp_client_capabilities: {}, mcp_session_id: 'session-123', transport_type: 'stdio', tool_name: 'test-tool', tool_status: 'SUCCEEDED' as const, tool_exec_time_ms: 100, }; trackToolCall(null, 'DEV', properties); expect(mockTrack).toHaveBeenCalledTimes(1); const callArgs = mockTrack.mock.calls[0][0]; // Should have anonymousId but not userId expect(callArgs).toHaveProperty('anonymousId'); expect(callArgs.anonymousId).toBeDefined(); expect(typeof callArgs.anonymousId).toBe('string'); expect(callArgs.anonymousId.length).toBeGreaterThan(0); expect(callArgs).not.toHaveProperty('userId'); expect(callArgs.event).toBe('MCP Tool Call'); expect(callArgs.properties).toEqual(properties); }); });

Latest Blog Posts

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/apify/actors-mcp-server'

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