bling-docs-mcp 1.0.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.
Files changed (192) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +281 -0
  3. package/dist/index.d.ts +16 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +275 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/lib/embeddings.d.ts +18 -0
  8. package/dist/lib/embeddings.d.ts.map +1 -0
  9. package/dist/lib/embeddings.js +52 -0
  10. package/dist/lib/embeddings.js.map +1 -0
  11. package/dist/lib/indexer.d.ts +13 -0
  12. package/dist/lib/indexer.d.ts.map +1 -0
  13. package/dist/lib/indexer.js +305 -0
  14. package/dist/lib/indexer.js.map +1 -0
  15. package/dist/lib/loader.d.ts +34 -0
  16. package/dist/lib/loader.d.ts.map +1 -0
  17. package/dist/lib/loader.js +267 -0
  18. package/dist/lib/loader.js.map +1 -0
  19. package/dist/lib/openapi-tools.d.ts +38 -0
  20. package/dist/lib/openapi-tools.d.ts.map +1 -0
  21. package/dist/lib/openapi-tools.js +63 -0
  22. package/dist/lib/openapi-tools.js.map +1 -0
  23. package/dist/lib/schema-resolver.d.ts +17 -0
  24. package/dist/lib/schema-resolver.d.ts.map +1 -0
  25. package/dist/lib/schema-resolver.js +173 -0
  26. package/dist/lib/schema-resolver.js.map +1 -0
  27. package/dist/lib/types.d.ts +207 -0
  28. package/dist/lib/types.d.ts.map +1 -0
  29. package/dist/lib/types.js +2 -0
  30. package/dist/lib/types.js.map +1 -0
  31. package/dist/lib/vector-store.d.ts +46 -0
  32. package/dist/lib/vector-store.d.ts.map +1 -0
  33. package/dist/lib/vector-store.js +66 -0
  34. package/dist/lib/vector-store.js.map +1 -0
  35. package/dist/scripts/compare-extraction.d.ts +7 -0
  36. package/dist/scripts/compare-extraction.d.ts.map +1 -0
  37. package/dist/scripts/compare-extraction.js +223 -0
  38. package/dist/scripts/compare-extraction.js.map +1 -0
  39. package/dist/scripts/compare-with-docs-site.d.ts +7 -0
  40. package/dist/scripts/compare-with-docs-site.d.ts.map +1 -0
  41. package/dist/scripts/compare-with-docs-site.js +264 -0
  42. package/dist/scripts/compare-with-docs-site.js.map +1 -0
  43. package/dist/scripts/field-coverage-report.d.ts +14 -0
  44. package/dist/scripts/field-coverage-report.d.ts.map +1 -0
  45. package/dist/scripts/field-coverage-report.js +352 -0
  46. package/dist/scripts/field-coverage-report.js.map +1 -0
  47. package/dist/scripts/final-coverage-report.d.ts +1 -0
  48. package/dist/scripts/final-coverage-report.d.ts.map +1 -0
  49. package/dist/scripts/final-coverage-report.js +2 -0
  50. package/dist/scripts/final-coverage-report.js.map +1 -0
  51. package/dist/scripts/inspect-endpoint.d.ts +15 -0
  52. package/dist/scripts/inspect-endpoint.d.ts.map +1 -0
  53. package/dist/scripts/inspect-endpoint.js +292 -0
  54. package/dist/scripts/inspect-endpoint.js.map +1 -0
  55. package/dist/scripts/performance-validation.d.ts +10 -0
  56. package/dist/scripts/performance-validation.d.ts.map +1 -0
  57. package/dist/scripts/performance-validation.js +123 -0
  58. package/dist/scripts/performance-validation.js.map +1 -0
  59. package/dist/scripts/test-all.d.ts +7 -0
  60. package/dist/scripts/test-all.d.ts.map +1 -0
  61. package/dist/scripts/test-all.js +76 -0
  62. package/dist/scripts/test-all.js.map +1 -0
  63. package/dist/scripts/test-new-fields.d.ts +6 -0
  64. package/dist/scripts/test-new-fields.d.ts.map +1 -0
  65. package/dist/scripts/test-new-fields.js +243 -0
  66. package/dist/scripts/test-new-fields.js.map +1 -0
  67. package/dist/scripts/test-schema-fields.d.ts +7 -0
  68. package/dist/scripts/test-schema-fields.d.ts.map +1 -0
  69. package/dist/scripts/test-schema-fields.js +198 -0
  70. package/dist/scripts/test-schema-fields.js.map +1 -0
  71. package/dist/scripts/validate-extraction.d.ts +15 -0
  72. package/dist/scripts/validate-extraction.d.ts.map +1 -0
  73. package/dist/scripts/validate-extraction.js +294 -0
  74. package/dist/scripts/validate-extraction.js.map +1 -0
  75. package/dist/scripts/validate-full-extraction.d.ts +6 -0
  76. package/dist/scripts/validate-full-extraction.d.ts.map +1 -0
  77. package/dist/scripts/validate-full-extraction.js +399 -0
  78. package/dist/scripts/validate-full-extraction.js.map +1 -0
  79. package/dist/scripts/validate-phase1-fields.d.ts +6 -0
  80. package/dist/scripts/validate-phase1-fields.d.ts.map +1 -0
  81. package/dist/scripts/validate-phase1-fields.js +162 -0
  82. package/dist/scripts/validate-phase1-fields.js.map +1 -0
  83. package/dist/scripts/validate-phase2-fields.d.ts +6 -0
  84. package/dist/scripts/validate-phase2-fields.d.ts.map +1 -0
  85. package/dist/scripts/validate-phase2-fields.js +127 -0
  86. package/dist/scripts/validate-phase2-fields.js.map +1 -0
  87. package/dist/scripts/validate-phase3-fields.d.ts +6 -0
  88. package/dist/scripts/validate-phase3-fields.d.ts.map +1 -0
  89. package/dist/scripts/validate-phase3-fields.js +106 -0
  90. package/dist/scripts/validate-phase3-fields.js.map +1 -0
  91. package/dist/tools/compare-with-openapi-spec.d.ts +10 -0
  92. package/dist/tools/compare-with-openapi-spec.d.ts.map +1 -0
  93. package/dist/tools/compare-with-openapi-spec.js +266 -0
  94. package/dist/tools/compare-with-openapi-spec.js.map +1 -0
  95. package/dist/tools/compare-with-postman.d.ts +25 -0
  96. package/dist/tools/compare-with-postman.d.ts.map +1 -0
  97. package/dist/tools/compare-with-postman.js +257 -0
  98. package/dist/tools/compare-with-postman.js.map +1 -0
  99. package/dist/tools/describe.d.ts +39 -0
  100. package/dist/tools/describe.d.ts.map +1 -0
  101. package/dist/tools/describe.js +64 -0
  102. package/dist/tools/describe.js.map +1 -0
  103. package/dist/tools/get-auth-info.d.ts +33 -0
  104. package/dist/tools/get-auth-info.d.ts.map +1 -0
  105. package/dist/tools/get-auth-info.js +27 -0
  106. package/dist/tools/get-auth-info.js.map +1 -0
  107. package/dist/tools/get-endpoint-details.d.ts +27 -0
  108. package/dist/tools/get-endpoint-details.d.ts.map +1 -0
  109. package/dist/tools/get-endpoint-details.js +59 -0
  110. package/dist/tools/get-endpoint-details.js.map +1 -0
  111. package/dist/tools/get-schema.d.ts +34 -0
  112. package/dist/tools/get-schema.d.ts.map +1 -0
  113. package/dist/tools/get-schema.js +64 -0
  114. package/dist/tools/get-schema.js.map +1 -0
  115. package/dist/tools/list-tags.d.ts +29 -0
  116. package/dist/tools/list-tags.d.ts.map +1 -0
  117. package/dist/tools/list-tags.js +23 -0
  118. package/dist/tools/list-tags.js.map +1 -0
  119. package/dist/tools/read-documentation-page.d.ts +23 -0
  120. package/dist/tools/read-documentation-page.d.ts.map +1 -0
  121. package/dist/tools/read-documentation-page.js +73 -0
  122. package/dist/tools/read-documentation-page.js.map +1 -0
  123. package/dist/tools/search-documentation.d.ts +26 -0
  124. package/dist/tools/search-documentation.d.ts.map +1 -0
  125. package/dist/tools/search-documentation.js +91 -0
  126. package/dist/tools/search-documentation.js.map +1 -0
  127. package/dist/tools/search-endpoints.d.ts +35 -0
  128. package/dist/tools/search-endpoints.d.ts.map +1 -0
  129. package/dist/tools/search-endpoints.js +120 -0
  130. package/dist/tools/search-endpoints.js.map +1 -0
  131. package/dist/tools/search-schemas.d.ts +30 -0
  132. package/dist/tools/search-schemas.d.ts.map +1 -0
  133. package/dist/tools/search-schemas.js +36 -0
  134. package/dist/tools/search-schemas.js.map +1 -0
  135. package/dist/tools/validate-spec.d.ts +44 -0
  136. package/dist/tools/validate-spec.d.ts.map +1 -0
  137. package/dist/tools/validate-spec.js +186 -0
  138. package/dist/tools/validate-spec.js.map +1 -0
  139. package/docs/ajuda_como_gerar_o_access_token.md +8 -0
  140. package/docs/ajuda_como_gerar_o_client_id_e_o_client_secret.md +8 -0
  141. package/docs/ajuda_full.md +35 -0
  142. package/docs/ajuda_preciso_criar_uma_conta_no_bling_para_utilizar_a_api.md +9 -0
  143. package/docs/ajuda_quais_sao_os_limites_da_api.md +9 -0
  144. package/docs/ajuda_qual_e_a_utilidade_do_campo_state.md +9 -0
  145. package/docs/ajuda_qual_e_o_formato_de_retorno_das_respostas_da_api.md +18 -0
  146. package/docs/ajuda_quantos_registros_sao_retornados_por_pagina_em_cada_requisicao.md +9 -0
  147. package/docs/aplicativos_acesso_ao_modulo.md +12 -0
  148. package/docs/aplicativos_como_cadastrar.md +258 -0
  149. package/docs/aplicativos_full.md +276 -0
  150. package/docs/aplicativos_gerenciamento.md +9 -0
  151. package/docs/aplicativos_inscricao.md +8 -0
  152. package/docs/aplicativos_introducao.md +8 -0
  153. package/docs/changelogs-webhooks_2026.md +88 -0
  154. package/docs/changelogs-webhooks_full.md +90 -0
  155. package/docs/changelogs_2026.md +88 -0
  156. package/docs/changelogs_full.md +90 -0
  157. package/docs/guias_como_utilizar_os_tokens.md +20 -0
  158. package/docs/guias_full.md +72 -0
  159. package/docs/guias_fundamentos.md +11 -0
  160. package/docs/guias_introducao.md +9 -0
  161. package/docs/guias_o_que_e_api.md +10 -0
  162. package/docs/guias_oauth_e_tokens_de_acesso.md +9 -0
  163. package/docs/guias_padrao_rest.md +34 -0
  164. package/docs/guias_para_quem_e_destinada_a_api.md +9 -0
  165. package/docs/guias_sobre_o_bling.md +9 -0
  166. package/docs/limites_filtros.md +9 -0
  167. package/docs/limites_full.md +56 -0
  168. package/docs/limites_requisicoes.md +50 -0
  169. package/docs/migracao-jwt_estrutura_e_tamanho_do_token.md +9 -0
  170. package/docs/migracao-jwt_full.md +107 -0
  171. package/docs/migracao-jwt_ganhos_computacionais_e_de_infraestrutura.md +11 -0
  172. package/docs/migracao-jwt_introducao.md +15 -0
  173. package/docs/migracao-jwt_motivacao_da_alteracao.md +9 -0
  174. package/docs/migracao-jwt_tratamento_de_erros_comuns.md +13 -0
  175. package/docs/migracao-jwt_utilizando_jwt_no_bling.md +74 -0
  176. package/docs/publicando_full.md +118 -0
  177. package/docs/publicando_processo.md +9 -0
  178. package/docs/publicando_revisao.md +86 -0
  179. package/docs/publicando_situacoes.md +16 -0
  180. package/docs/publicando_validacao_de_dados.md +23 -0
  181. package/docs/webhooks_acoes.md +12 -0
  182. package/docs/webhooks_autenticacao.md +22 -0
  183. package/docs/webhooks_como_cadastrar.md +20 -0
  184. package/docs/webhooks_entrega_nao_ordenada.md +9 -0
  185. package/docs/webhooks_full.md +453 -0
  186. package/docs/webhooks_idempotencia.md +9 -0
  187. package/docs/webhooks_introducao.md +9 -0
  188. package/docs/webhooks_recebimento_de_eventos.md +8 -0
  189. package/docs/webhooks_recursos.md +374 -0
  190. package/docs/webhooks_retentativas.md +9 -0
  191. package/docs/webhooks_webhooks_vs_polling.md +13 -0
  192. package/package.json +67 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 João Vitor Labiak
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,281 @@
1
+ # Bling Docs MCP
2
+
3
+ [![npm version](https://img.shields.io/npm/v/bling-docs-mcp.svg)](https://www.npmjs.com/package/bling-docs-mcp)
4
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
+ [![Node.js](https://img.shields.io/badge/node-%3E%3D18-brightgreen.svg)](https://nodejs.org/)
6
+ [![MCP](https://img.shields.io/badge/MCP-compatível-blue.svg)](https://modelcontextprotocol.io/)
7
+
8
+ Servidor [MCP (Model Context Protocol)](https://modelcontextprotocol.io/) que dá a assistentes de IA acesso especializado à **documentação da API do [Bling ERP](https://www.bling.com.br/)**. Em vez de carregar toda a especificação OpenAPI no contexto, a IA descobre e busca apenas o que precisa — endpoints, schemas, autenticação e guias — através de 6 ferramentas otimizadas.
9
+
10
+ ---
11
+
12
+ ## ✨ Funcionalidades
13
+
14
+ - **6 ferramentas especializadas** — `describe`, `search_endpoints`, `get_endpoint_details`, `get_schema`, `read_documentation_page`, `search_documentation`
15
+ - **Auto-descoberta** — encontra automaticamente a URL da spec OpenAPI mais recente no portal Bling (sem URLs hardcoded que quebram)
16
+ - **Busca semântica** — embeddings Google AI (`text-embedding-004`) opcionais para busca em linguagem natural
17
+ - **53 docs pré-incluídos** — guias, webhooks, changelogs, FAQs, migração JWT e mais — tudo disponível offline
18
+ - **Cache inteligente** — spec cacheada em disco por 15 dias; embeddings cacheados para evitar regeneração a cada startup
19
+ - **Zero configuração** — funciona direto via `npx`, nenhuma API key obrigatória (busca semântica é opcional)
20
+
21
+ ---
22
+
23
+ ## 🚀 Início Rápido
24
+
25
+ ```bash
26
+ # Clonar e buildar
27
+ git clone https://github.com/joaovitorlabiak-byte/bling-docs-mcp.git
28
+ cd bling-docs-mcp
29
+ npm install
30
+ npm run build
31
+ ```
32
+
33
+ Ou instale direto do GitHub via npm:
34
+
35
+ ```bash
36
+ npm install -g github:joaovitorlabiak-byte/bling-docs-mcp
37
+ ```
38
+
39
+ ---
40
+
41
+ ## ⚙️ Configuração
42
+
43
+ Adicione o servidor na configuração MCP do seu cliente de IA:
44
+
45
+ ### Claude Desktop
46
+
47
+ Edite `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) ou `%APPDATA%\Claude\claude_desktop_config.json` (Windows):
48
+
49
+ ```json
50
+ {
51
+ "mcpServers": {
52
+ "bling-docs": {
53
+ "command": "node",
54
+ "args": ["/caminho/para/bling-docs-mcp/dist/index.js"]
55
+ }
56
+ }
57
+ }
58
+ ```
59
+
60
+ ### VS Code (Copilot)
61
+
62
+ Adicione em `.vscode/mcp.json` no seu workspace:
63
+
64
+ ```json
65
+ {
66
+ "servers": {
67
+ "bling-docs": {
68
+ "command": "node",
69
+ "args": ["/caminho/para/bling-docs-mcp/dist/index.js"]
70
+ }
71
+ }
72
+ }
73
+ ```
74
+
75
+ ### Cursor
76
+
77
+ Adicione em `~/.cursor/mcp.json`:
78
+
79
+ ```json
80
+ {
81
+ "mcpServers": {
82
+ "bling-docs": {
83
+ "command": "node",
84
+ "args": ["/caminho/para/bling-docs-mcp/dist/index.js"]
85
+ }
86
+ }
87
+ }
88
+ ```
89
+
90
+ ### Windsurf / Codeium
91
+
92
+ Adicione em `~/.codeium/windsurf/mcp_config.json`:
93
+
94
+ ```json
95
+ {
96
+ "mcpServers": {
97
+ "bling-docs": {
98
+ "command": "node",
99
+ "args": ["/caminho/para/bling-docs-mcp/dist/index.js"]
100
+ }
101
+ }
102
+ }
103
+ ```
104
+
105
+ ### Com Busca Semântica (opcional)
106
+
107
+ Para habilitar busca em linguagem natural nos endpoints, defina sua Google AI API key:
108
+
109
+ ```json
110
+ {
111
+ "mcpServers": {
112
+ "bling-docs": {
113
+ "command": "node",
114
+ "args": ["/caminho/para/bling-docs-mcp/dist/index.js"],
115
+ "env": {
116
+ "GOOGLE_API_KEY": "sua-google-api-key"
117
+ }
118
+ }
119
+ }
120
+ }
121
+ ```
122
+
123
+ Obtenha uma API key gratuita em [Google AI Studio](https://aistudio.google.com/apikey).
124
+
125
+ ---
126
+
127
+ ## 🛠️ Ferramentas
128
+
129
+ | Ferramenta | Descrição |
130
+ |------------|-----------|
131
+ | **`describe`** | Visão geral da API: título, versão, URL base, autenticação OAuth2, todos os módulos com contagem de endpoints. **Chame primeiro.** |
132
+ | **`search_endpoints`** | Busca endpoints por palavra-chave, linguagem natural (com busca semântica), tag ou método HTTP. |
133
+ | **`get_endpoint_details`** | Detalhes completos do endpoint: parâmetros, schema do request body, respostas, escopos de segurança e payload de exemplo gerado automaticamente. |
134
+ | **`get_schema`** | Lista todos os schemas ou retorna um schema específico com definições completas de propriedades e JSON de exemplo. |
135
+ | **`read_documentation_page`** | Lê uma página específica da documentação Bling (guias, webhooks, limites, changelogs, migração JWT, FAQs). |
136
+ | **`search_documentation`** | Busca full-text em todas as 53 páginas de documentação incluídas. |
137
+
138
+ ### Exemplos de Uso
139
+
140
+ Após configurar o servidor MCP, pergunte ao seu assistente de IA:
141
+
142
+ - *"Quais endpoints existem para gerenciar produtos no Bling?"*
143
+ - *"Como faço para criar um pedido de venda? Mostre os campos obrigatórios."*
144
+ - *"Qual é o schema do ProdutoDTO?"*
145
+ - *"Como funciona a autenticação OAuth2 na API do Bling?"*
146
+ - *"Quais são os limites de requisição da API?"*
147
+ - *"Mostre a estrutura do payload de webhook para pedidos"*
148
+
149
+ ---
150
+
151
+ ## 🏗️ Como Funciona
152
+
153
+ ```
154
+ ┌─────────────────────────────────────────────────────────────┐
155
+ │ Bling Docs MCP Server │
156
+ │ │
157
+ │ 1. DESCOBERTA Encontra a URL da spec OpenAPI mais │
158
+ │ recente em developer.bling.com.br/referencia │
159
+ │ │
160
+ │ 2. CARGA Baixa + resolve $refs da spec │
161
+ │ (cacheado em disco por 15 dias) │
162
+ │ │
163
+ │ 3. INDEXAÇÃO Constrói índices de busca em memória: │
164
+ │ • Endpoints por tag, path, método │
165
+ │ • Schemas por nome │
166
+ │ • Embeddings vetoriais (opcional) │
167
+ │ │
168
+ │ 4. SERVE Responde às chamadas MCP do assistente │
169
+ │ │
170
+ │ 📄 docs/ 53 arquivos markdown pré-incluídos para │
171
+ │ guias, webhooks, changelogs, FAQs │
172
+ └─────────────────────────────────────────────────────────────┘
173
+ ```
174
+
175
+ As páginas de documentação em `docs/` são **pré-incluídas** — vêm no pacote e são lidas localmente em runtime. Nenhum crawling ou fetch externo é necessário.
176
+
177
+ ---
178
+
179
+ ## 💻 Desenvolvimento
180
+
181
+ ### Pré-requisitos
182
+
183
+ - Node.js 18+
184
+ - npm
185
+
186
+ ### Setup
187
+
188
+ ```bash
189
+ # Clonar o repositório
190
+ git clone https://github.com/joavitorlabiak-byte/bling-docs-mcp.git
191
+ cd bling-docs-mcp
192
+
193
+ # Instalar dependências
194
+ npm install
195
+
196
+ # Build
197
+ npm run build
198
+
199
+ # Executar localmente
200
+ npm start
201
+ ```
202
+
203
+ ### Testes
204
+
205
+ ```bash
206
+ # Executar todos os testes
207
+ npm test
208
+
209
+ # Modo watch
210
+ npm run test:watch
211
+ ```
212
+
213
+ ### Estrutura do Projeto
214
+
215
+ ```
216
+ bling-docs-mcp/
217
+ ├── src/
218
+ │ ├── index.ts # Entry point do servidor
219
+ │ ├── lib/
220
+ │ │ ├── loader.ts # Auto-descoberta + carregamento da spec OpenAPI
221
+ │ │ ├── indexer.ts # Engine de indexação da spec
222
+ │ │ ├── schema-resolver.ts # Resolução de $ref + achatamento de schemas
223
+ │ │ ├── embeddings.ts # Integração Google AI embeddings
224
+ │ │ ├── vector-store.ts # Busca por similaridade de cosseno em memória
225
+ │ │ └── types.ts # Definições de tipos TypeScript
226
+ │ └── tools/
227
+ │ ├── describe.ts
228
+ │ ├── search-endpoints.ts
229
+ │ ├── get-endpoint-details.ts
230
+ │ ├── get-schema.ts
231
+ │ ├── read-documentation-page.ts
232
+ │ └── search-documentation.ts
233
+ ├── docs/ # 53 páginas de documentação pré-incluídas
234
+ ├── scripts/
235
+ │ └── fetch-bling-docs.js # Crawler de documentação (ferramenta de manutenção)
236
+ ├── package.json
237
+ ├── tsconfig.json
238
+ └── vitest.config.ts
239
+ ```
240
+
241
+ ### Atualizando as Páginas de Documentação
242
+
243
+ A pasta `docs/` contém markdown pré-extraído do [Portal do Desenvolvedor Bling](https://developer.bling.com.br). Para atualizar esses docs, use o script crawler (requer uma instância [Crawl4AI](https://github.com/unclecode/crawl4ai)):
244
+
245
+ ```bash
246
+ # Defina a URL da sua instância Crawl4AI
247
+ export CRAWL4AI_URL=http://localhost:11235
248
+
249
+ # Buscar todos os docs (pula existentes por padrão)
250
+ npm run fetch-docs
251
+
252
+ # Forçar re-fetch de tudo
253
+ npm run fetch-docs -- --force
254
+
255
+ # Buscar apenas uma seção específica
256
+ npm run fetch-docs -- --section=webhooks
257
+ ```
258
+
259
+ ---
260
+
261
+ ## 🤝 Contribuindo
262
+
263
+ Contribuições são bem-vindas! Por favor:
264
+
265
+ 1. Faça um fork do repositório
266
+ 2. Crie uma branch para sua feature (`git checkout -b feature/minha-feature`)
267
+ 3. Commit suas alterações (`git commit -am 'Adiciona minha feature'`)
268
+ 4. Push para a branch (`git push origin feature/minha-feature`)
269
+ 5. Abra um Pull Request
270
+
271
+ ---
272
+
273
+ ## 📄 Licença
274
+
275
+ [MIT](LICENSE) © João Vitor Labiak
276
+
277
+ ---
278
+
279
+ ## ⚠️ Aviso
280
+
281
+ Este projeto não é afiliado, endossado ou oficialmente conectado ao [Bling](https://www.bling.com.br/). Ele utiliza a especificação OpenAPI e documentação para desenvolvedores publicamente disponíveis.
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Bling Docs MCP Server — Optimized Edition
4
+ *
5
+ * 6 tools with semantic search via Google text-embedding-004:
6
+ * 1. describe — API overview, auth, modules, usage guide
7
+ * 2. search_endpoints — Semantic/keyword/browse search over endpoints
8
+ * 3. get_endpoint_details — Full endpoint details + auto-generated example
9
+ * 4. get_schema — List all schemas OR get full schema + example
10
+ * 5. read_documentation_page — Read a specific Bling docs page by name
11
+ * 6. search_documentation — Full-text search across all docs pages
12
+ *
13
+ * Set GOOGLE_API_KEY env var to enable semantic search.
14
+ */
15
+ export {};
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;GAYG"}
package/dist/index.js ADDED
@@ -0,0 +1,275 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Bling Docs MCP Server — Optimized Edition
4
+ *
5
+ * 6 tools with semantic search via Google text-embedding-004:
6
+ * 1. describe — API overview, auth, modules, usage guide
7
+ * 2. search_endpoints — Semantic/keyword/browse search over endpoints
8
+ * 3. get_endpoint_details — Full endpoint details + auto-generated example
9
+ * 4. get_schema — List all schemas OR get full schema + example
10
+ * 5. read_documentation_page — Read a specific Bling docs page by name
11
+ * 6. search_documentation — Full-text search across all docs pages
12
+ *
13
+ * Set GOOGLE_API_KEY env var to enable semantic search.
14
+ */
15
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
16
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
17
+ import { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js';
18
+ import { loadOpenAPISpec, discoverOpenAPIUrl } from './lib/loader.js';
19
+ import { indexOpenAPISpec } from './lib/indexer.js';
20
+ import { VectorStore } from './lib/vector-store.js';
21
+ import { embedTexts, embedText, isEmbeddingEnabled } from './lib/embeddings.js';
22
+ import { promises as fs } from 'node:fs';
23
+ import { join, resolve, dirname } from 'node:path';
24
+ import { tmpdir } from 'node:os';
25
+ import { fileURLToPath } from 'node:url';
26
+ import { describe as describeTool } from './tools/describe.js';
27
+ import { searchEndpoints, buildEndpointChunk } from './tools/search-endpoints.js';
28
+ import { getEndpointDetails } from './tools/get-endpoint-details.js';
29
+ import { getSchema } from './tools/get-schema.js';
30
+ import { readDocumentationPage } from './tools/read-documentation-page.js';
31
+ import { searchDocumentation } from './tools/search-documentation.js';
32
+ // Resolve docs path relative to project root
33
+ const __filename_local = fileURLToPath(import.meta.url);
34
+ const __dirname_local = dirname(__filename_local);
35
+ const DOCS_PATH = resolve(__dirname_local, '..', 'docs');
36
+ // Global state
37
+ let indexedData;
38
+ let openAPISpec;
39
+ let endpointVectorStore;
40
+ // ─────────────────────────────────────────────
41
+ // Tool definitions
42
+ // ─────────────────────────────────────────────
43
+ const TOOLS = [
44
+ {
45
+ name: 'describe',
46
+ description: 'Get a high-level overview of the Bling API: title, version, base URL, authentication (OAuth2 flows & scopes), all modules with endpoint counts, common parameters, and a usage guide. CALL THIS FIRST to understand the API structure before searching for endpoints.',
47
+ inputSchema: { type: 'object', properties: {} },
48
+ },
49
+ {
50
+ name: 'search_endpoints',
51
+ description: 'Search for API endpoints. Supports semantic search (natural language, e.g. "how to cancel an order"), keyword search, and browsing. Filter by tag/module or HTTP method. Returns path, method, summary, and similarity score when using semantic search.',
52
+ inputSchema: {
53
+ type: 'object',
54
+ properties: {
55
+ query: {
56
+ type: 'string',
57
+ description: 'Natural language or keyword query (e.g., "criar produto", "emitir nota fiscal"). Enables semantic search when Google API key is configured.',
58
+ },
59
+ tag: {
60
+ type: 'string',
61
+ description: 'Filter by module/tag name (e.g., "Produtos", "Pedidos de Venda", "Nota Fiscal de Serviço"). Use describe to see all available tags.',
62
+ },
63
+ method: {
64
+ type: 'string',
65
+ description: 'Filter by HTTP method: GET, POST, PUT, DELETE, PATCH',
66
+ },
67
+ limit: {
68
+ type: 'number',
69
+ description: 'Maximum number of results to return (default: 20)',
70
+ },
71
+ },
72
+ },
73
+ },
74
+ {
75
+ name: 'get_endpoint_details',
76
+ description: 'Get FULL details for a specific endpoint: all parameters (path, query, header), complete request body schema with field descriptions, all response schemas, required security scopes, and an auto-generated request body example. Use after finding an endpoint path with search_endpoints.',
77
+ inputSchema: {
78
+ type: 'object',
79
+ properties: {
80
+ path: {
81
+ type: 'string',
82
+ description: 'The endpoint path, e.g. "/produtos" or "/pedidos/{idPedido}"',
83
+ },
84
+ method: {
85
+ type: 'string',
86
+ description: 'The HTTP method: GET, POST, PUT, DELETE, PATCH',
87
+ },
88
+ },
89
+ required: ['path', 'method'],
90
+ },
91
+ },
92
+ {
93
+ name: 'get_schema',
94
+ description: 'List available data schemas OR get a specific schema with full field details and an example JSON. Without "ref": lists all schemas with names and types. With "ref": returns complete schema definition (properties, types, validation rules, required fields) plus auto-generated example payload.',
95
+ inputSchema: {
96
+ type: 'object',
97
+ properties: {
98
+ ref: {
99
+ type: 'string',
100
+ description: 'Schema name or $ref (e.g., "produtos", "#/components/schemas/produtos"). Omit to list all schemas.',
101
+ },
102
+ filter: {
103
+ type: 'string',
104
+ description: 'Text filter when listing schemas (only used when "ref" is omitted)',
105
+ },
106
+ },
107
+ },
108
+ },
109
+ {
110
+ name: 'read_documentation_page',
111
+ description: 'Read a specific Bling documentation page (Markdown). Use this to get detailed information about guides, webhooks, limits, changelogs, JWT migration, publishing, and FAQs. Supports partial/fuzzy name matching.',
112
+ inputSchema: {
113
+ type: 'object',
114
+ properties: {
115
+ page: {
116
+ type: 'string',
117
+ description: 'Name of the page/topic to read (e.g. "webhooks", "guias_introducao", "limites", "migracao-jwt"). Partial names are accepted.',
118
+ },
119
+ },
120
+ required: ['page'],
121
+ },
122
+ },
123
+ {
124
+ name: 'search_documentation',
125
+ description: 'Full-text search across all Bling documentation pages (Guides, Webhooks, Limits, Changelogs, FAQs, JWT Migration, Publishing). Returns matching files with a short text snippet. Use this to quickly find which documentation page contains a specific topic or keyword.',
126
+ inputSchema: {
127
+ type: 'object',
128
+ properties: {
129
+ query: {
130
+ type: 'string',
131
+ description: 'The keyword or phrase to search for inside the documentation content (e.g. "OAuth", "retentativas", "access token", "homologação").',
132
+ },
133
+ },
134
+ required: ['query'],
135
+ },
136
+ },
137
+ ];
138
+ function makeHandlers() {
139
+ return {
140
+ describe: () => describeTool(indexedData, openAPISpec),
141
+ search_endpoints: async (args) => {
142
+ const input = args;
143
+ return searchEndpoints(input, indexedData, endpointVectorStore, isEmbeddingEnabled() ? embedText : undefined);
144
+ },
145
+ get_endpoint_details: (args) => {
146
+ const input = args;
147
+ return getEndpointDetails(input, indexedData, openAPISpec);
148
+ },
149
+ get_schema: (args) => {
150
+ const input = args;
151
+ return getSchema(input, indexedData, openAPISpec);
152
+ },
153
+ read_documentation_page: (args) => {
154
+ const input = args;
155
+ return readDocumentationPage(input, DOCS_PATH);
156
+ },
157
+ search_documentation: (args) => {
158
+ const input = args;
159
+ return searchDocumentation(input, DOCS_PATH);
160
+ },
161
+ };
162
+ }
163
+ // ─────────────────────────────────────────────
164
+ // Embedding cache (disk) — avoids 254 API calls on every startup
165
+ // ─────────────────────────────────────────────
166
+ const EMBED_CACHE_FILE = join(tmpdir(), 'bling-mcp-cache', 'embeddings-cache.json');
167
+ async function loadEmbeddingsCache(specUrl) {
168
+ try {
169
+ const raw = await fs.readFile(EMBED_CACHE_FILE, 'utf-8');
170
+ const cache = JSON.parse(raw);
171
+ if (cache.specUrl === specUrl && cache.embeddings.length > 0) {
172
+ console.error(`⚡ Using cached embeddings (${cache.embeddings.length} vectors, spec unchanged)`);
173
+ return cache;
174
+ }
175
+ return null;
176
+ }
177
+ catch {
178
+ return null;
179
+ }
180
+ }
181
+ async function saveEmbeddingsCache(specUrl, chunks, embeddings) {
182
+ try {
183
+ await fs.mkdir(join(tmpdir(), 'bling-mcp-cache'), { recursive: true });
184
+ const cache = { specUrl, chunks, embeddings };
185
+ await fs.writeFile(EMBED_CACHE_FILE, JSON.stringify(cache), 'utf-8');
186
+ console.error(`💾 Embeddings cached to disk (${embeddings.length} vectors)`);
187
+ }
188
+ catch (err) {
189
+ console.error(`⚠ Could not write embeddings cache: ${err.message}`);
190
+ }
191
+ }
192
+ // ─────────────────────────────────────────────
193
+ // Embedding initialization
194
+ // ─────────────────────────────────────────────
195
+ async function initializeEmbeddings(specUrl) {
196
+ if (!isEmbeddingEnabled()) {
197
+ console.error('ℹ GOOGLE_API_KEY not set — semantic search disabled, using keyword search');
198
+ return;
199
+ }
200
+ const endpoints = indexedData.endpoints;
201
+ const chunks = endpoints.map(buildEndpointChunk);
202
+ // Try loading from disk cache first
203
+ const cached = await loadEmbeddingsCache(specUrl);
204
+ let embeddings;
205
+ if (cached && cached.embeddings.length === endpoints.length) {
206
+ embeddings = cached.embeddings;
207
+ }
208
+ else {
209
+ console.error(`🔢 Generating embeddings for ${endpoints.length} endpoints via Google API...`);
210
+ embeddings = await embedTexts(chunks);
211
+ await saveEmbeddingsCache(specUrl, chunks, embeddings);
212
+ }
213
+ endpointVectorStore = new VectorStore();
214
+ endpointVectorStore.addBatch(endpoints.map((ep, i) => ({
215
+ id: `${ep.method} ${ep.path}`,
216
+ embedding: embeddings[i],
217
+ metadata: ep,
218
+ })));
219
+ console.error(`✅ Vector store ready: ${endpointVectorStore.size} endpoints indexed`);
220
+ }
221
+ // ─────────────────────────────────────────────
222
+ // Server initialization
223
+ // ─────────────────────────────────────────────
224
+ async function initialize() {
225
+ console.error('📥 Loading Bling OpenAPI specification...');
226
+ const specUrl = await discoverOpenAPIUrl();
227
+ openAPISpec = await loadOpenAPISpec(specUrl);
228
+ console.error('🗂 Indexing API documentation...');
229
+ indexedData = indexOpenAPISpec(openAPISpec);
230
+ console.error(`✅ Indexed ${indexedData.endpoints.length} endpoints, ${indexedData.schemas.size} schemas, ${indexedData.tags.length} modules`);
231
+ // Initialize embeddings (non-blocking error — fallback to keyword)
232
+ try {
233
+ await initializeEmbeddings(specUrl);
234
+ }
235
+ catch (err) {
236
+ console.error('⚠ Embeddings failed, falling back to keyword search:', err.message);
237
+ }
238
+ }
239
+ // ─────────────────────────────────────────────
240
+ // Main
241
+ // ─────────────────────────────────────────────
242
+ async function main() {
243
+ await initialize();
244
+ const server = new Server({ name: 'bling-docs-mcp', version: '3.0.0' }, { capabilities: { tools: {} } });
245
+ const handlers = makeHandlers();
246
+ server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: TOOLS }));
247
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
248
+ const { name, arguments: args = {} } = request.params;
249
+ const handler = handlers[name];
250
+ if (!handler) {
251
+ throw new Error(`Unknown tool: ${name}`);
252
+ }
253
+ try {
254
+ const result = await handler(args);
255
+ return {
256
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
257
+ };
258
+ }
259
+ catch (error) {
260
+ const message = error instanceof Error ? error.message : String(error);
261
+ return {
262
+ content: [{ type: 'text', text: JSON.stringify({ error: { code: 'TOOL_ERROR', message } }, null, 2) }],
263
+ isError: true,
264
+ };
265
+ }
266
+ });
267
+ const transport = new StdioServerTransport();
268
+ await server.connect(transport);
269
+ console.error(`🚀 Bling Docs MCP Server v3.0 running (6 tools, docs: ${DOCS_PATH})`);
270
+ }
271
+ main().catch((error) => {
272
+ console.error('Fatal error:', error);
273
+ process.exit(1);
274
+ });
275
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Google Embeddings Module
3
+ * Uses Google's text-embedding-004 model to generate embeddings
4
+ * for semantic search over API endpoints and schemas
5
+ */
6
+ /**
7
+ * Generate an embedding for a single text
8
+ */
9
+ export declare function embedText(text: string): Promise<number[]>;
10
+ /**
11
+ * Generate embeddings for multiple texts in batches
12
+ */
13
+ export declare function embedTexts(texts: string[]): Promise<number[][]>;
14
+ /**
15
+ * Check if the Google API key is configured
16
+ */
17
+ export declare function isEmbeddingEnabled(): boolean;
18
+ //# sourceMappingURL=embeddings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embeddings.d.ts","sourceRoot":"","sources":["../../src/lib/embeddings.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAoBH;;GAEG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAK/D;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAerE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAE5C"}