返回市场
dv课程mcp服务器

dv课程mcp服务器

作者:danvega13 星标更新:2025-03-27

项目介绍

Spring AI MCP Server 课程信息

概述

此仓库包含一个 Spring Boot 应用程序,该应用程序实现了提供课程信息的模型控制协议(MCP)服务器。该应用程序创建了一个轻量级服务器,可以通过 Spring AI MCP 框架暴露课程数据,使 AI 模型能够使用标准化工具与您的自定义数据服务进行交互。

服务器暴露了两个主要工具:

  • 获取所有可用课程的工具
  • 根据标题搜索特定课程的工具

此实现是创建您自己的模型控制协议服务器或通过 Spring AI 将外部数据源与 AI 模型集成的良好起点。

项目需求

  • Java 24
  • Maven 3.8+
  • Spring Boot 3.4.4
  • Spring AI 1.0.0-M6

依赖项

该项目依赖于以下关键依赖项:

  • Spring AI MCP Server:提供创建兼容 MCP 的服务器的基础

    <dependency>
        <groupId>org.springframework.ai</groupId>
        <artifactId>spring-ai-mcp-server-spring-boot-starter</artifactId>
    </dependency>
    
  • Spring Boot Test:用于测试应用程序

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    

开始使用

先决条件

在运行应用程序之前,请确保您已经:

  • 在系统上安装了 Java 24
  • 安装了 Maven 以进行依赖管理
  • 对 Spring Boot 应用程序有基本了解

设置项目

  1. 查看项目结构以了解组件:

    • Course.java:表示课程数据的简单记录
    • CourseService.java:带有 MCP 工具注解的服务
    • CoursesApplication.java:带有工具注册的主要应用类
    • application.properties:MCP 服务器的配置
  2. 应用程序配置为使用 STDIO 传输作为非 Web 应用程序运行 MCP 通信:

    spring.main.web-application-type=none
    spring.ai.mcp.server.name=dan-vega-mcp
    spring.ai.mcp.server.version=0.0.1
    
    # 这些设置对于 STDIO 传输至关重要
    spring.main.banner-mode=off
    logging.pattern.console=
    

如何运行应用程序

使用 Maven 运行应用程序非常简单:

mvn spring-boot:run

应用程序将以模型控制协议服务器的形式启动,可通过标准输入/输出访问。它不会打开任何网络端口或提供 Web 接口,如 spring.main.web-application-type=none 配置所示。

运行时,服务器会向 MCP 注册两个工具:

  • dv_get_courses:返回所有可用课程
  • dv_get_course:根据标题返回特定课程

理解代码

定义数据模型

应用程序使用简单的记录来表示课程数据:

public record Course(String title, String url) {
}

这种不可变的数据结构提供了一种干净的方式来表示具有标题和 URL 属性的课程信息。

实现工具函数

CourseService 类展示了如何使用 @Tool 注解创建 MCP 工具:

@Service
public class CourseService {
    private List<Course> courses = new ArrayList<>();

    @Tool(name = "dv_get_courses", description = "从 Dan Vega 获取课程列表")
    public List<Course> getCourses() {
        return courses;
    }

    @Tool(name = "dv_get_course", description = "根据标题从 Dan Vega 获取单个课程")
    public Course getCourse(String title) {
        return courses.stream()
                .filter(course -> course.title().equals(title))
                .findFirst()
                .orElse(null);
    }

    @PostConstruct
    public void init() {
        courses.addAll(List.of(
                new Course("使用 Spring Boot 构建 Web 应用程序(FreeCodeCamp)", 
                          "https://youtu.be/31KTdfRH6nY"),
                new Course("Spring Boot 初学者教程 - 2023 快速入门使用 Spring Boot 3",
                          "https://youtu.be/UgX5lgv4uVM")
        ));
    }
}

@Tool 注解将普通方法转换为具有以下特性的 MCP 兼容工具:

  • 唯一的名称用于标识
  • 描述帮助 AI 模型理解工具的目的

向 MCP 注册工具

在主应用类中,工具被注册到 MCP 框架:

@SpringBootApplication
public class CoursesApplication {

    public static void main(String[] args) {
        SpringApplication.run(CoursesApplication.class, args);
    }

    @Bean
    public List<ToolCallback> danTools(CourseService courseService) {
        return List.of(ToolCallbacks.from(courseService));
    }
}

ToolCallbacks.from() 方法扫描服务类中的 @Tool 注解并将其注册到 MCP 框架。

扩展项目

您可以按多种方式扩展此项目:

  1. 添加更多课程:修改 CourseService 中的 init() 方法以包含额外的课程。
  2. 创建新的工具函数:添加更多带有 @Tool 注解的方法以暴露附加功能。
  3. 实现数据库存储:用数据库连接替换内存列表以持久存储课程信息。
  4. 添加搜索功能:实现超越精确标题匹配的更高级搜索功能。

例如添加搜索功能:

@Tool(name = "dv_search_courses", description = "搜索包含关键字的课程")
public List<Course> searchCourses(String keyword) {
    return courses.stream()
            .filter(course -> course.title().toLowerCase().contains(keyword.toLowerCase()))
            .collect(Collectors.toList());
}

使用 MCP 服务器与 AI 模型

要利用此 MCP 服务器与 AI 模型:

  1. 确保您的 AI 框架支持模型控制协议
  2. 使用 STDIO 传输将 AI 模型连接到 MCP 服务器
  3. AI 模型可以调用暴露的工具:
    • 请求所有课程的列表
    • 根据标题检索特定课程的详细信息

这允许 AI 模型访问实时课程信息,并在响应用户查询时提供这些信息。

配置 Claude Desktop 客户端

要使用此 MCP 服务器与 Claude Desktop 客户端,需要添加配置以告诉 Claude 在何处找到服务器。在您的 Claude Desktop 设置中添加以下配置:

{
  "dan-vega-mcp": {
    "command": "/Users/vega/.sdkman/candidates/java/current/bin/java",
    "args": [
      "-jar",
      "/Users/vega/Downloads/courses/target/courses-0.0.1-SNAPSHOT.jar"
    ]
  }
}

此配置:

  • 在 Claude Desktop 中创建名为 "dan-vega-mcp" 的工具
  • 指定 Java 可执行文件的路径
  • 提供运行编译后的 JAR 文件的参数

确保调整路径以匹配您的特定环境:

  • 更新 Java 路径以匹配您的安装
  • 更新 JAR 文件路径以指向您的编译应用程序所在的位置

结论

此 Spring AI MCP Server 提供了一个干净且可扩展的框架,通过模型控制协议暴露课程数据。通过遵循 Spring AI 规范并利用工具注解系统,您可以创建强大的 AI 模型与数据服务之间的集成。

该项目演示了如何为 MCP 兼容性构建代码,同时保持良好的软件设计实践。有了这个基础,您可以构建更复杂的提供者,增强 AI 功能,使其能够访问定制的领域特定信息。

有关 Spring AI 和模型控制协议的更多信息,请参阅官方文档。