Skip to main content
Glama

ACE MCP Server

factory.test.tsโ€ข4.19 kB
import { createLLMProvider } from '../factory'; import { OpenAIProvider } from '../openai'; import { LMStudioProvider } from '../lmstudio'; import { DeepSeekProvider } from '../deepseek'; import { AnthropicProvider } from '../anthropic'; import { GeminiProvider } from '../gemini'; import { MistralProvider } from '../mistral'; // Mock the provider classes jest.mock('../openai'); jest.mock('../lmstudio'); jest.mock('../deepseek'); jest.mock('../anthropic'); jest.mock('../gemini'); jest.mock('../mistral'); const MockedOpenAIProvider = OpenAIProvider as jest.MockedClass<typeof OpenAIProvider>; const MockedLMStudioProvider = LMStudioProvider as jest.MockedClass<typeof LMStudioProvider>; const MockedDeepSeekProvider = DeepSeekProvider as jest.MockedClass<typeof DeepSeekProvider>; const MockedAnthropicProvider = AnthropicProvider as jest.MockedClass<typeof AnthropicProvider>; const MockedGeminiProvider = GeminiProvider as jest.MockedClass<typeof GeminiProvider>; const MockedMistralProvider = MistralProvider as jest.MockedClass<typeof MistralProvider>; describe('createLLMProvider', () => { beforeEach(() => { jest.clearAllMocks(); }); it('should create OpenAI provider', () => { const config = { provider: 'openai' as const, openai: { apiKey: 'test-key' } }; const provider = createLLMProvider(config); expect(MockedOpenAIProvider).toHaveBeenCalledWith(config.openai); expect(provider).toBeInstanceOf(OpenAIProvider); }); it('should create LM Studio provider', () => { const config = { provider: 'lmstudio' as const, lmstudio: { baseUrl: 'http://localhost:1234/v1' } }; const provider = createLLMProvider(config); expect(MockedLMStudioProvider).toHaveBeenCalledWith(config.lmstudio); expect(provider).toBeInstanceOf(LMStudioProvider); }); it('should throw on unknown provider', () => { const config = { provider: 'unknown' } as any; expect(() => { createLLMProvider(config); }).toThrow('Unknown LLM provider: unknown'); }); it('should pass correct config to OpenAI provider', () => { const openaiConfig = { apiKey: 'sk-test123', model: 'gpt-3.5-turbo', timeout: 60000 }; const config = { provider: 'openai' as const, openai: openaiConfig }; createLLMProvider(config); expect(MockedOpenAIProvider).toHaveBeenCalledWith(openaiConfig); }); it('should pass correct config to LM Studio provider', () => { const lmstudioConfig = { baseUrl: 'http://10.242.247.136:11888/v1', model: 'llama-2', timeout: 120000 }; const config = { provider: 'lmstudio' as const, lmstudio: lmstudioConfig }; createLLMProvider(config); expect(MockedLMStudioProvider).toHaveBeenCalledWith(lmstudioConfig); }); it('should create DeepSeek provider', () => { const config = { provider: 'deepseek' as const, deepseek: { apiKey: 'sk-test-key' } }; const provider = createLLMProvider(config); expect(MockedDeepSeekProvider).toHaveBeenCalledWith(config.deepseek); expect(provider).toBeInstanceOf(DeepSeekProvider); }); it('should create Anthropic provider', () => { const config = { provider: 'anthropic' as const, anthropic: { apiKey: 'sk-ant-test-key' } }; const provider = createLLMProvider(config); expect(MockedAnthropicProvider).toHaveBeenCalledWith(config.anthropic); expect(provider).toBeInstanceOf(AnthropicProvider); }); it('should create Gemini provider', () => { const config = { provider: 'gemini' as const, gemini: { apiKey: 'google-api-key' } }; const provider = createLLMProvider(config); expect(MockedGeminiProvider).toHaveBeenCalledWith(config.gemini); expect(provider).toBeInstanceOf(GeminiProvider); }); it('should create Mistral provider', () => { const config = { provider: 'mistral' as const, mistral: { apiKey: 'mistral-api-key' } }; const provider = createLLMProvider(config); expect(MockedMistralProvider).toHaveBeenCalledWith(config.mistral); expect(provider).toBeInstanceOf(MistralProvider); }); });

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/Angry-Robot-Deals/ace-mcp'

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