课程管理MCP服务器

一个基于Spring Boot和Spring AI的最小化MCP服务器,提供课程列表、获取和添加功能,便于与MCP兼容客户端集成。

  • by iseif
  • Java
  • 本地部署
  • 更新于
在 GitHub 查看 iseif/spring-ai-mcp-example

使用说明

Spring AI MCP服务器示例:MCP课程

此存储库包含一个使用Spring Boot和Spring AI构建的最小模型上下文协议(MCP)服务器。它提供了一些简单的工具,用于在MCP STDIO传输上列出、获取和添加“课程”,使其易于与MCP兼容的客户端集成,如Claude Desktop、OpenAI MCP兼容的开发工具、Cursor或MCP Inspector。

当前日期/时间:2025-08-09 15:52(仅供参考)

里面是什么

  • Spring Boot控制台应用程序(无web服务器)配置为通过STDIO作为MCP服务器运行。
  • Spring AI Toolcallback自动导出带注释的方法 CourseService 作为MCP工具。
  • 三个示例工具:
    • sd_get_courses:列出所有可用的课程。
    • sd_get_course:按课程 title.
    • sd_add_course:添加一门给定的新课程 Course 对象与 title 和 url.

关键类/文件:

  • src/main/java/dev/iseif/mcpspringai/McpSpringAiApplication.java --Spring Boot入口点。
  • src/main/java/dev/iseif/mcpspringai/AppConfiguration.java --登记簿 CourseService 作为工具回调。
  • src/main/java/dev/iseif/mcpspringai/CourseService.java --通过以下方式实施工具 @Tool 注释。
  • src/main/java/dev/iseif/mcpspringai/Course.java --课程的记录类型。
  • src/main/resources/application.properties --MCP服务器名称/版本和STDIO友好日志记录。

先决条件

  • Java 17+(建议与Maven/target设置匹配)。
  • Maven 3.9+(或使用附带的Maven包装器)。
  • 如果要集成,请使用MCP兼容客户端(可选):
    • Claude Desktop(通过JSON配置支持MCP提供程序)。
    • MCP检查员: npx @modelcontextprotocol/inspector.
    • 其他支持MCP的工具/编辑器。

构建

在Windows PowerShell上(使用包装器):

  • ./mvnw.cmd -q -DskipTests package

或者,如果安装了Maven:

  • mvn -q -DskipTests package

这将在下面生成一个可运行的JAR target/.

运行(STDIO MCP服务器)

这个应用程序是一个专为STDIO传输设计的纯控制台进程。它不得打印横幅或普通控制台日志(已配置)。

直接运行它:

  • java -jar target/mcp-spring-ai-*.jar

该过程将在STDIN/STDOUT上等待来自客户端的MCP JSON-RPC消息。

配置默认值(请参见 src/main/resources/application.properties):

spring.application.name=mcp-spring-ai
spring.main.web-application-type=none
spring.ai.mcp.server.name=courses-mcp
spring.ai.mcp.server.version=1.0.0

# Required for STDIO transport
spring.main.banner-mode=off
logging.pattern.console=

工具(功能)

这些工具是由Spring AI从 CourseService:

  1. sd_get_courses
  • 说明:列出所有可用的课程。
  • 参数:无
  • 退货: List<Course> 哪里 Course 是 { title: string, url: string }.
  1. sd_get_course
  • 描述:按标题获取课程。
  • 参数:
    • title (string)--与课程名称完全匹配。
  • 退货: Course | null.
  1. sd_add_course
  • 说明:添加新课程。
  • 参数:
    • course (对象)-- { title: string, url: string }.
  • 退货: void (无内容)。

初始数据(启动时加载):

  • 弹簧靴https://spring.io/projects/spring-boot
  • 春天https://spring.io/projects/spring-framework
  • 春季安全https://spring.io/projects/spring-security
  • Spring数据JPA-https://spring.io/projects/spring-data-jpa

与MCP客户端一起使用

1) MCP检查员(非常适合测试)

如果你有Node.js:

  • 安装并运行: npx @modelcontextprotocol/inspector
  • 添加新服务器(STDIO):
    • 命令: java
    • Args: -jar, F:/development/repos/mcp-spring-ai/target/mcp-spring-ai-<version>.jar
    • 工作目录:项目根目录(或JAR所在的任何位置)
  • 连接后,您应该会看到 courses-mcp 服务器及其三个工具。

2) 克劳德桌面

编辑(或创建)您的Claude Desktop MCP配置文件(因操作系统而异)。对于Windows,它通常位于:

%APPDATA%/Claude/claude_desktop_config.json

添加类似于以下内容的提供者条目:

{
  "mcpServers": {
    "courses-mcp": {
      "command": "java",
      "args": [
        "-jar",
        "F:/development/repos/mcp-spring-ai/target/mcp-spring-ai-<version>.jar"
      ],
      "env": {}
    }
  }
}

重新启动克劳德桌面。它应该发现 courses-mcp 服务器,并允许模型调用工具。

3) 其他MCP兼容工具

有关配置“stdio”MCP服务器的信息,请参阅客户的文档。关键是要启动:

  • java -jar path/to/mcp-spring-ai-<version>.jar

并连接STDIN/STDOUT。

故障排除

  • 预期控制台输出为空白。服务器通过STDIO JSON-RPC进行通信。不要启用正常的控制台日志。
  • 如果您看到Spring Boot横幅或日志,请确保 application.properties:
    • spring.main.banner-mode=off
    • logging.pattern.console= (空)
  • 如果客户找不到工具:
    • 确保 AppConfiguration 被拾取(它在同一个包树中)。
    • 确保您构建了项目并运行了构建的JAR,而不是旧版本。
  • Java版本不匹配:
    • 验证 java -version 与项目设置兼容。

发展

  • 运行测试: ./mvnw.cmd test
  • 快速重建: ./mvnw.cmd -q -DskipTests package
  • 通过注释服务方法来修改或添加工具 @Tool 来自Spring AI。

许可证

该项目仅作为示例提供。如果您计划重新分发,请添加您的首选许可证。