@enokdev/springdocs-mcp 1.1.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 ADDED
@@ -0,0 +1,219 @@
1
+ # 📚 Spring Documentation MCP Server
2
+
3
+ [![npm version](https://badge.fury.io/js/@enokdev%2Fspringdocs-mcp.svg)](https://badge.fury.io/js/@enokdev%2Fspringdocs-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.js-18+-green.svg)](https://nodejs.org/)
6
+ [![GitHub](https://img.shields.io/badge/GitHub-tky0065/springdocs--mcp-blue.svg)](https://github.com/tky0065/springdocs-mcp)
7
+
8
+ Un serveur **Model Context Protocol (MCP)** public qui donne accès à toute la documentation Spring Boot et l'écosystème Spring complet directement dans Claude Desktop.
9
+
10
+ ## 🚀 Installation rapide
11
+
12
+ ```bash
13
+ npm install -g @enokdev/springdocs-mcp
14
+ ```
15
+
16
+ Puis ajoutez à votre `claude_desktop_config.json` :
17
+ ```json
18
+ {
19
+ "mcpServers": {
20
+ "spring-docs": {
21
+ "command": "springdocs-mcp"
22
+ }
23
+ }
24
+ }
25
+ ```
26
+
27
+ ## ✨ Fonctionnalités
28
+
29
+ - 🌐 **Accès complet** à spring.io/projects (tous les projets Spring)
30
+ - 📖 **Guides pratiques** spring.io/guides avec filtrage
31
+ - 📚 **Documentation de référence** docs.spring.io
32
+ - � **Recherche intelligente** dans tout l'écosystème Spring
33
+ - 💡 **Base de connaissances** intégrée des concepts Spring Boot
34
+ - ⚡ **7 outils MCP** pour une exploration complète
35
+
36
+ ## 🛠️ Utilisation
37
+
38
+ ### Démarrage du serveur
39
+
40
+ ```bash
41
+ npm start
42
+ ```
43
+
44
+ ou
45
+
46
+ ```bash
47
+ node build/index.js
48
+ ```
49
+
50
+ ## 🛠️ Outils disponibles
51
+
52
+ Le serveur MCP propose **7 outils** pour explorer la documentation Spring :
53
+
54
+ ### 1. `search_spring_docs`
55
+ Recherche dans la documentation Spring Boot avec des mots-clés.
56
+
57
+ **Paramètres :**
58
+ - `query` (string, requis) : Mots-clés à rechercher
59
+ - `docType` (string, optionnel) : Type de documentation (`guides`, `reference`, `api`, `all`)
60
+ - `limit` (number, optionnel) : Nombre maximum de résultats (défaut: 10)
61
+
62
+ ### 2. `search_spring_projects`
63
+ Recherche parmi tous les projets Spring disponibles sur spring.io/projects.
64
+
65
+ **Paramètres :**
66
+ - `query` (string, requis) : Mots-clés à rechercher dans les projets Spring
67
+ - `limit` (number, optionnel) : Nombre maximum de projets à retourner (défaut: 10)
68
+
69
+ ### 3. `get_spring_project`
70
+ Récupère les détails complets d'un projet Spring spécifique.
71
+
72
+ **Paramètres :**
73
+ - `projectName` (string, requis) : Nom du projet Spring (ex: `spring-boot`, `spring-security`)
74
+
75
+ ### 4. `get_all_spring_guides`
76
+ Récupère la liste de tous les guides Spring disponibles, optionnellement filtrés par catégorie.
77
+
78
+ **Paramètres :**
79
+ - `category` (string, optionnel) : Catégorie de guides à filtrer
80
+ - `limit` (number, optionnel) : Nombre maximum de guides (défaut: 20)
81
+
82
+ ### 5. `get_spring_guide`
83
+ Récupère le contenu complet d'un guide Spring Boot spécifique.
84
+
85
+ **Paramètres :**
86
+ - `guideId` (string, requis) : Identifiant du guide (ex: `gs-rest-service`)
87
+
88
+ ### 6. `get_spring_reference`
89
+ Récupère une section spécifique de la documentation de référence Spring Boot.
90
+
91
+ **Paramètres :**
92
+ - `section` (string, requis) : Section de la documentation (ex: `web`, `data`, `security`)
93
+ - `subsection` (string, optionnel) : Sous-section pour une recherche plus précise
94
+
95
+ ### 7. `search_spring_concepts`
96
+ Recherche des concepts Spring Boot par catégorie avec explications détaillées.
97
+
98
+ **Paramètres :**
99
+ - `concept` (string, requis) : Concept à rechercher (ex: `auto-configuration`)
100
+ - `category` (string, optionnel) : Catégorie (`core`, `web`, `data`, `security`, `testing`, `production`)
101
+
102
+ ## � Sources de documentation
103
+
104
+ Ce serveur MCP accède aux sources de documentation Spring suivantes :
105
+
106
+ - **🌟 [spring.io/projects](https://spring.io/projects)** - Tous les projets Spring (Boot, Security, Data, Cloud, etc.)
107
+ - **📖 [spring.io/guides](https://spring.io/guides)** - Guides pratiques et tutoriels
108
+ - **📚 [docs.spring.io](https://docs.spring.io)** - Documentation de référence officielle
109
+ - **🔧 API Documentation** - Documentation des classes et méthodes
110
+ - **💡 Base de connaissances intégrée** - Concepts et bonnes pratiques Spring Boot
111
+
112
+ ## �🔧 Configuration avec Claude Desktop
113
+
114
+ Pour utiliser ce serveur avec Claude Desktop, ajoutez la configuration suivante dans votre fichier `claude_desktop_config.json` :
115
+
116
+ ```json
117
+ {
118
+ "mcpServers": {
119
+ "springboot-docs": {
120
+ "command": "node",
121
+ "args": ["/chemin/absolu/vers/springdocsmcp/build/index.js"]
122
+ }
123
+ }
124
+ }
125
+ ```
126
+
127
+ ### Localisation du fichier de configuration
128
+
129
+ - **macOS** : `~/Library/Application Support/Claude/claude_desktop_config.json`
130
+ - **Windows** : `%APPDATA%\\Claude\\claude_desktop_config.json`
131
+
132
+ ## 📚 Exemples d'utilisation
133
+
134
+ ### Recherche générale
135
+ ```
136
+ Recherche "REST API" dans la documentation Spring Boot
137
+ ```
138
+
139
+ ### Recherche de projets Spring
140
+ ```
141
+ Trouve des projets Spring liés à "security"
142
+ ```
143
+
144
+ ### Détails d'un projet spécifique
145
+ ```
146
+ Montre-moi les détails du projet "spring-boot"
147
+ ```
148
+
149
+ ### Liste des guides par catégorie
150
+ ```
151
+ Quels sont les guides Spring pour la catégorie "Web" ?
152
+ ```
153
+
154
+ ### Récupération d'un guide spécifique
155
+ ```
156
+ Récupère le guide "gs-rest-service"
157
+ ```
158
+
159
+ ### Exploration des concepts
160
+ ```
161
+ Explique le concept "auto-configuration" dans Spring Boot
162
+ ```
163
+
164
+ ## 🏗️ Architecture
165
+
166
+ Le projet est organisé comme suit :
167
+
168
+ ```
169
+ src/
170
+ ├── index.ts # Point d'entrée principal
171
+ ├── services/
172
+ │ └── springboot-docs.ts # Service de récupération de documentation
173
+ └── tools/
174
+ └── index.ts # Définitions des outils MCP
175
+ ```
176
+
177
+ ### Composants principaux
178
+
179
+ - **SpringBootMCPServer** : Serveur MCP principal qui gère les requêtes
180
+ - **SpringBootDocsService** : Service pour récupérer et traiter la documentation
181
+ - **ToolDefinitions** : Définitions des outils exposés via MCP
182
+
183
+ ## 🔒 Sécurité
184
+
185
+ - Le serveur accède uniquement aux ressources publiques de `docs.spring.io`
186
+ - Aucune donnée sensible n'est stockée ou transmise
187
+ - Toutes les requêtes HTTP sont en lecture seule
188
+
189
+ ## 🐛 Dépannage
190
+
191
+ ### Erreurs courantes
192
+
193
+ 1. **"Cannot find module"** : Vérifiez que `npm install` a été exécuté
194
+ 2. **"Serveur non démarré"** : Vérifiez que la compilation avec `npm run build` s'est bien passée
195
+ 3. **"Documentation non trouvée"** : Vérifiez votre connexion internet
196
+
197
+ ### Logs
198
+
199
+ Le serveur écrit ses logs sur `stderr` pour éviter d'interférer avec le protocole MCP sur `stdout`.
200
+
201
+ ## 🤝 Contribution
202
+
203
+ Les contributions sont les bienvenues ! N'hésitez pas à :
204
+
205
+ 1. Forker le projet
206
+ 2. Créer une branche pour votre fonctionnalité
207
+ 3. Commiter vos changements
208
+ 4. Pousser vers la branche
209
+ 5. Ouvrir une Pull Request
210
+
211
+ ## 📄 Licence
212
+
213
+ Ce projet est sous licence MIT. Voir le fichier `LICENSE` pour plus de détails.
214
+
215
+ ## 🔗 Ressources utiles
216
+
217
+ - [Documentation Spring Boot](https://docs.spring.io/spring-boot/docs/current/reference/html/)
218
+ - [Model Context Protocol](https://modelcontextprotocol.io/)
219
+ - [SDK MCP TypeScript](https://github.com/modelcontextprotocol/typescript-sdk)
@@ -0,0 +1,108 @@
1
+ # 🎯 Publication rapide - Instructions pour EnokDev
2
+
3
+ ## ✅ Tout est prêt !
4
+
5
+ Votre serveur MCP Spring Documentation est configuré et prêt pour la publication publique avec vos informations :
6
+
7
+ - **npm**: `@enokdev/springdocs-mcp`
8
+ - **GitHub**: `tky0065/springdocs-mcp`
9
+ - **Commande**: `springdocs-mcp`
10
+
11
+ ## 🚀 Publication en 3 étapes
12
+
13
+ ### 1. Créer le repository GitHub
14
+
15
+ ```bash
16
+ # Aller sur GitHub et créer un nouveau repository public:
17
+ # Nom: springdocs-mcp
18
+ # Description: Spring Documentation MCP Server for Claude Desktop - Access the complete Spring ecosystem in Claude
19
+ ```
20
+
21
+ ### 2. Connecter et publier
22
+
23
+ ```bash
24
+ # Dans votre terminal
25
+ cd /Users/yacoubakone/Documents/dev/springdocsmcp
26
+
27
+ # Script automatique de publication
28
+ ./publish.sh
29
+ ```
30
+
31
+ **Ou manuellement :**
32
+
33
+ ```bash
34
+ # Connecter le repository
35
+ git remote add origin https://github.com/tky0065/springdocs-mcp.git
36
+ git add .
37
+ git commit -m "Initial release v1.1.0"
38
+ git push -u origin main
39
+
40
+ # Se connecter à npm
41
+ npm login # avec votre compte enokdev
42
+
43
+ # Publier
44
+ npm publish --access public
45
+ ```
46
+
47
+ ### 3. Créer une release
48
+
49
+ ```bash
50
+ git tag v1.1.0
51
+ git push origin v1.1.0
52
+ ```
53
+
54
+ ## 📦 Après publication
55
+
56
+ ### Les utilisateurs pourront installer avec :
57
+
58
+ ```bash
59
+ npm install -g @enokdev/springdocs-mcp
60
+ ```
61
+
62
+ ### Configuration Claude Desktop :
63
+
64
+ ```json
65
+ {
66
+ "mcpServers": {
67
+ "spring-docs": {
68
+ "command": "springdocs-mcp"
69
+ }
70
+ }
71
+ }
72
+ ```
73
+
74
+ ## 🌟 Liens de votre package
75
+
76
+ - **npm package**: https://www.npmjs.com/package/@enokdev/springdocs-mcp
77
+ - **GitHub repo**: https://github.com/tky0065/springdocs-mcp
78
+ - **Documentation**: https://tky0065.github.io/springdocs-mcp (après publication)
79
+ - **Stats**: https://npm-stat.com/charts.html?package=@enokdev/springdocs-mcp
80
+
81
+ ## 📱 Message de lancement suggéré
82
+
83
+ ```
84
+ 🚀 Nouveau: @enokdev/springdocs-mcp
85
+
86
+ Un serveur MCP qui donne accès à TOUTE la documentation Spring directement dans Claude Desktop !
87
+
88
+ ✨ 7 outils MCP
89
+ 📚 Spring Boot + Security + Data + Cloud + tous les projets
90
+ 🔍 Recherche intelligente
91
+ ⚡ Installation: npm install -g @enokdev/springdocs-mcp
92
+
93
+ Perfect pour les développeurs Spring utilisant Claude !
94
+
95
+ #SpringBoot #Claude #MCP #OpenSource
96
+ ```
97
+
98
+ ## 🔧 Maintenance
99
+
100
+ Pour publier des mises à jour :
101
+
102
+ ```bash
103
+ ./publish.sh # Script automatique
104
+ ```
105
+
106
+ ---
107
+
108
+ **🎉 Votre outil va aider toute la communauté des développeurs Spring !**
@@ -0,0 +1,106 @@
1
+ # 🎉 Spring Boot MCP Server v1.1.0 - Mise à jour majeure
2
+
3
+ ## 🚀 Améliorations apportées
4
+
5
+ Votre serveur MCP Spring Boot Documentation a été considérablement amélioré ! Voici ce qui a été ajouté :
6
+
7
+ ### ✨ Nouvelles fonctionnalités principales
8
+
9
+ #### 1. **Support complet de l'écosystème Spring**
10
+ - ✅ Accès à **spring.io/projects** - Tous les projets Spring (Security, Data, Cloud, etc.)
11
+ - ✅ Extension de **spring.io/guides** - Catalogue complet des guides
12
+ - ✅ Intégration enrichie avec la documentation officielle
13
+
14
+ #### 2. **3 nouveaux outils MCP** (Total : 7 outils)
15
+ - 🆕 **`search_spring_projects`** - Recherche parmi tous les projets Spring
16
+ - 🆕 **`get_spring_project`** - Détails complets d'un projet Spring
17
+ - 🆕 **`get_all_spring_guides`** - Liste de tous les guides avec filtrage
18
+
19
+ #### 3. **Base de connaissances étendue**
20
+ - 📚 Projets Spring populaires intégrés (fallback robuste)
21
+ - 🔍 Guides Spring organisés par catégories
22
+ - 🎯 Recherche intelligente avec mécanismes de secours
23
+
24
+ ## 🛠️ Outils disponibles (7 au total)
25
+
26
+ | Outil | Description | Nouveau |
27
+ |-------|-------------|---------|
28
+ | `search_spring_docs` | Recherche dans la documentation Spring Boot | ⭐ |
29
+ | `search_spring_projects` | **Recherche de projets Spring** | 🆕 |
30
+ | `get_spring_project` | **Détails d'un projet Spring** | 🆕 |
31
+ | `get_all_spring_guides` | **Liste des guides Spring** | 🆕 |
32
+ | `get_spring_guide` | Contenu d'un guide spécifique | ⭐ |
33
+ | `get_spring_reference` | Documentation de référence | ⭐ |
34
+ | `search_spring_concepts` | Recherche de concepts Spring Boot | ⭐ |
35
+
36
+ ## 📋 Tests rapides
37
+
38
+ Testez les nouvelles fonctionnalités avec ces exemples :
39
+
40
+ ```bash
41
+ # Test des nouveaux outils
42
+ ./test.sh
43
+
44
+ # Ou individuellement :
45
+ echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"name": "search_spring_projects", "arguments": {"query": "security"}}}' | node build/index.js
46
+ ```
47
+
48
+ ## 🔧 Configuration Claude Desktop
49
+
50
+ Votre configuration reste la même dans `claude_desktop_config.json` :
51
+
52
+ ```json
53
+ {
54
+ "mcpServers": {
55
+ "springboot-docs": {
56
+ "command": "node",
57
+ "args": ["/Users/yacoubakone/Documents/dev/springdocsmcp/build/index.js"]
58
+ }
59
+ }
60
+ }
61
+ ```
62
+
63
+ ## 📚 Documentation mise à jour
64
+
65
+ - ✅ **README.md** - Documentation principale mise à jour
66
+ - ✅ **EXAMPLES.md** - Guide d'exemples pratiques
67
+ - ✅ **CONTRIBUTING.md** - Guide pour les développeurs
68
+ - ✅ **CHANGELOG.md** - Historique des versions
69
+ - ✅ **test.sh** - Script de test étendu
70
+
71
+ ## 🌟 Exemples d'utilisation avec Claude
72
+
73
+ Maintenant vous pouvez demander à Claude :
74
+
75
+ ### Découverte de projets
76
+ > "Quels sont les projets Spring disponibles pour la sécurité ?"
77
+
78
+ ### Exploration de l'écosystème
79
+ > "Montre-moi tous les projets Spring liés aux données"
80
+
81
+ ### Guides spécialisés
82
+ > "Quels sont les guides Spring Boot pour le développement web ?"
83
+
84
+ ### Détails de projets
85
+ > "Peux-tu m'expliquer le projet Spring Cloud ?"
86
+
87
+ ## 🎯 Couverture documentaire
88
+
89
+ Votre serveur MCP accède maintenant à :
90
+
91
+ - 🌐 **Tous les projets Spring** (Boot, Security, Data, Cloud, Integration, etc.)
92
+ - 📖 **Guides complets** avec filtrage par catégorie
93
+ - 📚 **Documentation de référence** Spring Boot
94
+ - 🔧 **API Documentation**
95
+ - 💡 **Base de connaissances** enrichie
96
+
97
+ ## ✅ État du projet
98
+
99
+ - ✅ **Compilation réussie** (version 1.1.0)
100
+ - ✅ **Tests passés** (7 outils fonctionnels)
101
+ - ✅ **Documentation complète**
102
+ - ✅ **Prêt pour la production**
103
+
104
+ ---
105
+
106
+ 🎉 **Votre serveur MCP Spring Boot Documentation est maintenant un outil complet pour explorer tout l'écosystème Spring !**
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/build/index.js ADDED
@@ -0,0 +1,232 @@
1
+ #!/usr/bin/env node
2
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
3
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
4
+ import { CallToolRequestSchema, ListToolsRequestSchema } from "@modelcontextprotocol/sdk/types.js";
5
+ import { SpringBootDocsService } from "./services/springboot-docs.js";
6
+ import { ToolDefinitions } from "./tools/index.js";
7
+ /**
8
+ * Serveur MCP pour accéder à la documentation Spring Boot
9
+ */
10
+ class SpringBootMCPServer {
11
+ server;
12
+ docsService;
13
+ constructor() {
14
+ this.server = new Server({
15
+ name: "springboot-mcp-server",
16
+ version: "1.1.0",
17
+ }, {
18
+ capabilities: {
19
+ tools: {},
20
+ },
21
+ });
22
+ this.docsService = new SpringBootDocsService();
23
+ this.setupToolHandlers();
24
+ }
25
+ setupToolHandlers() {
26
+ // Gestionnaire pour lister les outils disponibles
27
+ this.server.setRequestHandler(ListToolsRequestSchema, async (request) => {
28
+ return {
29
+ tools: ToolDefinitions.getToolList(),
30
+ };
31
+ });
32
+ // Gestionnaire pour exécuter un outil
33
+ this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
34
+ const { name, arguments: args } = request.params;
35
+ try {
36
+ switch (name) {
37
+ case "search_spring_docs":
38
+ return await this.handleSearchDocs(args);
39
+ case "search_spring_projects":
40
+ return await this.handleSearchProjects(args);
41
+ case "get_spring_project":
42
+ return await this.handleGetProject(args);
43
+ case "get_all_spring_guides":
44
+ return await this.handleGetAllGuides(args);
45
+ case "get_spring_guide":
46
+ return await this.handleGetGuide(args);
47
+ case "get_spring_reference":
48
+ return await this.handleGetReference(args);
49
+ case "search_spring_concepts":
50
+ return await this.handleSearchConcepts(args);
51
+ default:
52
+ throw new Error(`Outil inconnu: ${name}`);
53
+ }
54
+ }
55
+ catch (error) {
56
+ const errorMessage = error instanceof Error ? error.message : "Erreur inconnue";
57
+ return {
58
+ content: [
59
+ {
60
+ type: "text",
61
+ text: `Erreur lors de l'exécution de l'outil ${name}: ${errorMessage}`,
62
+ },
63
+ ],
64
+ isError: true,
65
+ };
66
+ }
67
+ });
68
+ }
69
+ async handleSearchProjects(args) {
70
+ const { query, limit = 10 } = args;
71
+ if (!query || typeof query !== "string") {
72
+ throw new Error("Le paramètre 'query' est requis et doit être une chaîne de caractères");
73
+ }
74
+ const results = await this.docsService.searchSpringProjects(query, limit);
75
+ return {
76
+ content: [
77
+ {
78
+ type: "text",
79
+ text: `Projets Spring trouvés pour "${query}":\n\n${this.formatSearchResults(results)}`,
80
+ },
81
+ ],
82
+ };
83
+ }
84
+ async handleGetProject(args) {
85
+ const { projectName } = args;
86
+ if (!projectName || typeof projectName !== "string") {
87
+ throw new Error("Le paramètre 'projectName' est requis et doit être une chaîne de caractères");
88
+ }
89
+ const project = await this.docsService.getSpringProject(projectName);
90
+ return {
91
+ content: [
92
+ {
93
+ type: "text",
94
+ text: project,
95
+ },
96
+ ],
97
+ };
98
+ }
99
+ async handleGetAllGuides(args) {
100
+ const { category, limit = 20 } = args;
101
+ const results = await this.docsService.getAllSpringGuides(category, limit);
102
+ return {
103
+ content: [
104
+ {
105
+ type: "text",
106
+ text: `Guides Spring disponibles${category ? ` dans la catégorie "${category}"` : ""}:\n\n${this.formatSearchResults(results)}`,
107
+ },
108
+ ],
109
+ };
110
+ }
111
+ async handleSearchDocs(args) {
112
+ const { query, docType = "all", limit = 10 } = args;
113
+ if (!query || typeof query !== "string") {
114
+ throw new Error("Le paramètre 'query' est requis et doit être une chaîne de caractères");
115
+ }
116
+ const results = await this.docsService.searchDocumentation(query, docType, limit);
117
+ return {
118
+ content: [
119
+ {
120
+ type: "text",
121
+ text: `Résultats de recherche pour "${query}":\n\n${this.formatSearchResults(results)}`,
122
+ },
123
+ ],
124
+ };
125
+ }
126
+ async handleGetGuide(args) {
127
+ const { guideId } = args;
128
+ if (!guideId || typeof guideId !== "string") {
129
+ throw new Error("Le paramètre 'guideId' est requis et doit être une chaîne de caractères");
130
+ }
131
+ const guide = await this.docsService.getGuide(guideId);
132
+ return {
133
+ content: [
134
+ {
135
+ type: "text",
136
+ text: guide,
137
+ },
138
+ ],
139
+ };
140
+ }
141
+ async handleGetReference(args) {
142
+ const { section, subsection } = args;
143
+ if (!section || typeof section !== "string") {
144
+ throw new Error("Le paramètre 'section' est requis et doit être une chaîne de caractères");
145
+ }
146
+ const reference = await this.docsService.getReference(section, subsection);
147
+ return {
148
+ content: [
149
+ {
150
+ type: "text",
151
+ text: reference,
152
+ },
153
+ ],
154
+ };
155
+ }
156
+ async handleSearchConcepts(args) {
157
+ const { concept, category } = args;
158
+ if (!concept || typeof concept !== "string") {
159
+ throw new Error("Le paramètre 'concept' est requis et doit être une chaîne de caractères");
160
+ }
161
+ const results = await this.docsService.searchConcepts(concept, category);
162
+ return {
163
+ content: [
164
+ {
165
+ type: "text",
166
+ text: this.formatConceptResults(results),
167
+ },
168
+ ],
169
+ };
170
+ }
171
+ formatSearchResults(results) {
172
+ if (results.length === 0) {
173
+ return "Aucun résultat trouvé.";
174
+ }
175
+ return results
176
+ .map((result, index) => {
177
+ return `${index + 1}. **${result.title}**
178
+ Type: ${result.type}
179
+ URL: ${result.url}
180
+ Description: ${result.description || "Aucune description disponible"}
181
+
182
+ `;
183
+ })
184
+ .join("\n");
185
+ }
186
+ formatConceptResults(results) {
187
+ if (!results || Object.keys(results).length === 0) {
188
+ return "Aucun concept trouvé.";
189
+ }
190
+ let formatted = `# Concepts Spring Boot\n\n`;
191
+ for (const [category, concepts] of Object.entries(results)) {
192
+ formatted += `## ${category}\n\n`;
193
+ if (Array.isArray(concepts)) {
194
+ concepts.forEach((concept) => {
195
+ formatted += `- **${concept.name}**: ${concept.description}\n`;
196
+ if (concept.examples && concept.examples.length > 0) {
197
+ formatted += ` Exemples: ${concept.examples.join(", ")}\n`;
198
+ }
199
+ });
200
+ }
201
+ formatted += "\n";
202
+ }
203
+ return formatted;
204
+ }
205
+ async run() {
206
+ const transport = new StdioServerTransport();
207
+ await this.server.connect(transport);
208
+ console.error("Serveur MCP Spring Boot démarré sur stdio");
209
+ }
210
+ }
211
+ // Point d'entrée principal
212
+ async function main() {
213
+ const server = new SpringBootMCPServer();
214
+ await server.run();
215
+ }
216
+ // Gestion des erreurs
217
+ process.on("SIGINT", async () => {
218
+ console.error("Arrêt du serveur...");
219
+ process.exit(0);
220
+ });
221
+ process.on("unhandledRejection", (reason, promise) => {
222
+ console.error("Rejet de promesse non géré:", reason);
223
+ process.exit(1);
224
+ });
225
+ // Démarrage du serveur
226
+ if (import.meta.url === `file://${process.argv[1]}`) {
227
+ main().catch((error) => {
228
+ console.error("Erreur fatale:", error);
229
+ process.exit(1);
230
+ });
231
+ }
232
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}