@@ -16,6 +16,7 @@ import io.modelcontextprotocol.kotlin.sdk.server.ServerOptions
1616import io.modelcontextprotocol.kotlin.sdk.server.SseServerTransport
1717import io.modelcontextprotocol.kotlin.sdk.server.StdioServerTransport
1818import io.modelcontextprotocol.kotlin.sdk.server.mcp
19+ import java.util.Locale.getDefault
1920import kotlinx.coroutines.*
2021import kotlinx.io.asSink
2122import kotlinx.io.asSource
@@ -240,7 +241,134 @@ class Mcp(
240241 }
241242 }
242243
243- logger.info(" MCP server configured successfully with 1 tool" )
244+ server.addPrompt(
245+ name = " analyze-codebase" ,
246+ description = " Generate a comprehensive analysis prompt for a codebase" ,
247+ arguments =
248+ listOf (
249+ PromptArgument (
250+ name = " focus" ,
251+ description = " What aspect to focus on (architecture, security, performance, etc.)" ,
252+ required = false ,
253+ ),
254+ PromptArgument (
255+ name = " language" ,
256+ description = " Primary programming language of the codebase" ,
257+ required = false ,
258+ ),
259+ ),
260+ ) { request ->
261+ val focus = request.arguments?.get(" focus" ) ? : " general architecture"
262+ val language = request.arguments?.get(" language" ) ? : " any language"
263+
264+ val promptText =
265+ """
266+ Please analyze this codebase with a focus on ${focus} .
267+
268+ Primary language: $language
269+
270+ Please provide:
271+ 1. Overall architecture and design patterns
272+ 2. Code quality and maintainability assessment
273+ 3. Potential security concerns
274+ 4. Performance considerations
275+ 5. Recommendations for improvements
276+
277+ Focus particularly on $focus aspects of the code.
278+ """
279+ .trimIndent()
280+
281+ GetPromptResult (
282+ description = " Codebase analysis prompt focusing on $focus " ,
283+ messages = listOf (PromptMessage (role = Role .user, content = TextContent (promptText))),
284+ )
285+ }
286+
287+ server.addPrompt(
288+ name = " code-review" ,
289+ description = " Generate a code review prompt template" ,
290+ arguments =
291+ listOf (
292+ PromptArgument (
293+ name = " type" ,
294+ description = " Type of review (security, performance, style, etc.)" ,
295+ required = false ,
296+ )
297+ ),
298+ ) { request ->
299+ val reviewType = request.arguments?.get(" type" ) ? : " comprehensive"
300+
301+ val promptText =
302+ """
303+ Please perform a $reviewType code review of the following code.
304+
305+ Review criteria:
306+ - Code clarity and readability
307+ - Best practices adherence
308+ - Potential bugs or issues
309+ - Performance implications
310+ - Security considerations
311+ - Maintainability
312+
313+ Please provide specific feedback with examples and suggestions for improvement.
314+ """
315+ .trimIndent()
316+
317+ GetPromptResult (
318+ description =
319+ " ${reviewType.replaceFirstChar { if (it.isLowerCase()) it.titlecase(getDefault()) else it.toString() }} code review template" ,
320+ messages = listOf (PromptMessage (role = Role .user, content = TextContent (promptText))),
321+ )
322+ }
323+
324+ server.addResource(
325+ uri = " repo://analysis-results" ,
326+ name = " Repository Analysis Results" ,
327+ description = " Latest repository analysis results" ,
328+ mimeType = " application/json" ,
329+ ) {
330+ // Return cached analysis results or a placeholder
331+ ReadResourceResult (
332+ contents =
333+ listOf (
334+ TextResourceContents (
335+ uri = " repo://analysis-results" ,
336+ mimeType = " application/json" ,
337+ text = """ {"message": "No analysis results available yet. Run analyze-repository tool first."}""" ,
338+ )
339+ )
340+ )
341+ }
342+
343+ server.addResource(
344+ uri = " repo://metrics" ,
345+ name = " Repository Metrics" ,
346+ description = " Code metrics and statistics" ,
347+ mimeType = " application/json" ,
348+ ) {
349+ ReadResourceResult (
350+ contents =
351+ listOf (
352+ TextResourceContents (
353+ uri = " repo://metrics" ,
354+ mimeType = " application/json" ,
355+ text =
356+ """
357+ {
358+ "totalFiles": 0,
359+ "linesOfCode": 0,
360+ "languages": [],
361+ "lastAnalyzed": null,
362+ "complexity": "unknown"
363+ }
364+ """
365+ .trimIndent(),
366+ )
367+ )
368+ )
369+ }
370+
371+ logger.info(" MCP server configured successfully with 1 tool, 2 prompts, and 2 resources" )
244372 return server
245373 }
246374}
0 commit comments