@andrebuzeli/git-mcp 2.28.1 → 2.29.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 (188) hide show
  1. package/dist/client.d.ts +306 -306
  2. package/dist/client.js +298 -298
  3. package/dist/config.d.ts +310 -310
  4. package/dist/config.js +392 -392
  5. package/dist/index.d.ts +22 -22
  6. package/dist/index.js +89 -89
  7. package/dist/providers/base-provider.d.ts +160 -160
  8. package/dist/providers/base-provider.js +274 -274
  9. package/dist/providers/error-handler.d.ts +74 -50
  10. package/dist/providers/error-handler.d.ts.map +1 -1
  11. package/dist/providers/error-handler.js +234 -175
  12. package/dist/providers/error-handler.js.map +1 -1
  13. package/dist/providers/gitea-provider.d.ts +97 -97
  14. package/dist/providers/gitea-provider.d.ts.map +1 -1
  15. package/dist/providers/gitea-provider.js +1015 -1001
  16. package/dist/providers/gitea-provider.js.map +1 -1
  17. package/dist/providers/github-provider.d.ts +104 -104
  18. package/dist/providers/github-provider.d.ts.map +1 -1
  19. package/dist/providers/github-provider.js +1248 -1234
  20. package/dist/providers/github-provider.js.map +1 -1
  21. package/dist/providers/index.d.ts +12 -12
  22. package/dist/providers/index.js +40 -40
  23. package/dist/providers/provider-factory.d.ts +74 -74
  24. package/dist/providers/provider-factory.d.ts.map +1 -1
  25. package/dist/providers/provider-factory.js +318 -311
  26. package/dist/providers/provider-factory.js.map +1 -1
  27. package/dist/providers/types.d.ts +318 -318
  28. package/dist/providers/types.js +6 -6
  29. package/dist/server.d.ts +76 -76
  30. package/dist/server.js +306 -306
  31. package/dist/server.js.map +1 -1
  32. package/dist/tools/git-archive.d.ts +169 -165
  33. package/dist/tools/git-archive.d.ts.map +1 -1
  34. package/dist/tools/git-archive.js +246 -233
  35. package/dist/tools/git-archive.js.map +1 -1
  36. package/dist/tools/git-branches.d.ts +434 -430
  37. package/dist/tools/git-branches.d.ts.map +1 -1
  38. package/dist/tools/git-branches.js +640 -627
  39. package/dist/tools/git-branches.js.map +1 -1
  40. package/dist/tools/git-commits.d.ts +489 -485
  41. package/dist/tools/git-commits.d.ts.map +1 -1
  42. package/dist/tools/git-commits.js +748 -735
  43. package/dist/tools/git-commits.js.map +1 -1
  44. package/dist/tools/git-config.d.ts +144 -140
  45. package/dist/tools/git-config.d.ts.map +1 -1
  46. package/dist/tools/git-config.js +281 -268
  47. package/dist/tools/git-config.js.map +1 -1
  48. package/dist/tools/git-files.d.ts +490 -486
  49. package/dist/tools/git-files.d.ts.map +1 -1
  50. package/dist/tools/git-files.js +620 -607
  51. package/dist/tools/git-files.js.map +1 -1
  52. package/dist/tools/git-initialize.d.ts +46 -42
  53. package/dist/tools/git-initialize.d.ts.map +1 -1
  54. package/dist/tools/git-initialize.js +81 -68
  55. package/dist/tools/git-initialize.js.map +1 -1
  56. package/dist/tools/git-issues.d.ts +578 -571
  57. package/dist/tools/git-issues.d.ts.map +1 -1
  58. package/dist/tools/git-issues.js +754 -740
  59. package/dist/tools/git-issues.js.map +1 -1
  60. package/dist/tools/git-pulls.d.ts +701 -694
  61. package/dist/tools/git-pulls.d.ts.map +1 -1
  62. package/dist/tools/git-pulls.js +746 -732
  63. package/dist/tools/git-pulls.js.map +1 -1
  64. package/dist/tools/git-releases.d.ts +494 -487
  65. package/dist/tools/git-releases.d.ts.map +1 -1
  66. package/dist/tools/git-releases.js +571 -557
  67. package/dist/tools/git-releases.js.map +1 -1
  68. package/dist/tools/git-remote.d.ts +142 -138
  69. package/dist/tools/git-remote.d.ts.map +1 -1
  70. package/dist/tools/git-remote.js +287 -274
  71. package/dist/tools/git-remote.js.map +1 -1
  72. package/dist/tools/git-repositories.d.ts +487 -483
  73. package/dist/tools/git-repositories.d.ts.map +1 -1
  74. package/dist/tools/git-repositories.js +653 -640
  75. package/dist/tools/git-repositories.js.map +1 -1
  76. package/dist/tools/git-reset.d.ts +134 -130
  77. package/dist/tools/git-reset.d.ts.map +1 -1
  78. package/dist/tools/git-reset.js +236 -223
  79. package/dist/tools/git-reset.js.map +1 -1
  80. package/dist/tools/git-revert.d.ts +153 -149
  81. package/dist/tools/git-revert.d.ts.map +1 -1
  82. package/dist/tools/git-revert.js +211 -198
  83. package/dist/tools/git-revert.js.map +1 -1
  84. package/dist/tools/git-stash.d.ts +144 -140
  85. package/dist/tools/git-stash.d.ts.map +1 -1
  86. package/dist/tools/git-stash.js +282 -269
  87. package/dist/tools/git-stash.js.map +1 -1
  88. package/dist/tools/git-sync.d.ts +182 -178
  89. package/dist/tools/git-sync.d.ts.map +1 -1
  90. package/dist/tools/git-sync.js +325 -312
  91. package/dist/tools/git-sync.js.map +1 -1
  92. package/dist/tools/git-tags.d.ts +418 -411
  93. package/dist/tools/git-tags.d.ts.map +1 -1
  94. package/dist/tools/git-tags.js +499 -485
  95. package/dist/tools/git-tags.js.map +1 -1
  96. package/dist/tools/git-upload-project.d.ts +5 -1
  97. package/dist/tools/git-upload-project.d.ts.map +1 -1
  98. package/dist/tools/git-upload-project.js +21 -1
  99. package/dist/tools/git-upload-project.js.map +1 -1
  100. package/dist/tools/git-webhooks.d.ts +477 -470
  101. package/dist/tools/git-webhooks.d.ts.map +1 -1
  102. package/dist/tools/git-webhooks.js +561 -543
  103. package/dist/tools/git-webhooks.js.map +1 -1
  104. package/dist/utils/git-error-analyzer.d.ts +64 -0
  105. package/dist/utils/git-error-analyzer.d.ts.map +1 -0
  106. package/dist/utils/git-error-analyzer.js +286 -0
  107. package/dist/utils/git-error-analyzer.js.map +1 -0
  108. package/dist/utils/terminal-controller.d.ts +80 -80
  109. package/dist/utils/terminal-controller.js +345 -345
  110. package/dist/utils/user-detection.d.ts +24 -24
  111. package/dist/utils/user-detection.js +53 -53
  112. package/package.json +2 -2
  113. package/dist/tools/gh-actions.d.ts +0 -253
  114. package/dist/tools/gh-actions.d.ts.map +0 -1
  115. package/dist/tools/gh-actions.js +0 -390
  116. package/dist/tools/gh-actions.js.map +0 -1
  117. package/dist/tools/gh-analytics.d.ts +0 -264
  118. package/dist/tools/gh-analytics.d.ts.map +0 -1
  119. package/dist/tools/gh-analytics.js +0 -402
  120. package/dist/tools/gh-analytics.js.map +0 -1
  121. package/dist/tools/gh-code-review.d.ts +0 -305
  122. package/dist/tools/gh-code-review.d.ts.map +0 -1
  123. package/dist/tools/gh-code-review.js +0 -513
  124. package/dist/tools/gh-code-review.js.map +0 -1
  125. package/dist/tools/gh-codespaces.d.ts +0 -139
  126. package/dist/tools/gh-codespaces.d.ts.map +0 -1
  127. package/dist/tools/gh-codespaces.js +0 -283
  128. package/dist/tools/gh-codespaces.js.map +0 -1
  129. package/dist/tools/gh-deployments.d.ts +0 -301
  130. package/dist/tools/gh-deployments.d.ts.map +0 -1
  131. package/dist/tools/gh-deployments.js +0 -368
  132. package/dist/tools/gh-deployments.js.map +0 -1
  133. package/dist/tools/gh-gists.d.ts +0 -175
  134. package/dist/tools/gh-gists.d.ts.map +0 -1
  135. package/dist/tools/gh-gists.js +0 -322
  136. package/dist/tools/gh-gists.js.map +0 -1
  137. package/dist/tools/gh-projects.d.ts +0 -206
  138. package/dist/tools/gh-projects.d.ts.map +0 -1
  139. package/dist/tools/gh-projects.js +0 -359
  140. package/dist/tools/gh-projects.js.map +0 -1
  141. package/dist/tools/gh-security.d.ts +0 -275
  142. package/dist/tools/gh-security.d.ts.map +0 -1
  143. package/dist/tools/gh-security.js +0 -396
  144. package/dist/tools/gh-security.js.map +0 -1
  145. package/dist/tools/gh-sync.d.ts +0 -214
  146. package/dist/tools/gh-sync.d.ts.map +0 -1
  147. package/dist/tools/gh-sync.js +0 -379
  148. package/dist/tools/gh-sync.js.map +0 -1
  149. package/dist/tools/gh-workflows.d.ts +0 -291
  150. package/dist/tools/gh-workflows.d.ts.map +0 -1
  151. package/dist/tools/gh-workflows.js +0 -433
  152. package/dist/tools/gh-workflows.js.map +0 -1
  153. package/dist/tools/git-bundle.d.ts +0 -172
  154. package/dist/tools/git-bundle.d.ts.map +0 -1
  155. package/dist/tools/git-bundle.js +0 -242
  156. package/dist/tools/git-bundle.js.map +0 -1
  157. package/dist/tools/git-cherry-pick.d.ts +0 -159
  158. package/dist/tools/git-cherry-pick.d.ts.map +0 -1
  159. package/dist/tools/git-cherry-pick.js +0 -225
  160. package/dist/tools/git-cherry-pick.js.map +0 -1
  161. package/dist/tools/git-rebase.d.ts +0 -138
  162. package/dist/tools/git-rebase.d.ts.map +0 -1
  163. package/dist/tools/git-rebase.js +0 -214
  164. package/dist/tools/git-rebase.js.map +0 -1
  165. package/dist/tools/git-submodule.d.ts +0 -153
  166. package/dist/tools/git-submodule.d.ts.map +0 -1
  167. package/dist/tools/git-submodule.js +0 -290
  168. package/dist/tools/git-submodule.js.map +0 -1
  169. package/dist/tools/git-worktree.d.ts +0 -160
  170. package/dist/tools/git-worktree.d.ts.map +0 -1
  171. package/dist/tools/git-worktree.js +0 -270
  172. package/dist/tools/git-worktree.js.map +0 -1
  173. package/dist/tools/repositories.d.ts +0 -406
  174. package/dist/tools/repositories.d.ts.map +0 -1
  175. package/dist/tools/repositories.js +0 -570
  176. package/dist/tools/repositories.js.map +0 -1
  177. package/dist/tools/users.d.ts +0 -373
  178. package/dist/tools/users.d.ts.map +0 -1
  179. package/dist/tools/users.js +0 -500
  180. package/dist/tools/users.js.map +0 -1
  181. package/dist/tools/validator.d.ts +0 -171
  182. package/dist/tools/validator.d.ts.map +0 -1
  183. package/dist/tools/validator.js +0 -195
  184. package/dist/tools/validator.js.map +0 -1
  185. package/dist/tools/version-control.d.ts +0 -137
  186. package/dist/tools/version-control.d.ts.map +0 -1
  187. package/dist/tools/version-control.js +0 -165
  188. package/dist/tools/version-control.js.map +0 -1
package/dist/server.js CHANGED
@@ -1,307 +1,307 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GiteaMCPServer = void 0;
4
- const index_ts_1 = require("@modelcontextprotocol/sdk/server/index.ts");
5
- const stdio_ts_1 = require("@modelcontextprotocol/sdk/server/stdio.ts");
6
- const types_ts_1 = require("@modelcontextprotocol/sdk/types.ts");
7
- const config_ts_1 = require("./config.ts");
8
- const index_ts_2 = require("./providers/index.ts");
9
- /**
10
- * Importação de todas as ferramentas MCP disponíveis (18 tools)
11
- *
12
- * GIT CORE (18 tools) - Funcionam com GitHub + Gitea:
13
- * - git-repositories: Gerenciamento de repositórios
14
- * - git-commits: Operações com commits
15
- * - git-branches: Operações com branches
16
- * - git-tags: Gerenciamento de tags
17
- * - git-files: Gerenciamento de arquivos
18
- * - git-upload-project: Upload completo de projeto
19
- * - git-initialize: Inicialização completa de repositório
20
- * - git-issues: Gerenciamento de issues
21
- * - git-pulls: Pull requests e merges
22
- * - git-releases: Gerenciamento de releases
23
- * - git-webhooks: Gerenciamento de webhooks
24
- * - git-reset: Operações de reset
25
- * - git-revert: Operações de revert
26
- * - git-stash: Gerenciamento de stash
27
- * - git-config: Configuração do Git
28
- * - git-remote: Gerenciamento de remotes
29
- * - git-archive: Criação de arquivos
30
- * - git-sync: Sincronização de repositórios
31
- */
32
- // Git Core Tools (18)
33
- const git_repositories_ts_1 = require("./tools/git-repositories.ts");
34
- const git_commits_ts_1 = require("./tools/git-commits.ts");
35
- const git_branches_ts_1 = require("./tools/git-branches.ts");
36
- const git_tags_ts_1 = require("./tools/git-tags.ts");
37
- const git_files_ts_1 = require("./tools/git-files.ts");
38
- const git_upload_project_ts_1 = require("./tools/git-upload-project.ts");
39
- const git_initialize_ts_1 = require("./tools/git-initialize.ts");
40
- const git_issues_ts_1 = require("./tools/git-issues.ts");
41
- const git_pulls_ts_1 = require("./tools/git-pulls.ts");
42
- const git_releases_ts_1 = require("./tools/git-releases.ts");
43
- const git_webhooks_ts_1 = require("./tools/git-webhooks.ts");
44
- const git_reset_ts_1 = require("./tools/git-reset.ts");
45
- const git_revert_ts_1 = require("./tools/git-revert.ts");
46
- const git_stash_ts_1 = require("./tools/git-stash.ts");
47
- const git_config_ts_1 = require("./tools/git-config.ts");
48
- const git_remote_ts_1 = require("./tools/git-remote.ts");
49
- const git_archive_ts_1 = require("./tools/git-archive.ts");
50
- const git_sync_ts_1 = require("./tools/git-sync.ts");
51
- /**
52
- * Array de todas as ferramentas disponíveis (18 tools)
53
- *
54
- * ESTRUTURA:
55
- * - Cada tool deve implementar a interface Tool
56
- * - Nome, descrição e schema são obrigatórios
57
- * - Handler deve ser assíncrono e retornar resultado
58
- *
59
- * ORGANIZAÇÃO:
60
- * - Git Core (18): Funcionam com GitHub + Gitea
61
- *
62
- * USO:
63
- * - Para listagem de tools disponíveis
64
- * - Para execução de tools específicas
65
- * - Para validação de parâmetros
66
- */
67
- const tools = [
68
- // Git Core Tools (18) - GitHub + Gitea
69
- git_repositories_ts_1.gitRepositoriesTool,
70
- git_commits_ts_1.commitsTool,
71
- git_branches_ts_1.branchesTool,
72
- git_tags_ts_1.tagsTool,
73
- git_files_ts_1.filesTool,
74
- git_upload_project_ts_1.uploadProjectTool,
75
- git_initialize_ts_1.initializeTool,
76
- git_issues_ts_1.issuesTool,
77
- git_pulls_ts_1.pullsTool,
78
- git_releases_ts_1.releasesTool,
79
- git_webhooks_ts_1.webhooksTool,
80
- git_reset_ts_1.gitResetTool,
81
- git_revert_ts_1.gitRevertTool,
82
- git_stash_ts_1.gitStashTool,
83
- git_config_ts_1.gitConfigTool,
84
- git_remote_ts_1.gitRemoteTool,
85
- git_archive_ts_1.gitArchiveTool,
86
- git_sync_ts_1.gitSyncTool
87
- ];
88
- /**
89
- * Servidor MCP principal para Gitea
90
- *
91
- * RESPONSABILIDADES:
92
- * - Inicializar servidor MCP
93
- * - Registrar handlers para requests
94
- * - Gerenciar ciclo de vida das tools
95
- * - Tratar erros e validações
96
- *
97
- * ARQUITETURA:
98
- * - Server MCP padrão com transport stdio
99
- * - Handlers para list e call de tools
100
- * - Tratamento centralizado de erros
101
- *
102
- * RECOMENDAÇÕES:
103
- * - Use apenas uma instância por processo
104
- * - Configure handlers antes de conectar
105
- * - Implemente graceful shutdown
106
- */
107
- class GiteaMCPServer {
108
- server;
109
- constructor() {
110
- this.server = new index_ts_1.Server({
111
- name: 'git-mcp',
112
- version: '2.16.0',
113
- });
114
- this.setupHandlers();
115
- }
116
- /**
117
- * Configura os handlers para requests MCP
118
- *
119
- * HANDLERS IMPLEMENTADOS:
120
- * - ListTools: Lista todas as tools disponíveis
121
- * - CallTool: Executa uma tool específica
122
- *
123
- * FLUXO:
124
- * 1. Validação de parâmetros
125
- * 2. Busca da tool solicitada
126
- * 3. Execução com tratamento de erros
127
- * 4. Retorno de resultado ou erro
128
- *
129
- * TRATAMENTO DE ERROS:
130
- * - Tool não encontrada: erro específico
131
- * - Erro de execução: captura e formata
132
- * - Erro de validação: mensagem descritiva
133
- */
134
- setupHandlers() {
135
- // Handler para listar tools disponíveis
136
- this.server.setRequestHandler(types_ts_1.ListToolsRequestSchema, async () => {
137
- return {
138
- tools: tools.map(tool => ({
139
- name: tool.name,
140
- description: tool.description,
141
- inputSchema: tool.inputSchema
142
- }))
143
- };
144
- });
145
- // Handler para executar tools específicas
146
- this.server.setRequestHandler(types_ts_1.CallToolRequestSchema, async (request) => {
147
- const { name, arguments: args } = request.params;
148
- // Busca a tool solicitada
149
- const tool = tools.find(t => t.name === name);
150
- if (!tool) {
151
- throw new Error(`Tool '${name}' not found`);
152
- }
153
- try {
154
- // Executa o handler da tool
155
- const result = await tool.handler(args || {});
156
- return {
157
- content: [
158
- {
159
- type: 'text',
160
- text: JSON.stringify(result, null, 2)
161
- }
162
- ]
163
- };
164
- }
165
- catch (error) {
166
- const errorMessage = error instanceof Error ? error.message : String(error);
167
- return {
168
- content: [
169
- {
170
- type: 'text',
171
- text: JSON.stringify({
172
- success: false,
173
- action: name,
174
- message: 'Erro na execução da tool',
175
- error: errorMessage
176
- }, null, 2)
177
- }
178
- ],
179
- isError: true
180
- };
181
- }
182
- });
183
- }
184
- /**
185
- * Inicializa e executa o servidor MCP
186
- *
187
- * FLUXO DE INICIALIZAÇÃO:
188
- * 1. Validação de configuração
189
- * 2. Verificação de token obrigatório
190
- * 3. Conexão com transport stdio
191
- * 4. Log de status e debug
192
- *
193
- * VALIDAÇÕES:
194
- * - Token de autenticação obrigatório
195
- * - URL do Gitea válida
196
- * - Configuração de debug opcional
197
- *
198
- * RECOMENDAÇÕES:
199
- * - Configure DEBUG=true para desenvolvimento
200
- * - Valide token antes de iniciar
201
- * - Configure timeout adequado
202
- */
203
- async run() {
204
- const cfg = config_ts_1.config.getConfig();
205
- if (cfg.debug) {
206
- // Server starting - debug info removed for MCP protocol compliance
207
- }
208
- // Inicializar provider factory com configuração
209
- try {
210
- console.log('[SERVER] Inicializando provider factory...');
211
- const factory = (0, index_ts_2.initializeFactoryFromEnv)();
212
- // Log detalhado dos providers configurados
213
- try {
214
- const providersInfo = factory.getProvidersInfo();
215
- console.log('[SERVER] Providers configurados:');
216
- providersInfo.forEach(p => {
217
- console.log(` - ${p.name} (${p.type}) ${p.isDefault ? '[PADRÃO]' : ''}`);
218
- });
219
- }
220
- catch (infoError) {
221
- console.log('[SERVER] Não foi possível obter informações detalhadas dos providers');
222
- }
223
- // Atualizar o globalProviderFactory com a configuração
224
- Object.assign(index_ts_2.globalProviderFactory, factory);
225
- console.log('[SERVER] Provider factory inicializado com sucesso');
226
- }
227
- catch (error) {
228
- console.error('[SERVER] Erro ao inicializar providers:', error);
229
- // Tenta criar um provider fallback se houver falha completa
230
- try {
231
- console.log('[SERVER] Tentando criar provider fallback...');
232
- // Criar provider GitHub básico como fallback
233
- const fallbackConfig = {
234
- name: 'github-fallback',
235
- type: 'github',
236
- apiUrl: 'https://api.github.com',
237
- baseUrl: 'https://github.com',
238
- token: process.env.GITHUB_TOKEN || 'dummy_token',
239
- username: process.env.GITHUB_USERNAME
240
- };
241
- const fallbackProvider = index_ts_2.globalProviderFactory.createProvider(fallbackConfig);
242
- index_ts_2.globalProviderFactory.setDefaultProvider('github-fallback');
243
- console.log('[SERVER] Provider fallback criado com sucesso');
244
- }
245
- catch (fallbackError) {
246
- console.error('[SERVER] Falha ao criar provider fallback:', fallbackError);
247
- // Continua sem provider - algumas tools podem não funcionar
248
- }
249
- }
250
- const transport = new stdio_ts_1.StdioServerTransport();
251
- await this.server.connect(transport);
252
- if (cfg.debug) {
253
- // Server connected and ready
254
- }
255
- }
256
- /**
257
- * Fecha o servidor MCP graciosamente
258
- *
259
- * USO:
260
- * - Durante shutdown da aplicação
261
- * - Para limpeza de recursos
262
- * - Para finalização controlada
263
- *
264
- * RECOMENDAÇÕES:
265
- * - Sempre chame antes de sair
266
- * - Aguarde a conclusão da operação
267
- * - Trate erros de fechamento
268
- */
269
- async close() {
270
- await this.server.close();
271
- }
272
- }
273
- exports.GiteaMCPServer = GiteaMCPServer;
274
- /**
275
- * Handlers para sinais do sistema
276
- *
277
- * SINAIS TRATADOS:
278
- * - SIGINT: Interrupção do usuário (Ctrl+C)
279
- * - unhandledRejection: Promises rejeitadas
280
- * - uncaughtException: Exceções não tratadas
281
- *
282
- * COMPORTAMENTO:
283
- * - SIGINT: Shutdown gracioso
284
- * - Erros não tratados: Exit com código 1
285
- * - Log de erro antes de sair
286
- *
287
- * RECOMENDAÇÕES:
288
- * - Implemente graceful shutdown
289
- * - Log todos os erros fatais
290
- * - Use códigos de saída apropriados
291
- */
292
- // Handler para interrupção do usuário (Ctrl+C)
293
- process.on('SIGINT', async () => {
294
- // Shutting down server
295
- process.exit(0);
296
- });
297
- // Handler para promises rejeitadas não tratadas
298
- process.on('unhandledRejection', (reason, promise) => {
299
- console.error('Unhandled Rejection at:', promise, 'reason:', reason);
300
- process.exit(1);
301
- });
302
- // Handler para exceções não tratadas
303
- process.on('uncaughtException', (error) => {
304
- console.error('Uncaught Exception:', error);
305
- process.exit(1);
306
- });
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GiteaMCPServer = void 0;
4
+ const index_js_1 = require("@modelcontextprotocol/sdk/server/index.js");
5
+ const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
6
+ const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
7
+ const config_js_1 = require("./config.js");
8
+ const index_js_2 = require("./providers/index.js");
9
+ /**
10
+ * Importação de todas as ferramentas MCP disponíveis (18 tools)
11
+ *
12
+ * GIT CORE (18 tools) - Funcionam com GitHub + Gitea:
13
+ * - git-repositories: Gerenciamento de repositórios
14
+ * - git-commits: Operações com commits
15
+ * - git-branches: Operações com branches
16
+ * - git-tags: Gerenciamento de tags
17
+ * - git-files: Gerenciamento de arquivos
18
+ * - git-upload-project: Upload completo de projeto
19
+ * - git-initialize: Inicialização completa de repositório
20
+ * - git-issues: Gerenciamento de issues
21
+ * - git-pulls: Pull requests e merges
22
+ * - git-releases: Gerenciamento de releases
23
+ * - git-webhooks: Gerenciamento de webhooks
24
+ * - git-reset: Operações de reset
25
+ * - git-revert: Operações de revert
26
+ * - git-stash: Gerenciamento de stash
27
+ * - git-config: Configuração do Git
28
+ * - git-remote: Gerenciamento de remotes
29
+ * - git-archive: Criação de arquivos
30
+ * - git-sync: Sincronização de repositórios
31
+ */
32
+ // Git Core Tools (18)
33
+ const git_repositories_js_1 = require("./tools/git-repositories.js");
34
+ const git_commits_js_1 = require("./tools/git-commits.js");
35
+ const git_branches_js_1 = require("./tools/git-branches.js");
36
+ const git_tags_js_1 = require("./tools/git-tags.js");
37
+ const git_files_js_1 = require("./tools/git-files.js");
38
+ const git_upload_project_js_1 = require("./tools/git-upload-project.js");
39
+ const git_initialize_js_1 = require("./tools/git-initialize.js");
40
+ const git_issues_js_1 = require("./tools/git-issues.js");
41
+ const git_pulls_js_1 = require("./tools/git-pulls.js");
42
+ const git_releases_js_1 = require("./tools/git-releases.js");
43
+ // import { webhooksTool } from './tools/git-webhooks.js';
44
+ const git_reset_js_1 = require("./tools/git-reset.js");
45
+ const git_revert_js_1 = require("./tools/git-revert.js");
46
+ const git_stash_js_1 = require("./tools/git-stash.js");
47
+ const git_config_js_1 = require("./tools/git-config.js");
48
+ const git_remote_js_1 = require("./tools/git-remote.js");
49
+ const git_archive_js_1 = require("./tools/git-archive.js");
50
+ const git_sync_js_1 = require("./tools/git-sync.js");
51
+ /**
52
+ * Array de todas as ferramentas disponíveis (18 tools)
53
+ *
54
+ * ESTRUTURA:
55
+ * - Cada tool deve implementar a interface Tool
56
+ * - Nome, descrição e schema são obrigatórios
57
+ * - Handler deve ser assíncrono e retornar resultado
58
+ *
59
+ * ORGANIZAÇÃO:
60
+ * - Git Core (18): Funcionam com GitHub + Gitea
61
+ *
62
+ * USO:
63
+ * - Para listagem de tools disponíveis
64
+ * - Para execução de tools específicas
65
+ * - Para validação de parâmetros
66
+ */
67
+ const tools = [
68
+ // Git Core Tools (18) - GitHub + Gitea
69
+ git_repositories_js_1.gitRepositoriesTool,
70
+ git_commits_js_1.commitsTool,
71
+ git_branches_js_1.branchesTool,
72
+ git_tags_js_1.tagsTool,
73
+ git_files_js_1.filesTool,
74
+ git_upload_project_js_1.uploadProjectTool,
75
+ git_initialize_js_1.initializeTool,
76
+ git_issues_js_1.issuesTool,
77
+ git_pulls_js_1.pullsTool,
78
+ git_releases_js_1.releasesTool,
79
+ // webhooksTool,
80
+ git_reset_js_1.gitResetTool,
81
+ git_revert_js_1.gitRevertTool,
82
+ git_stash_js_1.gitStashTool,
83
+ git_config_js_1.gitConfigTool,
84
+ git_remote_js_1.gitRemoteTool,
85
+ git_archive_js_1.gitArchiveTool,
86
+ git_sync_js_1.gitSyncTool
87
+ ];
88
+ /**
89
+ * Servidor MCP principal para Gitea
90
+ *
91
+ * RESPONSABILIDADES:
92
+ * - Inicializar servidor MCP
93
+ * - Registrar handlers para requests
94
+ * - Gerenciar ciclo de vida das tools
95
+ * - Tratar erros e validações
96
+ *
97
+ * ARQUITETURA:
98
+ * - Server MCP padrão com transport stdio
99
+ * - Handlers para list e call de tools
100
+ * - Tratamento centralizado de erros
101
+ *
102
+ * RECOMENDAÇÕES:
103
+ * - Use apenas uma instância por processo
104
+ * - Configure handlers antes de conectar
105
+ * - Implemente graceful shutdown
106
+ */
107
+ class GiteaMCPServer {
108
+ server;
109
+ constructor() {
110
+ this.server = new index_js_1.Server({
111
+ name: 'git-mcp',
112
+ version: '2.16.0',
113
+ });
114
+ this.setupHandlers();
115
+ }
116
+ /**
117
+ * Configura os handlers para requests MCP
118
+ *
119
+ * HANDLERS IMPLEMENTADOS:
120
+ * - ListTools: Lista todas as tools disponíveis
121
+ * - CallTool: Executa uma tool específica
122
+ *
123
+ * FLUXO:
124
+ * 1. Validação de parâmetros
125
+ * 2. Busca da tool solicitada
126
+ * 3. Execução com tratamento de erros
127
+ * 4. Retorno de resultado ou erro
128
+ *
129
+ * TRATAMENTO DE ERROS:
130
+ * - Tool não encontrada: erro específico
131
+ * - Erro de execução: captura e formata
132
+ * - Erro de validação: mensagem descritiva
133
+ */
134
+ setupHandlers() {
135
+ // Handler para listar tools disponíveis
136
+ this.server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => {
137
+ return {
138
+ tools: tools.map(tool => ({
139
+ name: tool.name,
140
+ description: tool.description,
141
+ inputSchema: tool.inputSchema
142
+ }))
143
+ };
144
+ });
145
+ // Handler para executar tools específicas
146
+ this.server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
147
+ const { name, arguments: args } = request.params;
148
+ // Busca a tool solicitada
149
+ const tool = tools.find(t => t.name === name);
150
+ if (!tool) {
151
+ throw new Error(`Tool '${name}' not found`);
152
+ }
153
+ try {
154
+ // Executa o handler da tool
155
+ const result = await tool.handler(args || {});
156
+ return {
157
+ content: [
158
+ {
159
+ type: 'text',
160
+ text: JSON.stringify(result, null, 2)
161
+ }
162
+ ]
163
+ };
164
+ }
165
+ catch (error) {
166
+ const errorMessage = error instanceof Error ? error.message : String(error);
167
+ return {
168
+ content: [
169
+ {
170
+ type: 'text',
171
+ text: JSON.stringify({
172
+ success: false,
173
+ action: name,
174
+ message: 'Erro na execução da tool',
175
+ error: errorMessage
176
+ }, null, 2)
177
+ }
178
+ ],
179
+ isError: true
180
+ };
181
+ }
182
+ });
183
+ }
184
+ /**
185
+ * Inicializa e executa o servidor MCP
186
+ *
187
+ * FLUXO DE INICIALIZAÇÃO:
188
+ * 1. Validação de configuração
189
+ * 2. Verificação de token obrigatório
190
+ * 3. Conexão com transport stdio
191
+ * 4. Log de status e debug
192
+ *
193
+ * VALIDAÇÕES:
194
+ * - Token de autenticação obrigatório
195
+ * - URL do Gitea válida
196
+ * - Configuração de debug opcional
197
+ *
198
+ * RECOMENDAÇÕES:
199
+ * - Configure DEBUG=true para desenvolvimento
200
+ * - Valide token antes de iniciar
201
+ * - Configure timeout adequado
202
+ */
203
+ async run() {
204
+ const cfg = config_js_1.config.getConfig();
205
+ if (cfg.debug) {
206
+ // Server starting - debug info removed for MCP protocol compliance
207
+ }
208
+ // Inicializar provider factory com configuração
209
+ try {
210
+ console.log('[SERVER] Inicializando provider factory...');
211
+ const factory = (0, index_js_2.initializeFactoryFromEnv)();
212
+ // Log detalhado dos providers configurados
213
+ try {
214
+ const providersInfo = factory.getProvidersInfo();
215
+ console.log('[SERVER] Providers configurados:');
216
+ providersInfo.forEach(p => {
217
+ console.log(` - ${p.name} (${p.type}) ${p.isDefault ? '[PADRÃO]' : ''}`);
218
+ });
219
+ }
220
+ catch (infoError) {
221
+ console.log('[SERVER] Não foi possível obter informações detalhadas dos providers');
222
+ }
223
+ // Atualizar o globalProviderFactory com a configuração
224
+ Object.assign(index_js_2.globalProviderFactory, factory);
225
+ console.log('[SERVER] Provider factory inicializado com sucesso');
226
+ }
227
+ catch (error) {
228
+ console.error('[SERVER] Erro ao inicializar providers:', error);
229
+ // Tenta criar um provider fallback se houver falha completa
230
+ try {
231
+ console.log('[SERVER] Tentando criar provider fallback...');
232
+ // Criar provider GitHub básico como fallback
233
+ const fallbackConfig = {
234
+ name: 'github-fallback',
235
+ type: 'github',
236
+ apiUrl: 'https://api.github.com',
237
+ baseUrl: 'https://github.com',
238
+ token: process.env.GITHUB_TOKEN || 'dummy_token',
239
+ username: process.env.GITHUB_USERNAME
240
+ };
241
+ const fallbackProvider = index_js_2.globalProviderFactory.createProvider(fallbackConfig);
242
+ index_js_2.globalProviderFactory.setDefaultProvider('github-fallback');
243
+ console.log('[SERVER] Provider fallback criado com sucesso');
244
+ }
245
+ catch (fallbackError) {
246
+ console.error('[SERVER] Falha ao criar provider fallback:', fallbackError);
247
+ // Continua sem provider - algumas tools podem não funcionar
248
+ }
249
+ }
250
+ const transport = new stdio_js_1.StdioServerTransport();
251
+ await this.server.connect(transport);
252
+ if (cfg.debug) {
253
+ // Server connected and ready
254
+ }
255
+ }
256
+ /**
257
+ * Fecha o servidor MCP graciosamente
258
+ *
259
+ * USO:
260
+ * - Durante shutdown da aplicação
261
+ * - Para limpeza de recursos
262
+ * - Para finalização controlada
263
+ *
264
+ * RECOMENDAÇÕES:
265
+ * - Sempre chame antes de sair
266
+ * - Aguarde a conclusão da operação
267
+ * - Trate erros de fechamento
268
+ */
269
+ async close() {
270
+ await this.server.close();
271
+ }
272
+ }
273
+ exports.GiteaMCPServer = GiteaMCPServer;
274
+ /**
275
+ * Handlers para sinais do sistema
276
+ *
277
+ * SINAIS TRATADOS:
278
+ * - SIGINT: Interrupção do usuário (Ctrl+C)
279
+ * - unhandledRejection: Promises rejeitadas
280
+ * - uncaughtException: Exceções não tratadas
281
+ *
282
+ * COMPORTAMENTO:
283
+ * - SIGINT: Shutdown gracioso
284
+ * - Erros não tratados: Exit com código 1
285
+ * - Log de erro antes de sair
286
+ *
287
+ * RECOMENDAÇÕES:
288
+ * - Implemente graceful shutdown
289
+ * - Log todos os erros fatais
290
+ * - Use códigos de saída apropriados
291
+ */
292
+ // Handler para interrupção do usuário (Ctrl+C)
293
+ process.on('SIGINT', async () => {
294
+ // Shutting down server
295
+ process.exit(0);
296
+ });
297
+ // Handler para promises rejeitadas não tratadas
298
+ process.on('unhandledRejection', (reason, promise) => {
299
+ console.error('Unhandled Rejection at:', promise, 'reason:', reason);
300
+ process.exit(1);
301
+ });
302
+ // Handler para exceções não tratadas
303
+ process.on('uncaughtException', (error) => {
304
+ console.error('Uncaught Exception:', error);
305
+ process.exit(1);
306
+ });
307
307
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}