Skip to main content
Glama
josuekongolo

CompanyIQ MCP Server

by josuekongolo
get_company.ts5.66 kB
import { z } from 'zod'; import { CompanyDatabase } from '../database/db.js'; import { BrregClient } from '../apis/brreg.js'; const GetCompanySchema = z.object({ org_nr: z.string().optional().describe("Organisasjonsnummer (9 siffer)"), name: z.string().optional().describe("Selskapsnavn") }); /** * Get complete information about a specific company * Direct lookup by org number or name search */ export async function getCompany(args: unknown, db: CompanyDatabase, brreg: BrregClient) { const params = GetCompanySchema.parse(args); if (!params.org_nr && !params.name) { return { content: [{ type: "text" as const, text: "⚠️ Må oppgi enten org_nr eller name" }] }; } let company: any = null; let orgNr = params.org_nr; // If name provided, search for org number first if (!orgNr && params.name) { console.error(`Searching for company by name: ${params.name}`); const searchResults = await brreg.searchCompanies(params.name, 10); if (searchResults.length === 0) { return { content: [{ type: "text" as const, text: `Fant ingen selskaper med navn "${params.name}"` }] }; } if (searchResults.length === 1) { // Exact match, use it orgNr = searchResults[0].organisasjonsnummer; } else { // Multiple matches, show options const options = searchResults.slice(0, 5).map((c, idx) => `${idx + 1}. ${c.navn} (${c.organisasjonsnummer})\n ${c.forretningsadresse?.poststed || 'Ukjent'} - ${c.naeringskode1?.beskrivelse || 'Ukjent bransje'}` ).join('\n\n'); return { content: [{ type: "text" as const, text: `Fant ${searchResults.length} selskaper med navn "${params.name}":\n\n${options}\n\n💡 Bruk org.nr for å hente spesifikt selskap.` }] }; } } // Get full company details console.error(`Fetching company details for: ${orgNr}`); const brregCompany = await brreg.getCompany(orgNr!); if (!brregCompany) { return { content: [{ type: "text" as const, text: `Fant ikke selskap med org.nr ${orgNr}` }] }; } // Save to database await db.insertOrUpdateCompany({ org_nr: brregCompany.organisasjonsnummer, name: brregCompany.navn, organization_form: brregCompany.organisasjonsform?.beskrivelse, organization_form_code: brregCompany.organisasjonsform?.kode, nace_code: brregCompany.naeringskode1?.kode, nace_description: brregCompany.naeringskode1?.beskrivelse, employees_count: brregCompany.antallAnsatte, established_date: brregCompany.registreringsdatoEnhetsregisteret, business_address: brregCompany.forretningsadresse?.adresse?.join(', '), business_postcode: brregCompany.forretningsadresse?.postnummer, business_city: brregCompany.forretningsadresse?.poststed, business_municipality: brregCompany.forretningsadresse?.kommune, business_municipality_number: brregCompany.forretningsadresse?.kommunenummer, postal_address: brregCompany.postadresse?.adresse?.join(', '), postal_postcode: brregCompany.postadresse?.postnummer, postal_city: brregCompany.postadresse?.poststed, in_mva_register: brregCompany.registrertIMvaregisteret, in_foretaksregister: brregCompany.registrertIForetaksregisteret, bankrupt: brregCompany.konkurs, under_liquidation: brregCompany.underAvvikling, under_forced_liquidation: brregCompany.underTvangsavviklingEllerTvangsopplosning, last_updated: new Date().toISOString() } as any); const report = ` 🏢 ${brregCompany.navn} 📋 GRUNNINFO: - Organisasjonsnummer: ${brregCompany.organisasjonsnummer} - Organisasjonsform: ${brregCompany.organisasjonsform?.beskrivelse || 'Ukjent'} - Etablert: ${brregCompany.stiftelsesdato || brregCompany.registreringsdatoEnhetsregisteret || 'Ukjent'} 🏷️ BRANSJE: - NACE: ${brregCompany.naeringskode1?.kode || 'Ukjent'} - Beskrivelse: ${brregCompany.naeringskode1?.beskrivelse || 'Ukjent'} ${brregCompany.naeringskode2 ? `- NACE 2: ${brregCompany.naeringskode2.kode} - ${brregCompany.naeringskode2.beskrivelse}` : ''} 👥 ANSATTE: - Antall: ${brregCompany.antallAnsatte || 'Ikke registrert'} ${(brregCompany as any).harRegistrertAntallAnsatte ? '- Status: ✅ Registrert i NAV Aa-registeret' : '- Status: ⚠️ Ikke rapportert'} 📍 ADRESSE: - Forretningsadresse: ${brregCompany.forretningsadresse?.adresse?.join(', ') || 'Ukjent'} - Poststed: ${brregCompany.forretningsadresse?.postnummer || ''} ${brregCompany.forretningsadresse?.poststed || 'Ukjent'} - Kommune: ${brregCompany.forretningsadresse?.kommune || 'Ukjent'} 📞 KONTAKT: ${(brregCompany as any).hjemmeside ? `- Hjemmeside: ${(brregCompany as any).hjemmeside}` : ''} ${(brregCompany as any).telefon ? `- Telefon: ${(brregCompany as any).telefon}` : ''} 📊 STATUS: - I MVA-registeret: ${brregCompany.registrertIMvaregisteret ? '✅ Ja' : '❌ Nei'} - I Foretaksregisteret: ${brregCompany.registrertIForetaksregisteret ? '✅ Ja' : '❌ Nei'} - Konkurs: ${brregCompany.konkurs ? '🔴 JA' : '✅ Nei'} - Under avvikling: ${brregCompany.underAvvikling ? '⚠️ JA' : '✅ Nei'} ${(brregCompany as any).sisteInnsendteAarsregnskap ? `- Siste årsregnskap: ${(brregCompany as any).sisteInnsendteAarsregnskap}` : ''} 💡 VIDERE ANALYSE: - analyze_ownership - Se eierstruktur og datterselskaper - track_board - Se styresammensetning - analyze_financials - Risikovurdering (eller importer regnskapsdata først) - import_financials - Importer årsregnskap for full analyse `; return { content: [{ type: "text" as const, text: report }] }; }

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/josuekongolo/companyiq-mcp'

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