Skip to main content
Glama

Gotas Commerce MCP Server

test-smithery.js5.24 kB
/** * Script para testar a integração com o Smithery * * Este script testa especificamente a funcionalidade de lazy loading * e a capacidade do servidor de listar ferramentas sem autenticação. */ const http = require('http'); const fs = require('fs'); // Verificar se o servidor está rodando try { const response = http.request({ hostname: 'localhost', port: 3000, path: '/', method: 'GET', timeout: 1000 }, () => { console.log('Servidor está rodando em http://localhost:3000'); }).on('error', () => { console.log('Servidor não está rodando. Iniciando...'); require('./simple-mcp-server.js'); }); response.end(); } catch (error) { console.error('Erro ao verificar o servidor:', error); } // Função para fazer uma requisição HTTP function makeRequest(options, body = null) { return new Promise((resolve, reject) => { const req = http.request(options, (res) => { let data = ''; res.on('data', (chunk) => { data += chunk; }); res.on('end', () => { try { const parsedData = data ? JSON.parse(data) : {}; resolve({ statusCode: res.statusCode, headers: res.headers, data: parsedData, rawData: data }); } catch (e) { resolve({ statusCode: res.statusCode, headers: res.headers, data: null, rawData: data, parseError: e.message }); } }); }); req.on('error', (error) => { reject(error); }); if (body) { req.write(JSON.stringify(body)); } req.end(); }); } // Função para codificar em base64 function encodeBase64(obj) { return Buffer.from(JSON.stringify(obj)).toString('base64'); } // Função principal async function main() { console.log('Testando a integração com o Smithery...'); console.log('Verificando especificamente o lazy loading e a listagem de ferramentas sem autenticação...'); try { // Testar a listagem de ferramentas sem configuração console.log('\n1. Testando a listagem de ferramentas sem configuração...'); const toolsResponse = await makeRequest({ hostname: 'localhost', port: 3000, path: '/mcp?action=list-tools', method: 'GET', headers: { 'Accept': 'application/json' } }); console.log(`Status: ${toolsResponse.statusCode}`); if (toolsResponse.parseError) { console.log(`Erro ao analisar resposta: ${toolsResponse.parseError}`); console.log(`Resposta bruta (primeiros 200 caracteres): ${toolsResponse.rawData.substring(0, 200)}...`); } else { console.log(`Ferramentas disponíveis:`, toolsResponse.data); // Verificar se as ferramentas estão sendo listadas corretamente if (toolsResponse.data && toolsResponse.data.tools && toolsResponse.data.tools.length > 0) { console.log(`\n✅ Sucesso! O servidor está listando ${toolsResponse.data.tools.length} ferramentas sem autenticação.`); console.log('Isso indica que o lazy loading está configurado corretamente para o Smithery.'); } else { console.log(`\n❌ Falha! O servidor não está listando ferramentas corretamente.`); console.log('Verifique a implementação do lazy loading.'); } } // Testar com configuração em base64 console.log('\n2. Testando com configuração em base64...'); const config = { GOTAS_API_KEY: 'test-api-key', GOTAS_BASE_URL: 'https://test.commerce.gotas.com' }; const encodedConfig = encodeBase64(config); const configResponse = await makeRequest({ hostname: 'localhost', port: 3000, path: `/mcp?config=${encodedConfig}&action=list-tools`, method: 'GET', headers: { 'Accept': 'application/json' } }); console.log(`Status: ${configResponse.statusCode}`); if (configResponse.parseError) { console.log(`Erro ao analisar resposta: ${configResponse.parseError}`); console.log(`Resposta bruta (primeiros 200 caracteres): ${configResponse.rawData.substring(0, 200)}...`); } else { console.log(`Resposta com configuração:`, configResponse.data); // Verificar se as ferramentas estão sendo listadas corretamente com configuração if (configResponse.data && configResponse.data.tools && configResponse.data.tools.length > 0) { console.log(`\n✅ Sucesso! O servidor está listando ${configResponse.data.tools.length} ferramentas com configuração.`); } else { console.log(`\n❌ Falha! O servidor não está listando ferramentas corretamente com configuração.`); } } console.log('\nTestes de integração com o Smithery concluídos!'); console.log('\nSe os testes foram bem-sucedidos, o servidor deve funcionar corretamente com o Smithery.'); console.log('Lembre-se de que o Smithery requer que o servidor liste ferramentas sem autenticação,'); console.log('mas a autenticação deve ocorrer no momento da execução das ferramentas (lazy loading).'); } catch (error) { console.error('Erro ao testar o servidor:', error); } } // Executar o teste main();

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/caiovicentino/mcpGOTAS'

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