本项目是一个基于 Spring Boot 的应用程序,借助 Spring AI MCP 框架实现了模型控制协议(MCP)服务器,用于提供课程信息。它创建了轻量级服务器,让人工智能模型能与自定义数据服务交互,还可使用标准化工具。主要提供了检索所有课程和按标题搜索特定课程两个工具,是创建 MCP 服务器或集成外部数据源与 AI 模型的绝佳起点。
git clone https://github.com/your-username/spring-ai-mcp.git
cd spring-ai-mcp
mvn clean install
java -jar target/courses-0.0.1-SNAPSHOT.jar
该项目依赖以下关键依赖项:
<dependency>
<groupId>org.springframework.aigroupId>
<artifactId>spring-ai-mcp-server-spring-boot-starterartifactId>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
curl http://localhost:8080/courses
curl "http://localhost:8080/search?keyword=Java"
在实际使用中,可根据业务需求对 CourseService 类中的搜索逻辑进行扩展,以实现更复杂的课程搜索功能。例如,可以根据课程的分类、讲师等信息进行搜索。
src/main/java/
├── CourseService.java # 提供课程数据的业务逻辑
└── MCPServerApplication.java # 主应用程序类,启动 Spring Boot 应用程序
import org.springframework.stereotype.Service;
@Service
public class CourseService {
public List getAllCourses() {
return List.of(
new Course(1L, "Introduction to Java"),
new Course(2L, "Advanced Python Programming")
);
}
@Tool(name = "search_courses", description = "Search for courses containing a keyword")
public List searchCourses(String keyword) {
// 这里添加搜索逻辑
return this.getAllCourses().stream()
.filter(course -> course.getTitle().toLowerCase().contains(keyword.toLowerCase()))
.collect(Collectors.toList());
}
}
import java.util.Objects;
public record Course(
Long id,
String title
) {
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Course course = (Course) o;
return Objects.equals(id, course.id);
}
@Override
public int hashCode() {
return Objects.hash(id);
}
}
在 application.properties 文件中进行如下配置:
# 设置 MCP 服务器的端口
server.port = 8080
# 其他 Spring Boot 配置...
MCP(模型控制协议)是一种用于在 AI 模型和外部数据源之间建立通信的协议。通过 Spring AI,您可以轻松地将这些服务公开为工具,供 AI 模型调用。
通过此示例,您可以看到如何利用 Spring AI 的 MCP 服务器来公开自定义服务。这对于任何需要与 AI 模型交互的后端服务都非常有用。
更多详细信息,请参考官方文档。