数据库任务管理工具

一个基于Spring Boot和H2内存数据库的MCP服务器,提供任务管理的CRUD操作。

  • by CiaranChaney
  • Java
  • 本地部署
  • 更新于
在 GitHub 查看 CiaranChaney/MCP-Test

使用说明

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 (必填):要更新的任务的ID
    • title (可选):新标题
    • 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客户端可以调用这些工具。以下是一些示例:

  1. 创建一个任务:

    • 工具: createTask
    • Args: {"title": "Write documentation", "description": "Create README file"}
  2. 获取所有任务:

    • 工具: getAllTasks
    • Args: {}
  3. 更新任务:

    • 工具: updateTask
    • Args: {"id": 1, "completed": true}
  4. 搜索任务:

    • 工具: searchTasks
    • Args: {"searchTerm": "documentation"}

扩展数据库

要添加更多数据库功能,请执行以下操作:

  1. 在同一包中创建新实体
  2. 创建相应的存储库接口
  3. 在中添加新的MCP工具 ToolsConfig.java 使用 @McpTool 注释
  4. 更新 application.yml 如果需要额外配置

许可证

该项目仅用于演示目的。