使用说明
MCP数据库工具
该项目使用Spring Boot实现了一个具有数据库访问功能的模型上下文协议(MCP)服务器。
概述
MCP服务器提供与内存中的H2数据库交互的工具,用于管理任务。这演示了如何创建可以在数据库上执行CRUD操作的MCP工具。
特性
- 数据库集成:使用Spring Data JPA和H2内存数据库
- MCP工具:将数据库操作作为MCP工具公开
- 任务管理:创建、读取、更新、删除和搜索任务
MCP工具可用
1.创建任务
在数据库中创建新任务。
- 参数:
title(必填):任务的标题description(可选):任务描述
- 退货:已创建具有ID和时间戳的任务
2.获取所有任务
从数据库中获取所有任务。
- 退货:所有任务和计数列表
3.getTaskById
通过ID获取特定任务。
- 参数:
id(必填):任务的ID
- 退货:未找到任务详细信息或错误
4更新任务
更新现有任务。
- 参数:
id(必填):要更新的任务的IDtitle(可选):新标题description(可选):新描述completed(可选):完成状态
- 退货:更新了任务详细信息
5.删除任务
从数据库中删除任务。
- 参数:
id(必填):要删除的任务的ID
- 退货:成功/失败状态
6.搜索任务
按标题搜索任务。
- 参数:
searchTerm(必填):任务标题的搜索词
- 退货:匹配任务
7.获取任务状态
获取按完成状态筛选的任务。
- 参数:
completed(必填):已完成任务为true,未完成任务为false
- 退货:筛选任务
数据库模式
该应用程序使用 Task 具有以下字段的实体:
id:自动生成长(主键)title:字符串(必填)description:字符串(可选,最多1000个字符)completed:布尔值(默认值:false)createdAt:时间戳(自动生成)completedAt:时间戳(在任务标记为完成时设置)
技术栈
- 弹簧靴3.4.2:应用程序框架
- Spring数据JPA:数据库访问层
- H2数据库:内存数据库
- Spring AI MCP服务器:MCP服务器实现
- Java 21:编程语言
建立和运行
先决条件
- Java 21或更高版本
- Gradle(包括包装)
构建
./gradlew build
运行测试
./gradlew test
运行应用程序
./gradlew :mcp-server:bootRun
服务器将在端口8081上启动(在application.yml中配置)。
配置
数据库配置位于 mcp-server/src/main/resources/application.yml:
spring:
datasource:
url: jdbc:h2:mem:mcpdb
driver-class-name: org.h2.Driver
username: sa
password:
jpa:
database-platform: org.hibernate.dialect.H2Dialect
hibernate:
ddl-auto: update
show-sql: true
h2:
console:
enabled: true
path: /h2-console
H2控制台访问
当应用程序运行时,您可以访问H2控制台:
- 网址:http://localhost:8081/h2-控制台
- JDBC URL:JDBC:h2:mem:mcpdb
- 用户名:sa
- 密码:(留空)
项目结构
mcp-server/
├── src/
│ ├── main/
│ │ ├── java/com/ciaranchaney/mcpserver/
│ │ │ ├── McpServerApplication.java # Main application class
│ │ │ ├── ToolsConfig.java # MCP tools definition
│ │ │ ├── Task.java # Task entity
│ │ │ └── TaskRepository.java # Database repository
│ │ └── resources/
│ │ └── application.yml # Configuration
│ └── test/
│ └── java/com/ciaranchaney/mcpserver/
│ └── DatabaseToolsTest.java # Database tool tests
└── build.gradle # Project dependencies
测试
该项目包括对所有数据库操作的全面测试:
- 任务创建
- 任务检索(全部和按ID)
- 任务更新
- 任务删除
- 按标题搜索任务
- 按状态筛选任务
使用以下工具运行测试:
./gradlew :mcp-server:test
示例用法
服务器运行后,MCP客户端可以调用这些工具。以下是一些示例:
-
创建一个任务:
- 工具:
createTask - Args:
{"title": "Write documentation", "description": "Create README file"}
- 工具:
-
获取所有任务:
- 工具:
getAllTasks - Args:
{}
- 工具:
-
更新任务:
- 工具:
updateTask - Args:
{"id": 1, "completed": true}
- 工具:
-
搜索任务:
- 工具:
searchTasks - Args:
{"searchTerm": "documentation"}
- 工具:
扩展数据库
要添加更多数据库功能,请执行以下操作:
- 在同一包中创建新实体
- 创建相应的存储库接口
- 在中添加新的MCP工具
ToolsConfig.java使用@McpTool注释 - 更新
application.yml如果需要额外配置
许可证
该项目仅用于演示目的。