基于MCP服务器的任务管理系统
该项目由两个Spring Boot应用程序组成:
- 任务API服务器 -用于任务上的CRUD操作的REST API(端口8080)
- 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=mcpMCP服务器将在 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处理)
- 梅文
