Skip to main content
Glama
smithery.test.ts1.74 kB
import { beforeEach, describe, expect, it, vi } from 'vitest'; import log from '@apify/log'; import { ActorsMcpServer } from '../../src/mcp/server.js'; import smithery from '../../src/smithery.js'; import * as toolsLoader from '../../src/utils/tools-loader.js'; // Silence logs in unit tests log.setLevel(log.LEVELS.OFF); describe('smithery entrypoint barrier behavior', () => { beforeEach(() => { vi.restoreAllMocks(); }); it('calls blockListToolsUntil when apifyToken is present', async () => { // Arrange const blockSpy = vi.spyOn(ActorsMcpServer.prototype as any, 'blockListToolsUntil'); const loadSpy = vi.spyOn(toolsLoader, 'loadToolsFromInput').mockResolvedValue([]); // Act const server = smithery({ config: { apifyToken: 'TEST_TOKEN', enableAddingActors: true } as any }); // Assert expect(server).toBeTruthy(); expect(blockSpy).toHaveBeenCalledTimes(1); expect(loadSpy).toHaveBeenCalledTimes(1); }); it('does not call blockListToolsUntil when apifyToken is missing', async () => { // Arrange const blockSpy = vi.spyOn(ActorsMcpServer.prototype as any, 'blockListToolsUntil'); const loadSpy = vi.spyOn(toolsLoader, 'loadToolsFromInput').mockResolvedValue([]); const originalToken = process.env.APIFY_TOKEN; delete process.env.APIFY_TOKEN; // Act const server = smithery({ config: { enableAddingActors: true } as any }); // Assert expect(server).toBeTruthy(); expect(blockSpy).not.toHaveBeenCalled(); expect(loadSpy).not.toHaveBeenCalled(); if (originalToken !== undefined) process.env.APIFY_TOKEN = originalToken; }); });

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

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