使用说明
图书跟踪器后端
一个Spring Boot应用程序,提供REST API和MCP(模型上下文协议)服务器功能,用于管理书籍。
特性
- REST API:用于图书管理的传统HTTP端点
- MCP服务器:用于AI工具集成的协议兼容服务器
- PostgreSQL数据库:书籍数据的持久存储
- CRUD操作:完整的图书管理功能
先决条件
- Java 21+
- 运行在本地主机上的PostgreSQL数据库:5432
- 数据库名称
library_db - PostgreSQL用户:
postgres使用密码:password
运行应用程序
# Using Maven wrapper
./mvnw.cmd spring-boot:run
# Or if Maven is installed
mvn spring-boot:run
应用程序将于启动 http://localhost:8080
REST API端点
图书管理
GET /api/books-获取所有书籍GET /api/books/{id}-按ID获取图书POST /api/books-创建新书PUT /api/books/{id}-更新现有书籍DELETE /api/books/{id}-删除书籍
JSON示例书
{
"title": "The Great Gatsby",
"author": "F. Scott Fitzgerald",
"isbn": "978-0-7432-7356-5"
}
MCP服务器端点
MCP服务器提供与REST API相同的功能,但遵循MCP协议规范。
MCP协议端点
POST /mcp/initialize-初始化MCP服务器连接POST /mcp/tools/list-列出可用工具POST /mcp/tools/call-执行工具调用
可用的MCP工具
- 获取所有书籍 -从数据库中获取所有书籍
- getBookById -按ID获取图书
- 参数:
id(编号)
- 参数:
- createBook -创建新书
- 参数:
title(字符串),author(字符串),isbn(字符串)
- 参数:
- updateBook -更新现有书籍
- 参数:
id(数字),title(字符串),author(字符串),isbn(字符串)
- 参数:
- 删除图书 -按ID删除图书
- 参数:
id(编号)
- 参数:
- findBookByTitle -按标题查找书籍
- 参数:
title(字符串)
- 参数:
- findBookByAuthor -按作者查找书籍
- 参数:
author(字符串)
- 参数:
MCP工具调用示例
{
"name": "createBook",
"arguments": {
"title": "1984",
"author": "George Orwell",
"isbn": "978-0-452-28423-4"
}
}
数据库设置
创建PostgreSQL数据库:
CREATE DATABASE library_db;
应用程序将自动创建 book 表具有以下结构:
id(BIGINT、主键、自动递增)title(VARCHAR)author(VARCHAR)isbn(VARCHAR)
配置
中的数据库配置 src/main/resources/application.properties:
spring.datasource.url=jdbc:postgresql://localhost:5432/library_db
spring.datasource.username=postgres
spring.datasource.password=password
API文档
跑步时,请访问 http://localhost:8080/swagger-ui.html 用于交互式API文档。
建筑
- 控制器层:REST端点(
BookController)和MCP端点(McpServerController) - 服务层:业务逻辑(
BookTools) - 库层:数据访问(
BookRepository) - 模型图层:实体定义(
Book)
错误处理
该应用程序包括基本的错误处理:
- 返回无效的图书ID
null - MCP工具错误包含在错误响应中
- 记录数据库连接问题
发展
该应用程序在开发过程中使用Spring Boot DevTools进行热重载。
claude的配置文件:
{
"mcpServers": {
"booktracker": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"http://127.0.0.1:8080/mcp"
]
}
}
}
重要通知
有关MCP和MCP服务器的所有相关文件和详细信息,请参阅 booktracker_backend 目录。
