购物车管理服务器

一个基于MCP协议和PostgreSQL数据库的购物车管理系统,与Claude Desktop兼容,提供创建、查询、添加和删除购物车商品的功能。

  • by tomherbron
  • Kotlin
  • 本地部署
  • 更新于
在 GitHub 查看 tomherbron/mcp-spring-claude

使用说明

购物MCP服务器

用于管理购物车系统的MCP(模型上下文协议)服务器,与Claude Desktop兼容。

🎯 描述

该项目公开了MCP工具,允许Claude Desktop通过PostgreSQL数据库与购物车管理系统进行交互。

可用工具

  • create_cart:创建新的空购物车
  • get_cart_by_id:按UUID检索购物车
  • add_product_to_cart:将产品添加到现有购物车
  • remove_product_from_cart:从购物车中删除产品

🏗️ 建筑

  • 框架:弹簧靴3.5.8+弹簧AI 1.1.0
  • 语言:科特林
  • 数据库:PostgreSQL
  • 协议:MCP(模型上下文协议)
  • 模式:STDIO用于与Claude Desktop通信

📋 先决条件

  • Java 21 (JDK 21或更高版本)
  • 码头工人 和 Docker Compose (适用于PostgreSQL)
  • 梅文 (通过Maven Wrapper提供)
  • 克劳德桌面 (测试MCP工具)

🚀 安装和设置

1.导航到项目目录

cd /home/tom/projects/personnal-projects/mcp

2.启动PostgreSQL

该项目使用Docker Compose来管理PostgreSQL:

docker compose up -d

验证容器是否正在运行:

docker ps | grep postgres

您应该看到:

mcp-postgres-1   Up X minutes   0.0.0.0:5432->5432/tcp

3.编写应用程序

./mvnw clean package -DskipTests

汇编应显示:

[INFO] BUILD SUCCESS
[INFO] Total time: ~5s

JAR将在以下位置创建: target/mcp-0.0.1-SNAPSHOT.jar

4.测试应用程序(可选)

要验证应用程序是否正确启动:

java -jar target/mcp-0.0.1-SNAPSHOT.jar

您应该在日志中看到:

Started McpApplicationKt in X.XXX seconds

按 Ctrl+C 停止应用程序。

🧪 测试MCP工具

配置完Claude Desktop后,通过向Claude提出以下问题来测试工具:

创建购物车

Can you create a new cart for me?

克劳德将使用 create_cart 工具并返回UUID。

取回购物车

Can you retrieve the cart with ID [UUID]?

添加产品

Can you add product [product-UUID] to cart [cart-UUID] with a quantity of 2?

删除产品

Can you remove product [product-UUID] from cart [cart-UUID]?

📁 项目结构

mcp/
├── src/
│   ├── main/
│   │   ├── kotlin/
│   │   │   └── com/eni/demo/mcp/
│   │   │       ├── McpApplication.kt              # Entry point
│   │   │       ├── application/
│   │   │       │   └── service/                   # Business services
│   │   │       │       ├── CartService.kt
│   │   │       │       └── ProductService.kt
│   │   │       ├── domain/                        # Domain models
│   │   │       │   ├── cart/
│   │   │       │   │   ├── model/
│   │   │       │   │   └── spi/
│   │   │       │   └── product/
│   │   │       │       ├── model/
│   │   │       │       └── spi/
│   │   │       └── infrastructure/
│   │   │           ├── claude/
│   │   │           │   └── adapters/
│   │   │           │       └── CartMcpAdapter.kt  # MCP Adapter
│   │   │           └── jpa/                       # Persistence
│   │   │               ├── adapters/
│   │   │               ├── model/
│   │   │               └── repositories/
│   │   └── resources/
│   │       └── application.yaml                   # Spring configuration
│   └── test/
├── compose.yaml                                   # Docker Compose for PostgreSQL
├── pom.xml                                        # Maven configuration
└── README.md

🐛 故障排除

MCP服务器未出现在Claude Desktop中

  1. 检查配置:

    cat ~/.config/Claude/claude_desktop_config.json
    
  2. 检查克劳德桌面日志:

    tail -f ~/.config/Claude/logs/*.log
    
  3. 手动测试应用程序:

    java -jar target/mcp-0.0.1-SNAPSHOT.jar
    

PostgreSQL连接错误

  1. 检查PostgreSQL是否正在运行:

    docker ps | grep postgres
    
  2. 如果容器未启动:

    docker compose up -d
    
  3. 检查容器日志:

    docker logs mcp-postgres-1
    

JDK编译错误

该项目包括 .mvn/jvm.config 用于解决某些JDK(尤其是Microsoft JDK)问题的文件:

--add-opens=java.base/jdk.internal.crac=ALL-UNNAMED
--add-opens=java.base/jdk.crac.impl=ALL-UNNAMED
--add-opens=java.base/jdk.internal.jimage=ALL-UNNAMED

应用程序启动后立即停止

确认:

  1. PostgreSQL正在运行
  2. 这 shopping_mcp 数据库存在
  3. 凭据正确 application.yaml

📚 其他文件

🤝 贡献

该项目遵循六边形架构(端口和适配器):

  • 领域:纯业务逻辑
  • 应用:用例和编排
  • 基础设施:技术实现(JPA、MCP等)

📝 重要说明

  • MCP服务器使用 工作室 (标准输入/输出)模式,用于与Claude Desktop通信
  • 应用程序禁用Tomcat web服务器(web-application-type: none)因为不需要
  • 日志被最小化,以避免污染与Claude的STDIO通信
  • 启动时需要PostgreSQL——如果没有可用的数据库,应用程序将失败

🎉 准备好了!

配置好所有内容后,您可以使用自然语言直接从Claude Desktop与购物车系统进行交互!

例子:

You: "Create a new cart for me"
Claude: *uses create_cart*
        "I've created a new cart with ID: 123e4567-e89b-12d3-a456-426614174000"