@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.
@@ -0,0 +1,144 @@
1
+ /**
2
+ * Définitions des outils MCP pour l'accès à la documentation Spring Boot
3
+ */
4
+
5
+ export class ToolDefinitions {
6
+ static getToolList() {
7
+ return [
8
+ {
9
+ name: "search_spring_docs",
10
+ description: "Recherche dans la documentation Spring Boot avec des mots-clés",
11
+ inputSchema: {
12
+ type: "object",
13
+ properties: {
14
+ query: {
15
+ type: "string",
16
+ description: "Les mots-clés à rechercher dans la documentation",
17
+ },
18
+ docType: {
19
+ type: "string",
20
+ enum: ["guides", "reference", "api", "all"],
21
+ description: "Type de documentation à rechercher",
22
+ default: "all",
23
+ },
24
+ limit: {
25
+ type: "number",
26
+ description: "Nombre maximum de résultats à retourner",
27
+ default: 10,
28
+ minimum: 1,
29
+ maximum: 50,
30
+ },
31
+ },
32
+ required: ["query"],
33
+ },
34
+ },
35
+ {
36
+ name: "search_spring_projects",
37
+ description: "Recherche parmi tous les projets Spring disponibles sur spring.io/projects",
38
+ inputSchema: {
39
+ type: "object",
40
+ properties: {
41
+ query: {
42
+ type: "string",
43
+ description: "Les mots-clés à rechercher dans les projets Spring (ex: 'security', 'data', 'cloud')",
44
+ },
45
+ limit: {
46
+ type: "number",
47
+ description: "Nombre maximum de projets à retourner",
48
+ default: 10,
49
+ minimum: 1,
50
+ maximum: 20,
51
+ },
52
+ },
53
+ required: ["query"],
54
+ },
55
+ },
56
+ {
57
+ name: "get_spring_project",
58
+ description: "Récupère les détails complets d'un projet Spring spécifique",
59
+ inputSchema: {
60
+ type: "object",
61
+ properties: {
62
+ projectName: {
63
+ type: "string",
64
+ description: "Le nom du projet Spring (ex: 'spring-boot', 'spring-security', 'spring-data')",
65
+ },
66
+ },
67
+ required: ["projectName"],
68
+ },
69
+ },
70
+ {
71
+ name: "get_all_spring_guides",
72
+ description: "Récupère la liste de tous les guides Spring disponibles, optionnellement filtrés par catégorie",
73
+ inputSchema: {
74
+ type: "object",
75
+ properties: {
76
+ category: {
77
+ type: "string",
78
+ description: "Catégorie de guides à filtrer (ex: 'Web', 'Data', 'Security', 'Testing')",
79
+ },
80
+ limit: {
81
+ type: "number",
82
+ description: "Nombre maximum de guides à retourner",
83
+ default: 20,
84
+ minimum: 1,
85
+ maximum: 50,
86
+ },
87
+ },
88
+ required: [],
89
+ },
90
+ },
91
+ {
92
+ name: "get_spring_guide",
93
+ description: "Récupère le contenu complet d'un guide Spring Boot spécifique",
94
+ inputSchema: {
95
+ type: "object",
96
+ properties: {
97
+ guideId: {
98
+ type: "string",
99
+ description: "L'identifiant du guide Spring Boot (par exemple: 'gs-rest-service', 'gs-accessing-data-jpa')",
100
+ },
101
+ },
102
+ required: ["guideId"],
103
+ },
104
+ },
105
+ {
106
+ name: "get_spring_reference",
107
+ description: "Récupère une section spécifique de la documentation de référence Spring Boot",
108
+ inputSchema: {
109
+ type: "object",
110
+ properties: {
111
+ section: {
112
+ type: "string",
113
+ description: "La section de la documentation de référence (par exemple: 'web', 'data', 'security')",
114
+ },
115
+ subsection: {
116
+ type: "string",
117
+ description: "Sous-section optionnelle pour une recherche plus précise",
118
+ },
119
+ },
120
+ required: ["section"],
121
+ },
122
+ },
123
+ {
124
+ name: "search_spring_concepts",
125
+ description: "Recherche des concepts Spring Boot par catégorie avec des explications détaillées",
126
+ inputSchema: {
127
+ type: "object",
128
+ properties: {
129
+ concept: {
130
+ type: "string",
131
+ description: "Le concept Spring Boot à rechercher (par exemple: 'auto-configuration', 'profiles', 'actuator')",
132
+ },
133
+ category: {
134
+ type: "string",
135
+ enum: ["core", "web", "data", "security", "testing", "production"],
136
+ description: "Catégorie du concept pour filtrer les résultats",
137
+ },
138
+ },
139
+ required: ["concept"],
140
+ },
141
+ },
142
+ ];
143
+ }
144
+ }
package/test.sh ADDED
@@ -0,0 +1,64 @@
1
+ #!/bin/bash
2
+
3
+ # Script de test pour le serveur MCP Spring Boot Documentation
4
+ # Ce script teste les différentes fonctionnalités du serveur
5
+
6
+ echo "🧪 Test du serveur MCP Spring Boot Documentation"
7
+ echo "================================================"
8
+
9
+ # Fonction pour envoyer une requête JSON-RPC et afficher la réponse
10
+ send_request() {
11
+ local request="$1"
12
+ local description="$2"
13
+
14
+ echo -e "\n📝 Test: $description"
15
+ echo "Requête: $request"
16
+ echo "Réponse:"
17
+ echo "$request" | node build/index.js | tail -n 1 | jq '.'
18
+ echo "---"
19
+ }
20
+
21
+ # Vérifier que le serveur est compilé
22
+ if [ ! -f "build/index.js" ]; then
23
+ echo "❌ Le serveur n'est pas compilé. Exécutez 'npm run build' d'abord."
24
+ exit 1
25
+ fi
26
+
27
+ # Vérifier que jq est installé pour formater le JSON
28
+ if ! command -v jq &> /dev/null; then
29
+ echo "⚠️ jq n'est pas installé. Les réponses JSON ne seront pas formatées."
30
+ alias jq="cat"
31
+ fi
32
+
33
+ # Test 1: Initialisation
34
+ send_request '{"jsonrpc": "2.0", "id": 1, "method": "initialize", "params": {"protocolVersion": "2025-06-18", "capabilities": {}, "clientInfo": {"name": "test", "version": "1.0.0"}}}' "Initialisation du serveur"
35
+
36
+ # Test 2: Liste des outils
37
+ send_request '{"jsonrpc": "2.0", "id": 2, "method": "tools/list", "params": {}}' "Liste des outils disponibles"
38
+
39
+ # Test 3: Recherche de documentation
40
+ send_request '{"jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": {"name": "search_spring_docs", "arguments": {"query": "REST API", "limit": 3}}}' "Recherche de documentation REST API"
41
+
42
+ # Test 4: Recherche de projets Spring
43
+ send_request '{"jsonrpc": "2.0", "id": 4, "method": "tools/call", "params": {"name": "search_spring_projects", "arguments": {"query": "security", "limit": 3}}}' "Recherche de projets Spring Security"
44
+
45
+ # Test 5: Détails d'un projet Spring
46
+ send_request '{"jsonrpc": "2.0", "id": 5, "method": "tools/call", "params": {"name": "get_spring_project", "arguments": {"projectName": "spring-boot"}}}' "Détails du projet Spring Boot"
47
+
48
+ # Test 6: Liste des guides Spring
49
+ send_request '{"jsonrpc": "2.0", "id": 6, "method": "tools/call", "params": {"name": "get_all_spring_guides", "arguments": {"category": "Web", "limit": 5}}}' "Guides Spring catégorie Web"
50
+
51
+ # Test 7: Recherche de concepts
52
+ send_request '{"jsonrpc": "2.0", "id": 7, "method": "tools/call", "params": {"name": "search_spring_concepts", "arguments": {"concept": "auto-configuration"}}}' "Recherche du concept auto-configuration"
53
+
54
+ echo -e "\n✅ Tests terminés!"
55
+ echo ""
56
+ echo "Pour utiliser ce serveur avec Claude Desktop, ajoutez ceci à votre claude_desktop_config.json:"
57
+ echo '{'
58
+ echo ' "mcpServers": {'
59
+ echo ' "springboot-docs": {'
60
+ echo ' "command": "node",'
61
+ echo " \"args\": [\"$(pwd)/build/index.js\"]"
62
+ echo ' }'
63
+ echo ' }'
64
+ echo '}'
package/tsconfig.json ADDED
@@ -0,0 +1,24 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2022",
4
+ "module": "Node16",
5
+ "moduleResolution": "Node16",
6
+ "outDir": "./build",
7
+ "rootDir": "./src",
8
+ "strict": true,
9
+ "esModuleInterop": true,
10
+ "skipLibCheck": true,
11
+ "forceConsistentCasingInFileNames": true,
12
+ "resolveJsonModule": true,
13
+ "declaration": true,
14
+ "declarationMap": true,
15
+ "sourceMap": true
16
+ },
17
+ "include": [
18
+ "src/**/*"
19
+ ],
20
+ "exclude": [
21
+ "node_modules",
22
+ "build"
23
+ ]
24
+ }