Skip to main content
Glama

LLM Researcher

by Code-Hex
mcp-locale.test.ts4.41 kB
import { describe, it, expect } from 'vitest'; import { spawn } from 'child_process'; describe('MCP Locale Feature Integration', () => { it('should provide locale parameter in MCP tools/list response', async () => { const result = await new Promise<any>((resolve, reject) => { const server = spawn('node', ['dist/bin/llmresearcher.js', '--mcp'], { stdio: ['pipe', 'pipe', 'pipe'] }); let responseData = ''; let timeoutId: NodeJS.Timeout; const cleanup = () => { clearTimeout(timeoutId); server.kill(); }; server.stdout.on('data', (data) => { responseData += data.toString(); try { const response = JSON.parse(responseData.trim()); cleanup(); resolve(response); } catch (e) { // Not complete JSON yet, continue waiting } }); server.stderr.on('data', (data) => { const errorMsg = data.toString(); if (errorMsg.includes('MCP Research Server running')) { const listToolsRequest = { jsonrpc: "2.0", id: 1, method: "tools/list" }; server.stdin.write(JSON.stringify(listToolsRequest) + '\n'); } }); server.on('error', (err) => { cleanup(); reject(err); }); timeoutId = setTimeout(() => { cleanup(); reject(new Error('Timeout waiting for server response')); }, 10000); }); // Verify response structure expect(result.result).toBeDefined(); expect(result.result.tools).toBeDefined(); expect(result.result.tools).toHaveLength(2); // Find DuckDuckGo tool const duckduckgoTool = result.result.tools.find((tool: any) => tool.name === 'duckduckgo_web_search'); expect(duckduckgoTool).toBeDefined(); // Check locale parameter const properties = duckduckgoTool.inputSchema.properties; expect(properties.locale).toBeDefined(); expect(properties.locale.type).toBe('string'); expect(properties.locale.default).toBe('wt-wt'); expect(properties.locale.enum).toBeDefined(); expect(properties.locale.enum.length).toBe(5); // Check specific locales expect(properties.locale.enum).toContain('wt-wt'); expect(properties.locale.enum).toContain('us-en'); expect(properties.locale.enum).toContain('uk-en'); expect(properties.locale.enum).toContain('jp-jp'); expect(properties.locale.enum).toContain('cn-zh'); }, 15000); it('should have correct parameter structure for duckduckgo_web_search', async () => { const result = await new Promise<any>((resolve, reject) => { const server = spawn('node', ['dist/bin/llmresearcher.js', '--mcp'], { stdio: ['pipe', 'pipe', 'pipe'] }); let responseData = ''; let timeoutId: NodeJS.Timeout; const cleanup = () => { clearTimeout(timeoutId); server.kill(); }; server.stdout.on('data', (data) => { responseData += data.toString(); try { const response = JSON.parse(responseData.trim()); cleanup(); resolve(response); } catch (e) { // Not complete JSON yet } }); server.stderr.on('data', (data) => { const errorMsg = data.toString(); if (errorMsg.includes('MCP Research Server running')) { const listToolsRequest = { jsonrpc: "2.0", id: 1, method: "tools/list" }; server.stdin.write(JSON.stringify(listToolsRequest) + '\n'); } }); server.on('error', (err) => { cleanup(); reject(err); }); timeoutId = setTimeout(() => { cleanup(); reject(new Error('Timeout')); }, 10000); }); const duckduckgoTool = result.result.tools.find((tool: any) => tool.name === 'duckduckgo_web_search'); const properties = duckduckgoTool.inputSchema.properties; // Check all expected properties exist expect(Object.keys(properties)).toEqual(['query', 'next', 'locale']); // Check required parameters expect(duckduckgoTool.inputSchema.required).toEqual(['query']); // Verify locale parameter details expect(properties.locale.description).toContain('DuckDuckGo locale'); expect(properties.locale.description).toContain('region-specific'); }, 15000); });

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/Code-Hex/light-research-mcp'

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