@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/.github/workflows/publish.yml +64 -0
- package/CHANGELOG.md +82 -0
- package/CONTRIBUTING.md +215 -0
- package/DEPLOYMENT.md +205 -0
- package/EXAMPLES.md +186 -0
- package/INSTALL.md +123 -0
- package/LICENSE +21 -0
- package/PUBLICATION_ENOKDEV.md +170 -0
- package/PUBLISHING.md +196 -0
- package/README.md +219 -0
- package/README_ENOKDEV.md +108 -0
- package/RELEASE_NOTES_v1.1.0.md +106 -0
- package/build/index.d.ts +3 -0
- package/build/index.d.ts.map +1 -0
- package/build/index.js +232 -0
- package/build/index.js.map +1 -0
- package/build/services/springboot-docs.d.ts +65 -0
- package/build/services/springboot-docs.d.ts.map +1 -0
- package/build/services/springboot-docs.js +549 -0
- package/build/services/springboot-docs.js.map +1 -0
- package/build/tools/index.d.ts +185 -0
- package/build/tools/index.d.ts.map +1 -0
- package/build/tools/index.js +144 -0
- package/build/tools/index.js.map +1 -0
- package/claude_desktop_config.json +8 -0
- package/docs/index.html +147 -0
- package/guid.md +92 -0
- package/package.json +58 -0
- package/publish.sh +130 -0
- package/src/index.ts +287 -0
- package/src/services/springboot-docs.ts +615 -0
- package/src/tools/index.ts +144 -0
- package/test.sh +64 -0
- package/tsconfig.json +24 -0
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Définitions des outils MCP pour l'accès à la documentation Spring Boot
|
|
3
|
+
*/
|
|
4
|
+
export declare class ToolDefinitions {
|
|
5
|
+
static getToolList(): ({
|
|
6
|
+
name: string;
|
|
7
|
+
description: string;
|
|
8
|
+
inputSchema: {
|
|
9
|
+
type: string;
|
|
10
|
+
properties: {
|
|
11
|
+
query: {
|
|
12
|
+
type: string;
|
|
13
|
+
description: string;
|
|
14
|
+
};
|
|
15
|
+
docType: {
|
|
16
|
+
type: string;
|
|
17
|
+
enum: string[];
|
|
18
|
+
description: string;
|
|
19
|
+
default: string;
|
|
20
|
+
};
|
|
21
|
+
limit: {
|
|
22
|
+
type: string;
|
|
23
|
+
description: string;
|
|
24
|
+
default: number;
|
|
25
|
+
minimum: number;
|
|
26
|
+
maximum: number;
|
|
27
|
+
};
|
|
28
|
+
projectName?: undefined;
|
|
29
|
+
category?: undefined;
|
|
30
|
+
guideId?: undefined;
|
|
31
|
+
section?: undefined;
|
|
32
|
+
subsection?: undefined;
|
|
33
|
+
concept?: undefined;
|
|
34
|
+
};
|
|
35
|
+
required: string[];
|
|
36
|
+
};
|
|
37
|
+
} | {
|
|
38
|
+
name: string;
|
|
39
|
+
description: string;
|
|
40
|
+
inputSchema: {
|
|
41
|
+
type: string;
|
|
42
|
+
properties: {
|
|
43
|
+
query: {
|
|
44
|
+
type: string;
|
|
45
|
+
description: string;
|
|
46
|
+
};
|
|
47
|
+
limit: {
|
|
48
|
+
type: string;
|
|
49
|
+
description: string;
|
|
50
|
+
default: number;
|
|
51
|
+
minimum: number;
|
|
52
|
+
maximum: number;
|
|
53
|
+
};
|
|
54
|
+
docType?: undefined;
|
|
55
|
+
projectName?: undefined;
|
|
56
|
+
category?: undefined;
|
|
57
|
+
guideId?: undefined;
|
|
58
|
+
section?: undefined;
|
|
59
|
+
subsection?: undefined;
|
|
60
|
+
concept?: undefined;
|
|
61
|
+
};
|
|
62
|
+
required: string[];
|
|
63
|
+
};
|
|
64
|
+
} | {
|
|
65
|
+
name: string;
|
|
66
|
+
description: string;
|
|
67
|
+
inputSchema: {
|
|
68
|
+
type: string;
|
|
69
|
+
properties: {
|
|
70
|
+
projectName: {
|
|
71
|
+
type: string;
|
|
72
|
+
description: string;
|
|
73
|
+
};
|
|
74
|
+
query?: undefined;
|
|
75
|
+
docType?: undefined;
|
|
76
|
+
limit?: undefined;
|
|
77
|
+
category?: undefined;
|
|
78
|
+
guideId?: undefined;
|
|
79
|
+
section?: undefined;
|
|
80
|
+
subsection?: undefined;
|
|
81
|
+
concept?: undefined;
|
|
82
|
+
};
|
|
83
|
+
required: string[];
|
|
84
|
+
};
|
|
85
|
+
} | {
|
|
86
|
+
name: string;
|
|
87
|
+
description: string;
|
|
88
|
+
inputSchema: {
|
|
89
|
+
type: string;
|
|
90
|
+
properties: {
|
|
91
|
+
category: {
|
|
92
|
+
type: string;
|
|
93
|
+
description: string;
|
|
94
|
+
enum?: undefined;
|
|
95
|
+
};
|
|
96
|
+
limit: {
|
|
97
|
+
type: string;
|
|
98
|
+
description: string;
|
|
99
|
+
default: number;
|
|
100
|
+
minimum: number;
|
|
101
|
+
maximum: number;
|
|
102
|
+
};
|
|
103
|
+
query?: undefined;
|
|
104
|
+
docType?: undefined;
|
|
105
|
+
projectName?: undefined;
|
|
106
|
+
guideId?: undefined;
|
|
107
|
+
section?: undefined;
|
|
108
|
+
subsection?: undefined;
|
|
109
|
+
concept?: undefined;
|
|
110
|
+
};
|
|
111
|
+
required: never[];
|
|
112
|
+
};
|
|
113
|
+
} | {
|
|
114
|
+
name: string;
|
|
115
|
+
description: string;
|
|
116
|
+
inputSchema: {
|
|
117
|
+
type: string;
|
|
118
|
+
properties: {
|
|
119
|
+
guideId: {
|
|
120
|
+
type: string;
|
|
121
|
+
description: string;
|
|
122
|
+
};
|
|
123
|
+
query?: undefined;
|
|
124
|
+
docType?: undefined;
|
|
125
|
+
limit?: undefined;
|
|
126
|
+
projectName?: undefined;
|
|
127
|
+
category?: undefined;
|
|
128
|
+
section?: undefined;
|
|
129
|
+
subsection?: undefined;
|
|
130
|
+
concept?: undefined;
|
|
131
|
+
};
|
|
132
|
+
required: string[];
|
|
133
|
+
};
|
|
134
|
+
} | {
|
|
135
|
+
name: string;
|
|
136
|
+
description: string;
|
|
137
|
+
inputSchema: {
|
|
138
|
+
type: string;
|
|
139
|
+
properties: {
|
|
140
|
+
section: {
|
|
141
|
+
type: string;
|
|
142
|
+
description: string;
|
|
143
|
+
};
|
|
144
|
+
subsection: {
|
|
145
|
+
type: string;
|
|
146
|
+
description: string;
|
|
147
|
+
};
|
|
148
|
+
query?: undefined;
|
|
149
|
+
docType?: undefined;
|
|
150
|
+
limit?: undefined;
|
|
151
|
+
projectName?: undefined;
|
|
152
|
+
category?: undefined;
|
|
153
|
+
guideId?: undefined;
|
|
154
|
+
concept?: undefined;
|
|
155
|
+
};
|
|
156
|
+
required: string[];
|
|
157
|
+
};
|
|
158
|
+
} | {
|
|
159
|
+
name: string;
|
|
160
|
+
description: string;
|
|
161
|
+
inputSchema: {
|
|
162
|
+
type: string;
|
|
163
|
+
properties: {
|
|
164
|
+
concept: {
|
|
165
|
+
type: string;
|
|
166
|
+
description: string;
|
|
167
|
+
};
|
|
168
|
+
category: {
|
|
169
|
+
type: string;
|
|
170
|
+
enum: string[];
|
|
171
|
+
description: string;
|
|
172
|
+
};
|
|
173
|
+
query?: undefined;
|
|
174
|
+
docType?: undefined;
|
|
175
|
+
limit?: undefined;
|
|
176
|
+
projectName?: undefined;
|
|
177
|
+
guideId?: undefined;
|
|
178
|
+
section?: undefined;
|
|
179
|
+
subsection?: undefined;
|
|
180
|
+
};
|
|
181
|
+
required: string[];
|
|
182
|
+
};
|
|
183
|
+
})[];
|
|
184
|
+
}
|
|
185
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,qBAAa,eAAe;IAC1B,MAAM,CAAC,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0InB"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Définitions des outils MCP pour l'accès à la documentation Spring Boot
|
|
3
|
+
*/
|
|
4
|
+
export class ToolDefinitions {
|
|
5
|
+
static getToolList() {
|
|
6
|
+
return [
|
|
7
|
+
{
|
|
8
|
+
name: "search_spring_docs",
|
|
9
|
+
description: "Recherche dans la documentation Spring Boot avec des mots-clés",
|
|
10
|
+
inputSchema: {
|
|
11
|
+
type: "object",
|
|
12
|
+
properties: {
|
|
13
|
+
query: {
|
|
14
|
+
type: "string",
|
|
15
|
+
description: "Les mots-clés à rechercher dans la documentation",
|
|
16
|
+
},
|
|
17
|
+
docType: {
|
|
18
|
+
type: "string",
|
|
19
|
+
enum: ["guides", "reference", "api", "all"],
|
|
20
|
+
description: "Type de documentation à rechercher",
|
|
21
|
+
default: "all",
|
|
22
|
+
},
|
|
23
|
+
limit: {
|
|
24
|
+
type: "number",
|
|
25
|
+
description: "Nombre maximum de résultats à retourner",
|
|
26
|
+
default: 10,
|
|
27
|
+
minimum: 1,
|
|
28
|
+
maximum: 50,
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
required: ["query"],
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
name: "search_spring_projects",
|
|
36
|
+
description: "Recherche parmi tous les projets Spring disponibles sur spring.io/projects",
|
|
37
|
+
inputSchema: {
|
|
38
|
+
type: "object",
|
|
39
|
+
properties: {
|
|
40
|
+
query: {
|
|
41
|
+
type: "string",
|
|
42
|
+
description: "Les mots-clés à rechercher dans les projets Spring (ex: 'security', 'data', 'cloud')",
|
|
43
|
+
},
|
|
44
|
+
limit: {
|
|
45
|
+
type: "number",
|
|
46
|
+
description: "Nombre maximum de projets à retourner",
|
|
47
|
+
default: 10,
|
|
48
|
+
minimum: 1,
|
|
49
|
+
maximum: 20,
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
required: ["query"],
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
name: "get_spring_project",
|
|
57
|
+
description: "Récupère les détails complets d'un projet Spring spécifique",
|
|
58
|
+
inputSchema: {
|
|
59
|
+
type: "object",
|
|
60
|
+
properties: {
|
|
61
|
+
projectName: {
|
|
62
|
+
type: "string",
|
|
63
|
+
description: "Le nom du projet Spring (ex: 'spring-boot', 'spring-security', 'spring-data')",
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
required: ["projectName"],
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
name: "get_all_spring_guides",
|
|
71
|
+
description: "Récupère la liste de tous les guides Spring disponibles, optionnellement filtrés par catégorie",
|
|
72
|
+
inputSchema: {
|
|
73
|
+
type: "object",
|
|
74
|
+
properties: {
|
|
75
|
+
category: {
|
|
76
|
+
type: "string",
|
|
77
|
+
description: "Catégorie de guides à filtrer (ex: 'Web', 'Data', 'Security', 'Testing')",
|
|
78
|
+
},
|
|
79
|
+
limit: {
|
|
80
|
+
type: "number",
|
|
81
|
+
description: "Nombre maximum de guides à retourner",
|
|
82
|
+
default: 20,
|
|
83
|
+
minimum: 1,
|
|
84
|
+
maximum: 50,
|
|
85
|
+
},
|
|
86
|
+
},
|
|
87
|
+
required: [],
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
name: "get_spring_guide",
|
|
92
|
+
description: "Récupère le contenu complet d'un guide Spring Boot spécifique",
|
|
93
|
+
inputSchema: {
|
|
94
|
+
type: "object",
|
|
95
|
+
properties: {
|
|
96
|
+
guideId: {
|
|
97
|
+
type: "string",
|
|
98
|
+
description: "L'identifiant du guide Spring Boot (par exemple: 'gs-rest-service', 'gs-accessing-data-jpa')",
|
|
99
|
+
},
|
|
100
|
+
},
|
|
101
|
+
required: ["guideId"],
|
|
102
|
+
},
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
name: "get_spring_reference",
|
|
106
|
+
description: "Récupère une section spécifique de la documentation de référence Spring Boot",
|
|
107
|
+
inputSchema: {
|
|
108
|
+
type: "object",
|
|
109
|
+
properties: {
|
|
110
|
+
section: {
|
|
111
|
+
type: "string",
|
|
112
|
+
description: "La section de la documentation de référence (par exemple: 'web', 'data', 'security')",
|
|
113
|
+
},
|
|
114
|
+
subsection: {
|
|
115
|
+
type: "string",
|
|
116
|
+
description: "Sous-section optionnelle pour une recherche plus précise",
|
|
117
|
+
},
|
|
118
|
+
},
|
|
119
|
+
required: ["section"],
|
|
120
|
+
},
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
name: "search_spring_concepts",
|
|
124
|
+
description: "Recherche des concepts Spring Boot par catégorie avec des explications détaillées",
|
|
125
|
+
inputSchema: {
|
|
126
|
+
type: "object",
|
|
127
|
+
properties: {
|
|
128
|
+
concept: {
|
|
129
|
+
type: "string",
|
|
130
|
+
description: "Le concept Spring Boot à rechercher (par exemple: 'auto-configuration', 'profiles', 'actuator')",
|
|
131
|
+
},
|
|
132
|
+
category: {
|
|
133
|
+
type: "string",
|
|
134
|
+
enum: ["core", "web", "data", "security", "testing", "production"],
|
|
135
|
+
description: "Catégorie du concept pour filtrer les résultats",
|
|
136
|
+
},
|
|
137
|
+
},
|
|
138
|
+
required: ["concept"],
|
|
139
|
+
},
|
|
140
|
+
},
|
|
141
|
+
];
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
|
package/docs/index.html
ADDED
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>Spring Documentation MCP Server</title>
|
|
7
|
+
<style>
|
|
8
|
+
* { margin: 0; padding: 0; box-sizing: border-box; }
|
|
9
|
+
body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; line-height: 1.6; color: #333; }
|
|
10
|
+
.container { max-width: 1200px; margin: 0 auto; padding: 0 20px; }
|
|
11
|
+
header { background: linear-gradient(135deg, #6fa8dc, #4285f4); color: white; padding: 60px 0; text-align: center; }
|
|
12
|
+
h1 { font-size: 3rem; margin-bottom: 20px; }
|
|
13
|
+
.subtitle { font-size: 1.5rem; opacity: 0.9; }
|
|
14
|
+
.hero { padding: 80px 0; text-align: center; background: #f8f9fa; }
|
|
15
|
+
.feature-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 30px; margin: 60px 0; }
|
|
16
|
+
.feature { background: white; padding: 30px; border-radius: 8px; box-shadow: 0 2px 10px rgba(0,0,0,0.1); }
|
|
17
|
+
.feature h3 { color: #4285f4; margin-bottom: 15px; }
|
|
18
|
+
.install-section { background: #2d3748; color: white; padding: 60px 0; }
|
|
19
|
+
.code-block { background: #1a202c; padding: 20px; border-radius: 8px; margin: 20px 0; overflow-x: auto; }
|
|
20
|
+
.code-block code { color: #68d391; font-family: 'Monaco', 'Consolas', monospace; }
|
|
21
|
+
.tools-section { padding: 60px 0; }
|
|
22
|
+
.tool { border-left: 4px solid #4285f4; padding: 20px; margin: 20px 0; background: #f8f9fa; }
|
|
23
|
+
footer { background: #2d3748; color: white; padding: 40px 0; text-align: center; }
|
|
24
|
+
.btn { display: inline-block; background: #4285f4; color: white; padding: 12px 24px; text-decoration: none; border-radius: 6px; margin: 10px; }
|
|
25
|
+
.btn:hover { background: #3367d6; }
|
|
26
|
+
</style>
|
|
27
|
+
</head>
|
|
28
|
+
<body>
|
|
29
|
+
<header>
|
|
30
|
+
<div class="container">
|
|
31
|
+
<h1>🌱 Spring Documentation MCP Server</h1>
|
|
32
|
+
<p class="subtitle">Access the complete Spring ecosystem directly in Claude Desktop</p>
|
|
33
|
+
</div>
|
|
34
|
+
</header>
|
|
35
|
+
|
|
36
|
+
<section class="hero">
|
|
37
|
+
<div class="container">
|
|
38
|
+
<h2>The Complete Spring Documentation at Your Fingertips</h2>
|
|
39
|
+
<p>A public Model Context Protocol server that provides instant access to Spring Boot documentation, guides, and the entire Spring ecosystem.</p>
|
|
40
|
+
<a href="#install" class="btn">Get Started</a>
|
|
41
|
+
<a href="https://github.com/tky0065/springdocs-mcp" class="btn">View on GitHub</a>
|
|
42
|
+
</div>
|
|
43
|
+
</section>
|
|
44
|
+
|
|
45
|
+
<section class="container">
|
|
46
|
+
<div class="feature-grid">
|
|
47
|
+
<div class="feature">
|
|
48
|
+
<h3>🌐 Complete Spring Ecosystem</h3>
|
|
49
|
+
<p>Access all Spring projects: Boot, Security, Data, Cloud, and more. Get detailed project information and documentation.</p>
|
|
50
|
+
</div>
|
|
51
|
+
<div class="feature">
|
|
52
|
+
<h3>📚 Comprehensive Guides</h3>
|
|
53
|
+
<p>Browse and access hundreds of Spring guides organized by category. Perfect for learning and reference.</p>
|
|
54
|
+
</div>
|
|
55
|
+
<div class="feature">
|
|
56
|
+
<h3>🔍 Intelligent Search</h3>
|
|
57
|
+
<p>Search across documentation, concepts, and guides with intelligent fallback mechanisms.</p>
|
|
58
|
+
</div>
|
|
59
|
+
<div class="feature">
|
|
60
|
+
<h3>⚡ 7 Powerful Tools</h3>
|
|
61
|
+
<p>Seven specialized MCP tools for exploring every aspect of Spring development.</p>
|
|
62
|
+
</div>
|
|
63
|
+
<div class="feature">
|
|
64
|
+
<h3>🔧 Easy Integration</h3>
|
|
65
|
+
<p>Simple one-command installation and configuration with Claude Desktop.</p>
|
|
66
|
+
</div>
|
|
67
|
+
<div class="feature">
|
|
68
|
+
<h3>💡 Built-in Knowledge</h3>
|
|
69
|
+
<p>Integrated knowledge base of Spring Boot concepts and best practices.</p>
|
|
70
|
+
</div>
|
|
71
|
+
</div>
|
|
72
|
+
</section>
|
|
73
|
+
|
|
74
|
+
<section class="install-section" id="install">
|
|
75
|
+
<div class="container">
|
|
76
|
+
<h2>Quick Installation</h2>
|
|
77
|
+
<div class="code-block">
|
|
78
|
+
<code>npm install -g @enokdev/springdocs-mcp</code>
|
|
79
|
+
</div>
|
|
80
|
+
<p>Then add to your Claude Desktop configuration:</p>
|
|
81
|
+
<div class="code-block">
|
|
82
|
+
<code>{
|
|
83
|
+
"mcpServers": {
|
|
84
|
+
"spring-docs": {
|
|
85
|
+
"command": "springdocs-mcp"
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}</code>
|
|
89
|
+
</div>
|
|
90
|
+
</div>
|
|
91
|
+
</section>
|
|
92
|
+
|
|
93
|
+
<section class="tools-section">
|
|
94
|
+
<div class="container">
|
|
95
|
+
<h2>Available Tools</h2>
|
|
96
|
+
<div class="tool">
|
|
97
|
+
<h3>search_spring_docs</h3>
|
|
98
|
+
<p>Search through Spring Boot documentation with keywords and filters.</p>
|
|
99
|
+
</div>
|
|
100
|
+
<div class="tool">
|
|
101
|
+
<h3>search_spring_projects</h3>
|
|
102
|
+
<p>Find Spring projects by category or functionality (Security, Data, Cloud, etc.)</p>
|
|
103
|
+
</div>
|
|
104
|
+
<div class="tool">
|
|
105
|
+
<h3>get_spring_project</h3>
|
|
106
|
+
<p>Get detailed information about a specific Spring project.</p>
|
|
107
|
+
</div>
|
|
108
|
+
<div class="tool">
|
|
109
|
+
<h3>get_all_spring_guides</h3>
|
|
110
|
+
<p>Browse all available Spring guides with optional category filtering.</p>
|
|
111
|
+
</div>
|
|
112
|
+
<div class="tool">
|
|
113
|
+
<h3>get_spring_guide</h3>
|
|
114
|
+
<p>Retrieve the complete content of a specific Spring guide.</p>
|
|
115
|
+
</div>
|
|
116
|
+
<div class="tool">
|
|
117
|
+
<h3>get_spring_reference</h3>
|
|
118
|
+
<p>Access specific sections of the Spring Boot reference documentation.</p>
|
|
119
|
+
</div>
|
|
120
|
+
<div class="tool">
|
|
121
|
+
<h3>search_spring_concepts</h3>
|
|
122
|
+
<p>Explore Spring Boot concepts with detailed explanations and examples.</p>
|
|
123
|
+
</div>
|
|
124
|
+
</div>
|
|
125
|
+
</section>
|
|
126
|
+
|
|
127
|
+
<section class="hero">
|
|
128
|
+
<div class="container">
|
|
129
|
+
<h2>Example Usage</h2>
|
|
130
|
+
<p>Once installed, ask Claude:</p>
|
|
131
|
+
<ul style="text-align: left; display: inline-block; margin-top: 20px;">
|
|
132
|
+
<li><em>"What Spring projects are available for security?"</em></li>
|
|
133
|
+
<li><em>"Show me the guide for creating a REST API with Spring Boot"</em></li>
|
|
134
|
+
<li><em>"How do I configure Spring Security?"</em></li>
|
|
135
|
+
<li><em>"Explain Spring Boot auto-configuration"</em></li>
|
|
136
|
+
</ul>
|
|
137
|
+
</div>
|
|
138
|
+
</section>
|
|
139
|
+
|
|
140
|
+
<footer>
|
|
141
|
+
<div class="container">
|
|
142
|
+
<p>© 2025 Spring Documentation MCP Server by <a href="https://github.com/tky0065" style="color: #68d391;">EnokDev</a> | MIT License</p>
|
|
143
|
+
<p>Access the complete Spring ecosystem directly in Claude Desktop</p>
|
|
144
|
+
</div>
|
|
145
|
+
</footer>
|
|
146
|
+
</body>
|
|
147
|
+
</html>
|
package/guid.md
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# 🚀 Serveur MCP Spring Boot Documentation
|
|
2
|
+
|
|
3
|
+
## En TypeScript
|
|
4
|
+
https://github.com/modelcontextprotocol/typescript-sdk
|
|
5
|
+
|
|
6
|
+
## 📖 Vue d'ensemble
|
|
7
|
+
|
|
8
|
+
Ce projet implémente un serveur MCP (Model Context Protocol) en **TypeScript** qui permet d'accéder facilement à la documentation officielle de Spring Boot. Le serveur récupère et formate le contenu depuis `docs.spring.io` et l'expose via une interface MCP standardisée.
|
|
9
|
+
|
|
10
|
+
Utilise aussi https://spring.io/projects
|
|
11
|
+
|
|
12
|
+
### 🎯 Objectifs
|
|
13
|
+
|
|
14
|
+
- ✅ Fournir un accès programmatique à la documentation Spring Boot
|
|
15
|
+
- ✅ Supporter le protocole MCP 2025-06-18
|
|
16
|
+
- ✅ Convertir le HTML en format Markdown lisible
|
|
17
|
+
- ✅ Offrir une interface simple et bien documentée
|
|
18
|
+
|
|
19
|
+
Ce serveur MCP (Model Context Protocol) permet d'accéder à la documentation officielle de Spring Boot via une interface standardisée, **maintenant disponible pour un usage public** comme Context7 !
|
|
20
|
+
|
|
21
|
+
## 🛠️ Fonctionnalités
|
|
22
|
+
|
|
23
|
+
### Outils disponibles
|
|
24
|
+
|
|
25
|
+
1. **`search_spring_docs`** - Recherche dans la documentation avec des mots-clés
|
|
26
|
+
2. **`get_spring_guide`** - Récupère un guide Spring Boot complet
|
|
27
|
+
3. **`get_spring_reference`** - Accède aux sections de la documentation de référence
|
|
28
|
+
4. **`search_spring_concepts`** - Recherche des concepts par catégorie
|
|
29
|
+
|
|
30
|
+
### Catégories de concepts supportées
|
|
31
|
+
|
|
32
|
+
- **Core** : Auto-configuration, Profiles, Properties
|
|
33
|
+
- **Web** : Spring MVC, Serveurs intégrés
|
|
34
|
+
- **Data** : Spring Data JPA, Migration de base de données
|
|
35
|
+
- **Security** : Spring Security
|
|
36
|
+
- **Testing** : Test Slices, annotations de test
|
|
37
|
+
- **Production** : Actuator, monitoring
|
|
38
|
+
|
|
39
|
+
## 🚀 Installation et utilisation
|
|
40
|
+
|
|
41
|
+
### 1. Installation des dépendances
|
|
42
|
+
```bash
|
|
43
|
+
npm install
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### 2. Compilation
|
|
47
|
+
```bash
|
|
48
|
+
npm run build
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### 3. Test du serveur
|
|
52
|
+
```bash
|
|
53
|
+
npm start
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### 4. Configuration avec Claude Desktop
|
|
57
|
+
|
|
58
|
+
Copiez la configuration suivante dans votre fichier `claude_desktop_config.json` :
|
|
59
|
+
|
|
60
|
+
**macOS** : `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
61
|
+
**Windows** : `%APPDATA%\Claude\claude_desktop_config.json`
|
|
62
|
+
|
|
63
|
+
```json
|
|
64
|
+
{
|
|
65
|
+
"mcpServers": {
|
|
66
|
+
"springboot-docs": {
|
|
67
|
+
"command": "node",
|
|
68
|
+
"args": ["/Users/yacoubakone/Documents/dev/springdocsmcp/build/index.js"]
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## 📝 Exemples d'utilisation
|
|
75
|
+
|
|
76
|
+
Une fois configuré avec Claude Desktop, vous pouvez utiliser des requêtes comme :
|
|
77
|
+
|
|
78
|
+
- "Recherche dans la documentation Spring Boot sur les API REST"
|
|
79
|
+
- "Récupère le guide gs-rest-service"
|
|
80
|
+
- "Explique le concept d'auto-configuration dans Spring Boot"
|
|
81
|
+
- "Montre-moi la documentation sur Spring Security"
|
|
82
|
+
|
|
83
|
+
## 🏗️ Architecture du projet
|
|
84
|
+
|
|
85
|
+
```
|
|
86
|
+
src/
|
|
87
|
+
├── index.ts # Point d'entrée principal du serveur MCP
|
|
88
|
+
├── services/
|
|
89
|
+
│ └── springboot-docs.ts # Service de récupération de documentation
|
|
90
|
+
└── tools/
|
|
91
|
+
└── index.ts # Définitions des outils MCP exposés
|
|
92
|
+
```
|
package/package.json
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@enokdev/springdocs-mcp",
|
|
3
|
+
"version": "1.1.0",
|
|
4
|
+
"description": "Public MCP server for accessing Spring Boot documentation and the complete Spring ecosystem",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "build/index.js",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "https://github.com/tky0065/springdocs-mcp.git"
|
|
10
|
+
},
|
|
11
|
+
"homepage": "https://github.com/tky0065/springdocs-mcp#readme",
|
|
12
|
+
"bugs": {
|
|
13
|
+
"url": "https://github.com/tky0065/springdocs-mcp/issues"
|
|
14
|
+
},
|
|
15
|
+
"bin": {
|
|
16
|
+
"springdocs-mcp": "build/index.js"
|
|
17
|
+
},
|
|
18
|
+
"scripts": {
|
|
19
|
+
"build": "tsc && chmod +x build/index.js",
|
|
20
|
+
"start": "node build/index.js",
|
|
21
|
+
"dev": "npm run build && node build/index.js",
|
|
22
|
+
"watch": "tsc --watch",
|
|
23
|
+
"prepublishOnly": "npm run build",
|
|
24
|
+
"test": "node test.sh",
|
|
25
|
+
"install-global": "npm install -g ."
|
|
26
|
+
},
|
|
27
|
+
"keywords": [
|
|
28
|
+
"mcp",
|
|
29
|
+
"spring-boot",
|
|
30
|
+
"spring-framework",
|
|
31
|
+
"documentation",
|
|
32
|
+
"model-context-protocol",
|
|
33
|
+
"spring-ecosystem",
|
|
34
|
+
"claude",
|
|
35
|
+
"ai-assistant",
|
|
36
|
+
"java",
|
|
37
|
+
"spring-docs"
|
|
38
|
+
],
|
|
39
|
+
"author": "EnokDev <enokdev@example.com> (https://github.com/tky0065)",
|
|
40
|
+
"license": "MIT",
|
|
41
|
+
"publishConfig": {
|
|
42
|
+
"access": "public"
|
|
43
|
+
},
|
|
44
|
+
"engines": {
|
|
45
|
+
"node": ">=18.0.0"
|
|
46
|
+
},
|
|
47
|
+
"dependencies": {
|
|
48
|
+
"@modelcontextprotocol/sdk": "^0.5.0",
|
|
49
|
+
"cheerio": "^1.0.0-rc.12",
|
|
50
|
+
"node-fetch": "^3.3.2",
|
|
51
|
+
"turndown": "^7.2.0"
|
|
52
|
+
},
|
|
53
|
+
"devDependencies": {
|
|
54
|
+
"@types/node": "^20.0.0",
|
|
55
|
+
"@types/turndown": "^5.0.0",
|
|
56
|
+
"typescript": "^5.3.0"
|
|
57
|
+
}
|
|
58
|
+
}
|