Skip to main content
Glama

MCP API Server

by mcgiverdev
companyService.ts3.55 kB
import { httpClient } from './httpClient.js'; import { Company, CreateCompanyRequest, CompanyListResponse, CompanySize } from '../types/company.js'; import { API_ENDPOINTS } from '../config/api.js'; /** * Servicio para manejar operaciones de empresas */ export class CompanyService { /** * Obtiene la lista de todas las empresas */ async getCompanies(): Promise<CompanyListResponse> { try { const response = await httpClient.get<CompanyListResponse>(API_ENDPOINTS.companies); return response.data; } catch (error) { console.error('Error al obtener empresas:', error); throw new Error(`No se pudieron obtener las empresas: ${error.message}`); } } /** * Obtiene una empresa por ID */ async getCompanyById(id: number): Promise<Company> { try { const response = await httpClient.get<Company>(`${API_ENDPOINTS.companies}/${id}`); return response.data; } catch (error) { console.error(`Error al obtener empresa ${id}:`, error); throw new Error(`No se pudo obtener la empresa: ${error.message}`); } } /** * Crea una nueva empresa */ async createCompany(companyData: CreateCompanyRequest): Promise<Company> { try { // Validar datos requeridos this.validateCompanyData(companyData); const response = await httpClient.post<Company, CreateCompanyRequest>( API_ENDPOINTS.companies, companyData ); return response.data; } catch (error) { console.error('Error al crear empresa:', error); throw new Error(`No se pudo crear la empresa: ${error.message}`); } } /** * Actualiza una empresa existente */ async updateCompany(id: number, companyData: Partial<CreateCompanyRequest>): Promise<Company> { try { const response = await httpClient.put<Company, Partial<CreateCompanyRequest>>( `${API_ENDPOINTS.companies}/${id}`, companyData ); return response.data; } catch (error) { console.error(`Error al actualizar empresa ${id}:`, error); throw new Error(`No se pudo actualizar la empresa: ${error.message}`); } } /** * Elimina una empresa */ async deleteCompany(id: number): Promise<void> { try { await httpClient.delete(`${API_ENDPOINTS.companies}/${id}`); } catch (error) { console.error(`Error al eliminar empresa ${id}:`, error); throw new Error(`No se pudo eliminar la empresa: ${error.message}`); } } /** * Valida los datos de la empresa */ private validateCompanyData(companyData: CreateCompanyRequest): void { const requiredFields: (keyof CreateCompanyRequest)[] = [ 'name', 'email', 'phone', 'address', 'website', 'industry', 'size' ]; const missingFields = requiredFields.filter(field => !companyData[field]?.toString()?.trim()); if (missingFields.length > 0) { throw new Error(`Campos requeridos faltantes: ${missingFields.join(', ')}`); } // Validar formato de email const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; if (!emailRegex.test(companyData.email)) { throw new Error('El formato del email no es válido'); } // Validar que el tamaño sea uno de los valores permitidos const validSizes = Object.values(CompanySize) as string[]; if (!validSizes.includes(companyData.size)) { throw new Error(`El tamaño debe ser uno de: ${validSizes.join(', ')}`); } } } // Instancia singleton del servicio export const companyService = new CompanyService();

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/mcgiverdev/mcp-api-v1'

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