radar-cnpj-mcp 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -10,7 +10,7 @@ direto do seu agente de IA ou do terminal.**
10
10
  [![Node](https://img.shields.io/badge/node-%3E%3D20-339933?logo=node.js&logoColor=white)](https://nodejs.org)
11
11
  [![Licença: MIT](https://img.shields.io/badge/licen%C3%A7a-MIT-blue)](LICENSE)
12
12
 
13
- ![Demonstração: contagem de empresas e oficinas mecânicas em São Paulo](assets/demo.gif)
13
+ ![Um agente de IA usando o radar-cnpj-mcp para prospectar oficinas mecânicas em Campinas](assets/agente.gif)
14
14
 
15
15
  </div>
16
16
 
@@ -46,17 +46,14 @@ Outras ideias:
46
46
 
47
47
  Requer [Node.js](https://nodejs.org) 20 ou superior.
48
48
 
49
- **1. Baixe os dados da Receita.** Em
50
- [arquivos.receitafederal.gov.br](https://arquivos.receitafederal.gov.br/), abra
51
- **Dados › Cadastros › CNPJ** e baixe a pasta do mês mais recente (cerca de 7 GB).
52
-
53
- **2. Importe as UFs que interessam.**
49
+ **1. Baixe a base das UFs que interessam.** Só as UFs pedidas, em segundos, a partir da base
50
+ pronta do [radar-cnpj-dados](https://github.com/wendersoon/radar-cnpj-dados):
54
51
 
55
52
  ```sh
56
- npx -y radar-cnpj-mcp importar ~/Downloads/2026-10 --ufs SP,MG
53
+ npx -y radar-cnpj-mcp baixar --ufs SP,MG
57
54
  ```
58
55
 
59
- **3. Conecte ao seu agente de IA.**
56
+ **2. Conecte ao seu agente de IA.**
60
57
 
61
58
  <details open>
62
59
  <summary><b>Claude Code</b></summary>
@@ -83,6 +80,48 @@ claude mcp add radar-cnpj -- npx -y radar-cnpj-mcp
83
80
 
84
81
  </details>
85
82
 
83
+ Pronto: peça ao agente o que procura. Para atualizar a base todo mês, rode o `baixar` de novo.
84
+
85
+ ### Instalação via npm
86
+
87
+ Se preferir instalar em vez de usar o `npx`:
88
+
89
+ ```sh
90
+ npm install -g radar-cnpj-mcp
91
+ radar-cnpj-mcp baixar --ufs SP,MG
92
+ ```
93
+
94
+ E configure o agente com o comando instalado:
95
+
96
+ ```sh
97
+ claude mcp add radar-cnpj -- radar-cnpj-mcp
98
+ ```
99
+
100
+ ```json
101
+ {
102
+ "mcpServers": {
103
+ "radar-cnpj": { "command": "radar-cnpj-mcp" }
104
+ }
105
+ }
106
+ ```
107
+
108
+ Para atualizar a ferramenta: `npm update -g radar-cnpj-mcp`.
109
+
110
+ <details>
111
+ <summary><b>Importar direto da Receita Federal</b></summary>
112
+
113
+ Para usar um mês que ainda não está no radar-cnpj-dados, baixe a pasta do mês em
114
+ [arquivos.receitafederal.gov.br](https://arquivos.receitafederal.gov.br/) (**Dados › Cadastros ›
115
+ CNPJ**, cerca de 7 GB) e importe:
116
+
117
+ ```sh
118
+ npx -y radar-cnpj-mcp importar ~/Downloads/2026-10 --ufs SP,MG
119
+ ```
120
+
121
+ A importação lê todos os arquivos da Receita, então leva alguns minutos mesmo para uma só UF.
122
+
123
+ </details>
124
+
86
125
  ## O que o agente ganha
87
126
 
88
127
  | Ferramenta | O que faz |
@@ -107,11 +146,14 @@ Code, viram comandos como `/radar-cnpj:prospectar`.
107
146
 
108
147
  ## No terminal
109
148
 
149
+ ![Contagem de empresas e oficinas mecânicas em São Paulo pelo terminal](assets/terminal.gif)
150
+
110
151
  ```sh
111
152
  npx radar-cnpj-mcp contar --cnae 4520-0/01 --uf SP --agrupar municipio
112
153
  npx radar-cnpj-mcp buscar --cnae 4520-0/01 --municipio Campinas --sem-mei --limite 20
113
154
  npx radar-cnpj-mcp buscar --cnae 4520 --municipio Campinas --csv oficinas.csv
114
155
  npx radar-cnpj-mcp status
156
+ npx radar-cnpj-mcp --help
115
157
  ```
116
158
 
117
159
  ## Privacidade
@@ -131,6 +173,10 @@ npm run typecheck
131
173
  npm run build
132
174
  ```
133
175
 
176
+ ## Contribuindo
177
+
178
+ Contribuições são bem-vindas! Veja o [CONTRIBUTING.md](CONTRIBUTING.md).
179
+
134
180
  ## Licença
135
181
 
136
182
  [MIT](LICENSE). Dados: [Receita Federal do Brasil – Dados Abertos do
package/dist/cli.js CHANGED
@@ -1,12 +1,16 @@
1
1
  #!/usr/bin/env node
2
2
  import { readFileSync } from 'node:fs';
3
+ import { rm } from 'node:fs/promises';
3
4
  import { resolve } from 'node:path';
4
5
  import { parseArgs } from 'node:util';
5
6
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
6
7
  import { ZodError } from 'zod';
7
8
  import { defaultDatabasePath, defaultExportDir } from './config.js';
8
- import { importDataset } from './data/importer.js';
9
+ import { Database, sqlLiteral } from './data/database.js';
10
+ import { downloadDataset } from './data/downloader.js';
11
+ import { defaultMemoryLimit, importDataset } from './data/importer.js';
9
12
  import { LazyRepositoryProvider } from './data/provider.js';
13
+ import { exportRelease } from './data/release.js';
10
14
  import { countSchema, searchSchema } from './domain/filters.js';
11
15
  import { createServer } from './mcp/server.js';
12
16
  import { countLines } from './output.js';
@@ -16,6 +20,8 @@ Encontre empresas por CNAE e região na base pública de CNPJ da Receita Federal
16
20
 
17
21
  Uso:
18
22
  radar-cnpj-mcp inicia o servidor MCP (stdio)
23
+ radar-cnpj-mcp baixar --ufs SP,MG baixa a base pronta das UFs (recomendado)
24
+ --mes 2026-10 mês de referência (padrão: o mais recente)
19
25
  radar-cnpj-mcp importar <pasta> importa os ZIPs do mês baixados da Receita
20
26
  --ufs SP,MG importa só estas UFs (recomendado)
21
27
  --mes 2026-10 mês de referência (padrão: nome da pasta)
@@ -29,6 +35,7 @@ Uso:
29
35
  --agrupar municipio uf, municipio, bairro, cnae, porte, mei, ano_abertura
30
36
  --grupos 10 quantos grupos mostrar
31
37
  radar-cnpj-mcp status mostra o mês e as UFs importadas
38
+ radar-cnpj-mcp exportar-dados <pasta> gera os arquivos do release mensal (manutenção)
32
39
 
33
40
  Variáveis de ambiente:
34
41
  RADAR_CNPJ_DB caminho do banco (padrão: ${defaultDatabasePath()})
@@ -47,8 +54,12 @@ async function main(argv) {
47
54
  return serveMcp(databasePath);
48
55
  case 'mcp':
49
56
  return serveMcp(databasePath);
57
+ case 'baixar':
58
+ return runDownload(args, databasePath);
50
59
  case 'importar':
51
60
  return runImport(args, databasePath);
61
+ case 'exportar-dados':
62
+ return runExportRelease(args, databasePath);
52
63
  case 'buscar':
53
64
  return runSearch(args, databasePath);
54
65
  case 'contar':
@@ -82,6 +93,55 @@ async function serveMcp(databasePath) {
82
93
  // stdout carries the protocol; diagnostics go to stderr only.
83
94
  console.error(`radar-cnpj-mcp ${VERSION} pronto (base: ${databasePath})`);
84
95
  }
96
+ async function runDownload(args, databasePath) {
97
+ const { values } = parseArgs({
98
+ args,
99
+ options: { ufs: { type: 'string' }, mes: { type: 'string' }, memoria: { type: 'string' } },
100
+ });
101
+ if (!values.ufs) {
102
+ throw new UsageError('Informe as UFs: radar-cnpj-mcp baixar --ufs SP,MG');
103
+ }
104
+ if (values.mes && !/^\d{4}-\d{2}$/.test(values.mes)) {
105
+ throw new UsageError('Use --mes no formato AAAA-MM');
106
+ }
107
+ const started = Date.now();
108
+ const summary = await downloadDataset({
109
+ databasePath,
110
+ states: values.ufs.split(',').filter(Boolean),
111
+ ...(values.mes ? { month: values.mes } : {}),
112
+ ...(values.memoria ? { memoryLimit: values.memoria } : {}),
113
+ log: (message) => console.error(message),
114
+ });
115
+ const seconds = ((Date.now() - started) / 1000).toFixed(0);
116
+ const megabytes = (summary.downloadedBytes / 1024 / 1024).toFixed(0);
117
+ console.log(`${summary.establishments.toLocaleString('pt-BR')} estabelecimentos prontos ` +
118
+ `(UFs: ${summary.states.join(', ')}; mês: ${summary.referenceMonth ?? 'não informado'}; ` +
119
+ `${megabytes} MB baixados) em ${seconds}s.\nBase: ${summary.databasePath}`);
120
+ }
121
+ async function runExportRelease(args, databasePath) {
122
+ const { values, positionals } = parseArgs({
123
+ args,
124
+ allowPositionals: true,
125
+ options: { memoria: { type: 'string' } },
126
+ });
127
+ const [outDir] = positionals;
128
+ if (!outDir) {
129
+ throw new UsageError('Informe a pasta de saída: radar-cnpj-mcp exportar-dados <pasta>');
130
+ }
131
+ const db = await Database.open(databasePath, { readOnly: true });
132
+ // Spill files live next to the release folder so they never end up in it.
133
+ const spill = `${resolve(outDir)}.spill`;
134
+ try {
135
+ await db.run(`SET memory_limit = ${sqlLiteral(values.memoria ?? defaultMemoryLimit())}`);
136
+ await db.run(`SET temp_directory = ${sqlLiteral(spill)}`);
137
+ const { files, bytes } = await exportRelease(db, resolve(outDir), (message) => console.error(message));
138
+ console.log(`${files} arquivos, ${(bytes / 1024 ** 3).toFixed(2)} GB em ${resolve(outDir)}`);
139
+ }
140
+ finally {
141
+ db.close();
142
+ await rm(spill, { recursive: true, force: true });
143
+ }
144
+ }
85
145
  async function runImport(args, databasePath) {
86
146
  const { values, positionals } = parseArgs({
87
147
  args,
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,173 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { once } from 'node:events';
3
+ import { createWriteStream } from 'node:fs';
4
+ import { mkdir, mkdtemp, readFile, rename, rm } from 'node:fs/promises';
5
+ import { dirname, join } from 'node:path';
6
+ import { Database, sqlLiteral } from './database.js';
7
+ import { defaultMemoryLimit, normalizeStates, removeDatabase, writeMetadata } from './importer.js';
8
+ import { CHECKSUMS_FILE, CNAES_FILE, DEFAULT_DATA_REPO, establishmentsFile, METADATA_FILE, MUNICIPALITIES_FILE, parseChecksums, releaseTag, } from './release.js';
9
+ const USER_AGENT = 'radar-cnpj-mcp';
10
+ const WORK_DIR_PREFIX = '.radar-download-';
11
+ export class DownloadError extends Error {
12
+ name = 'DownloadError';
13
+ }
14
+ /**
15
+ * Builds the local database from the ready-made Parquet files of the
16
+ * radar-cnpj-dados releases, downloading only the requested states. Every file
17
+ * is checked against SHA256SUMS, and the database is swapped in only at the end.
18
+ */
19
+ export async function downloadDataset(options) {
20
+ const log = options.log ?? (() => { });
21
+ const states = normalizeStates(options.states);
22
+ if (states.length === 0) {
23
+ throw new DownloadError('Informe ao menos uma UF, ex.: --ufs SP');
24
+ }
25
+ const release = await fetchRelease(options);
26
+ const assets = new Map(release.assets.map((asset) => [asset.name, asset]));
27
+ const missing = states.filter((uf) => !assets.has(establishmentsFile(uf)));
28
+ if (missing.length > 0) {
29
+ const available = release.assets
30
+ .map((asset) => /^estabelecimentos-(.+)\.parquet$/.exec(asset.name)?.[1])
31
+ .filter(Boolean)
32
+ .join(', ');
33
+ throw new DownloadError(`UF ${missing.join(', ')} não existe no release ${release.tag_name}. Disponíveis: ${available}.`);
34
+ }
35
+ for (const name of [CHECKSUMS_FILE, METADATA_FILE, CNAES_FILE, MUNICIPALITIES_FILE]) {
36
+ if (!assets.has(name)) {
37
+ throw new DownloadError(`O release ${release.tag_name} não tem o arquivo ${name}.`);
38
+ }
39
+ }
40
+ const tempDir = options.tempDir ?? dirname(options.databasePath);
41
+ await mkdir(tempDir, { recursive: true });
42
+ const workDir = await mkdtemp(join(tempDir, WORK_DIR_PREFIX));
43
+ const tempPath = `${options.databasePath}.importing`;
44
+ await removeDatabase(tempPath);
45
+ try {
46
+ log(`Release ${release.tag_name}`);
47
+ // Filled by the first download; SHA256SUMS itself is not listed in it.
48
+ let checksums;
49
+ const fetchAsset = async (name) => {
50
+ const asset = assets.get(name);
51
+ log(`Baixando ${name} (${formatBytes(asset.size)})...`);
52
+ const path = join(workDir, name);
53
+ const hash = await downloadFile(asset.browser_download_url, path);
54
+ if (checksums && checksums.get(name) !== hash) {
55
+ throw new DownloadError(`O arquivo ${name} veio corrompido (SHA-256 não confere).`);
56
+ }
57
+ return path;
58
+ };
59
+ checksums = parseChecksums(await readFile(await fetchAsset(CHECKSUMS_FILE), 'utf8'));
60
+ const metadata = JSON.parse(await readFile(await fetchAsset(METADATA_FILE), 'utf8'));
61
+ const cnaes = await fetchAsset(CNAES_FILE);
62
+ const municipalities = await fetchAsset(MUNICIPALITIES_FILE);
63
+ const establishments = [];
64
+ for (const uf of states) {
65
+ establishments.push(await fetchAsset(establishmentsFile(uf)));
66
+ }
67
+ log('Montando a base...');
68
+ const db = await Database.open(tempPath);
69
+ let total;
70
+ try {
71
+ await db.run(`SET temp_directory = ${sqlLiteral(join(workDir, 'spill'))}`);
72
+ await db.run(`SET memory_limit = ${sqlLiteral(options.memoryLimit ?? defaultMemoryLimit())}`);
73
+ total = await buildDatabase(db, { establishments, cnaes, municipalities, states });
74
+ await writeMetadata(db, { states, referenceMonth: metadata.mes_referencia });
75
+ await db.run('CHECKPOINT');
76
+ }
77
+ finally {
78
+ db.close();
79
+ }
80
+ await removeDatabase(options.databasePath);
81
+ await rename(tempPath, options.databasePath);
82
+ const downloadedBytes = [CHECKSUMS_FILE, METADATA_FILE, CNAES_FILE, MUNICIPALITIES_FILE]
83
+ .concat(states.map(establishmentsFile))
84
+ .reduce((sum, name) => sum + (assets.get(name)?.size ?? 0), 0);
85
+ return {
86
+ databasePath: options.databasePath,
87
+ establishments: total,
88
+ states,
89
+ referenceMonth: metadata.mes_referencia,
90
+ downloadedBytes,
91
+ };
92
+ }
93
+ catch (error) {
94
+ await removeDatabase(tempPath);
95
+ throw error;
96
+ }
97
+ finally {
98
+ await rm(workDir, { recursive: true, force: true });
99
+ }
100
+ }
101
+ async function fetchRelease(options) {
102
+ const api = options.apiBaseUrl ?? 'https://api.github.com';
103
+ const repo = options.repo ?? DEFAULT_DATA_REPO;
104
+ const path = options.month ? `tags/${releaseTag(options.month)}` : 'latest';
105
+ const response = await fetch(`${api}/repos/${repo}/releases/${path}`, {
106
+ headers: { Accept: 'application/vnd.github+json', 'User-Agent': USER_AGENT },
107
+ });
108
+ if (response.status === 404) {
109
+ throw new DownloadError(options.month
110
+ ? `Não há dados do mês ${options.month} em ${repo}.`
111
+ : `Nenhum release de dados encontrado em ${repo}.`);
112
+ }
113
+ if (!response.ok) {
114
+ throw new DownloadError(`Falha ao consultar ${repo}: HTTP ${response.status}.`);
115
+ }
116
+ return (await response.json());
117
+ }
118
+ /** Streams a URL to disk and returns its SHA-256. */
119
+ async function downloadFile(url, path) {
120
+ const response = await fetch(url, { headers: { 'User-Agent': USER_AGENT } });
121
+ if (!response.ok || !response.body) {
122
+ throw new DownloadError(`Falha ao baixar ${url}: HTTP ${response.status}.`);
123
+ }
124
+ const hash = createHash('sha256');
125
+ const out = createWriteStream(path);
126
+ try {
127
+ for await (const chunk of response.body) {
128
+ hash.update(chunk);
129
+ if (!out.write(chunk)) {
130
+ await once(out, 'drain');
131
+ }
132
+ }
133
+ }
134
+ finally {
135
+ out.end();
136
+ await once(out, 'finish');
137
+ }
138
+ return hash.digest('hex');
139
+ }
140
+ async function buildDatabase(db, files) {
141
+ // Each state's file is already sorted by city and activity; loading them in
142
+ // order keeps the table clustered for fast filtering.
143
+ const first = files.establishments[0];
144
+ await db.run(`CREATE TABLE estabelecimentos AS SELECT * FROM (${normalizedSelect(first)}) LIMIT 0`);
145
+ for (const file of files.establishments) {
146
+ await db.run(`INSERT INTO estabelecimentos ${normalizedSelect(file)}`);
147
+ }
148
+ await db.run(`CREATE TABLE cnaes AS
149
+ SELECT codigo, descricao, strip_accents(upper(descricao)) AS descricao_norm
150
+ FROM read_parquet(${sqlLiteral(files.cnaes)})`);
151
+ await db.run(`CREATE TABLE municipios AS
152
+ SELECT codigo, nome, strip_accents(upper(coalesce(trim(nome), ''))) AS nome_norm, uf
153
+ FROM read_parquet(${sqlLiteral(files.municipalities)})
154
+ WHERE uf IN (${files.states.map(sqlLiteral).join(', ')})`);
155
+ const [row] = await db.all('SELECT count(*)::INTEGER AS total FROM estabelecimentos');
156
+ return row?.total ?? 0;
157
+ }
158
+ function normalizedSelect(file) {
159
+ return `SELECT *,
160
+ strip_accents(upper(coalesce(trim(bairro), ''))) AS bairro_norm,
161
+ strip_accents(upper(coalesce(trim(municipio), ''))) AS municipio_norm
162
+ FROM read_parquet(${sqlLiteral(file)})`;
163
+ }
164
+ function formatBytes(bytes) {
165
+ if (bytes >= 1024 ** 3) {
166
+ return `${(bytes / 1024 ** 3).toFixed(1).replace('.', ',')} GB`;
167
+ }
168
+ if (bytes >= 1024 ** 2) {
169
+ return `${(bytes / 1024 ** 2).toFixed(0)} MB`;
170
+ }
171
+ return `${Math.max(1, Math.round(bytes / 1024))} KB`;
172
+ }
173
+ //# sourceMappingURL=downloader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"downloader.js","sourceRoot":"","sources":["../../src/data/downloader.ts"],"names":[],"mappings":"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"}
@@ -114,7 +114,7 @@ export async function discoverFiles(sourceDir) {
114
114
  }
115
115
  return files;
116
116
  }
117
- function normalizeStates(states) {
117
+ export function normalizeStates(states) {
118
118
  const normalized = [...new Set(states.map((state) => state.trim().toUpperCase()))];
119
119
  const invalid = normalized.filter((state) => !UFS.includes(state));
120
120
  if (invalid.length > 0) {
@@ -212,7 +212,7 @@ async function buildSearchTables(db, log) {
212
212
  WHERE municipio IS NOT NULL
213
213
  `);
214
214
  }
215
- async function writeMetadata(db, metadata) {
215
+ export async function writeMetadata(db, metadata) {
216
216
  await db.run('CREATE TABLE metadados (chave VARCHAR PRIMARY KEY, valor VARCHAR)');
217
217
  const entries = [
218
218
  ['versao_esquema', SCHEMA_VERSION],
@@ -233,7 +233,7 @@ async function removeStaleWorkDirs(tempDir, log) {
233
233
  }
234
234
  }
235
235
  }
236
- async function removeDatabase(path) {
236
+ export async function removeDatabase(path) {
237
237
  await rm(path, { force: true });
238
238
  await rm(`${path}.wal`, { force: true });
239
239
  }
@@ -1 +1 @@
1
- {"version":3,"file":"importer.js","sourceRoot":"","sources":["../../src/data/importer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"importer.js","sourceRoot":"","sources":["../../src/data/importer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,116 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { createReadStream } from 'node:fs';
3
+ import { mkdir, readdir, rm, stat, writeFile } from 'node:fs/promises';
4
+ import { join } from 'node:path';
5
+ import { sqlLiteral } from './database.js';
6
+ /**
7
+ * Format of the monthly dataset published as GitHub Release assets: one
8
+ * Parquet file per state plus lookup tables, metadata and checksums. The
9
+ * `exportar-dados` command produces it and `baixar` consumes it, so both
10
+ * sides share this module.
11
+ */
12
+ export const DEFAULT_DATA_REPO = 'wendersoon/radar-cnpj-dados';
13
+ export const CHECKSUMS_FILE = 'SHA256SUMS';
14
+ export const METADATA_FILE = 'metadados.json';
15
+ export const CNAES_FILE = 'cnaes.parquet';
16
+ export const MUNICIPALITIES_FILE = 'municipios.parquet';
17
+ /** GitHub limits each release asset to 2 GiB; keep a safety margin. */
18
+ const MAX_ASSET_BYTES = 1.9 * 1024 ** 3;
19
+ export function establishmentsFile(uf) {
20
+ return `estabelecimentos-${uf}.parquet`;
21
+ }
22
+ /** Release tag of a reference month (AAAA-MM). */
23
+ export function releaseTag(month) {
24
+ return `dados-${month}`;
25
+ }
26
+ /**
27
+ * Published columns. MEI contacts are always left out, and the CPF that
28
+ * Receita appends to sole proprietor names is removed again here as a second
29
+ * line of defense, in case the database came from an older import.
30
+ */
31
+ const COLUMNS = String.raw `
32
+ cnpj, cnpj_basico, matriz,
33
+ NULLIF(regexp_replace(nome_fantasia, '\s*\d{11}$', ''), '') AS nome_fantasia,
34
+ situacao, data_situacao, data_abertura,
35
+ cnae_principal, cnae_descricao, cnaes_secundarios,
36
+ endereco, bairro, cep, uf, municipio_codigo, municipio,
37
+ CASE WHEN mei THEN NULL ELSE ddd_1 END AS ddd_1,
38
+ CASE WHEN mei THEN NULL ELSE telefone_1 END AS telefone_1,
39
+ CASE WHEN mei THEN NULL ELSE ddd_2 END AS ddd_2,
40
+ CASE WHEN mei THEN NULL ELSE telefone_2 END AS telefone_2,
41
+ CASE WHEN mei THEN NULL ELSE email END AS email,
42
+ NULLIF(regexp_replace(razao_social, '\s*\d{11}$', ''), '') AS razao_social,
43
+ natureza_juridica, capital_social, porte, simples, mei`;
44
+ /**
45
+ * Writes the release files for every state in the database into outDir.
46
+ * One state at a time: the table is clustered by state, so each export reads
47
+ * only that slice and keeps a single file open.
48
+ */
49
+ export async function exportRelease(db, outDir, log = () => { }) {
50
+ await rm(outDir, { recursive: true, force: true });
51
+ await mkdir(outDir, { recursive: true });
52
+ const metadata = new Map((await db.all('SELECT chave, valor FROM metadados')).map((row) => [row.chave, row.valor]));
53
+ if (metadata.get('ufs')) {
54
+ throw new Error(`A base contém só as UFs ${metadata.get('ufs')}; o release precisa da base completa.`);
55
+ }
56
+ const states = await db.all('SELECT DISTINCT uf FROM estabelecimentos ORDER BY uf NULLS LAST');
57
+ for (const { uf } of states) {
58
+ const name = establishmentsFile(uf ?? 'SEM-UF');
59
+ log(`Exportando ${name}...`);
60
+ await db.run(`COPY (SELECT ${COLUMNS} FROM estabelecimentos WHERE uf IS NOT DISTINCT FROM $1)
61
+ TO ${sqlLiteral(join(outDir, name))} (FORMAT parquet, COMPRESSION zstd)`, [uf]);
62
+ }
63
+ log('Exportando CNAEs e municípios...');
64
+ await db.run(`COPY (SELECT codigo, descricao FROM cnaes ORDER BY codigo)
65
+ TO ${sqlLiteral(join(outDir, CNAES_FILE))} (FORMAT parquet, COMPRESSION zstd)`);
66
+ await db.run(`COPY (SELECT codigo, nome, uf FROM municipios ORDER BY uf, nome)
67
+ TO ${sqlLiteral(join(outDir, MUNICIPALITIES_FILE))} (FORMAT parquet, COMPRESSION zstd)`);
68
+ const perState = await db.all(`SELECT uf, count(*)::INTEGER AS estabelecimentos, count_if(situacao = '02')::INTEGER AS ativos
69
+ FROM estabelecimentos GROUP BY uf ORDER BY uf`);
70
+ const releaseMetadata = {
71
+ mes_referencia: metadata.get('mes_referencia') ?? null,
72
+ gerado_em: new Date().toISOString(),
73
+ fonte: 'Receita Federal do Brasil - Dados Abertos do CNPJ',
74
+ versao_esquema: metadata.get('versao_esquema') ?? null,
75
+ tratamento_lgpd: [
76
+ 'CPF removido do nome de empresários individuais',
77
+ 'telefone e e-mail de MEIs omitidos',
78
+ ],
79
+ ufs: perState,
80
+ };
81
+ await writeFile(join(outDir, METADATA_FILE), `${JSON.stringify(releaseMetadata, null, 2)}\n`);
82
+ log('Calculando hashes...');
83
+ const lines = [];
84
+ let bytes = 0;
85
+ for (const name of (await readdir(outDir)).sort()) {
86
+ const { size } = await stat(join(outDir, name));
87
+ if (size > MAX_ASSET_BYTES) {
88
+ throw new Error(`${name} tem ${(size / 1024 ** 3).toFixed(2)} GB, acima do limite do GitHub.`);
89
+ }
90
+ bytes += size;
91
+ lines.push(`${await sha256File(join(outDir, name))} ${name}`);
92
+ }
93
+ await writeFile(join(outDir, CHECKSUMS_FILE), `${lines.join('\n')}\n`);
94
+ return { files: lines.length + 1, bytes };
95
+ }
96
+ /** Parses a `sha256sum`-style file into a map of file name to hash. */
97
+ export function parseChecksums(text) {
98
+ const sums = new Map();
99
+ for (const line of text.split('\n')) {
100
+ const match = /^([0-9a-f]{64})\s+\*?(.+)$/.exec(line.trim());
101
+ if (match?.[1] && match[2]) {
102
+ sums.set(match[2], match[1]);
103
+ }
104
+ }
105
+ return sums;
106
+ }
107
+ export function sha256File(path) {
108
+ return new Promise((resolve, reject) => {
109
+ const hash = createHash('sha256');
110
+ createReadStream(path)
111
+ .on('data', (chunk) => hash.update(chunk))
112
+ .on('end', () => resolve(hash.digest('hex')))
113
+ .on('error', reject);
114
+ });
115
+ }
116
+ //# sourceMappingURL=release.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release.js","sourceRoot":"","sources":["../../src/data/release.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "radar-cnpj-mcp",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "MCP server and CLI to find Brazilian companies by CNAE and region using the Receita Federal open CNPJ data",
5
5
  "keywords": [
6
6
  "mcp",