任务管理系统

一个基于Spring Boot的任务管理系统,提供任务CRUD操作和MCP服务器代理功能。

  • by vladislav-vorobev-epam
  • Java
  • 本地部署
  • 更新于
在 GitHub 查看 vladislav-vorobev-epam/mcp-workshop-java

使用说明

基于MCP服务器的任务管理系统

该项目由两个Spring Boot应用程序组成:

  1. 任务API服务器 -用于任务上的CRUD操作的REST API(端口8080)
  2. MCP服务器 -代理任务API的模型上下文协议服务器(端口8081)

建筑

┌─────────────┐      HTTP      ┌─────────────┐      HTTP      ┌─────────────┐
│             │ ──────────────> │             │ ──────────────> │             │
│  MCP Client │                 │  MCP Server │                 │  Task API   │
│             │ <────────────── │  (port 8081)│ <────────────── │ (port 8080) │
└─────────────┘                 └─────────────┘                 └─────────────┘
                                       │                               │
                                       │                               │
                                       └───────────────────────────────┘
                                              Filesystem Storage
                                              (data/tasks/*.json)

先决条件

  • Java 21
  • Maven 3.6+

运行应用程序

1.启动任务API服务器(终端1)

chmod +x run-task-api.sh
./run-task-api.sh

或手动:

mvn spring-boot:run -Dspring-boot.run.mainClass=com.epam.masterclass.Main

任务API将在 http://localhost:8080

2.启动MCP服务器(终端2)

chmod +x run-mcp-server.sh
./run-mcp-server.sh

或手动:

mvn spring-boot:run -Dspring-boot.run.mainClass=com.epam.masterclass.mcp.McpServer -Dspring-boot.run.profiles=mcp

MCP服务器将在 http://localhost:8081

任务API终结点

  • GET /api/tasks -获取所有任务
  • GET /api/tasks/{id} -按ID获取任务
  • POST /api/tasks -创建新任务
  • PUT /api/tasks/{id} -更新任务
  • DELETE /api/tasks/{id} -删除任务

示例:创建任务

curl -X POST http://localhost:8080/api/tasks \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Buy groceries",
    "description": "Milk, eggs, bread",
    "completed": false
  }'

MCP服务器工具

MCP服务器通过REST端点公开以下工具:

  • GET /mcp/tools/list -列出所有可用工具
  • POST /mcp/tools/call -使用JSON正文调用工具: {"name": "tool_name", "arguments": {...}}

可用工具:

  • get_all_tasks -从任务管理系统获取所有任务
  • get_task -通过ID获取特定任务(需要:ID)
  • create_task -创建新任务(要求:标题、描述、已完成)
  • update_task -更新现有任务(需要:id、标题、描述、已完成)
  • delete_task -按任务ID删除任务(需要:ID)

配置

任务API配置

  • 端口:8080(默认)
  • 数据目录: ./data/tasks (可通过以下方式配置 DATA_DIRECTORY 任何人)

MCP服务器配置

  • 端口:8081
  • 任务API URL: http://localhost:8080 (可通过以下方式配置 TASK_API_URL 任何人)
  • 传输:HTTP
  • 轮廓: mcp

数据存储

任务作为单独的JSON文件存储在 data/tasks/ 目录。每个任务都另存为 {id}.json.

示例任务文件:

{
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "title": "Buy groceries",
  "description": "Milk, eggs, bread",
  "completed": false
}

MCP工具示例

列出可用工具

curl http://localhost:8081/mcp/tools/list

调用工具

# Get all tasks
curl -X POST http://localhost:8081/mcp/tools/call \
  -H "Content-Type: application/json" \
  -d '{"name": "get_all_tasks"}'

# Create a task
curl -X POST http://localhost:8081/mcp/tools/call \
  -H "Content-Type: application/json" \
  -d '{
    "name": "create_task",
    "arguments": {
      "title": "New task",
      "description": "Task description",
      "completed": false
    }
  }'

技术栈

  • 弹簧靴3.4.1
  • Java 21
  • Jackson(JSON处理)
  • 梅文