AI购物车协议

MCP协议使AI模型能够以结构化和受控的方式与外部系统、工具和数据交互,实现智能购物车功能。

  • by Adarsh6158
  • Java
  • 本地部署
  • 更新于
在 GitHub 查看 Adarsh6158/ai-shopping-cart-mcp

使用说明

AI购物车MCP

MCP(模型上下文协议)

MCP(模型上下文协议)是一种协议,允许AI模型以结构化和受控的方式与外部系统、工具和数据进行交互。

MCP充当AI模型和应用程序之间的桥梁,帮助模型了解它可以执行哪些操作以及如何执行这些操作。

无MCP

AI模型不知道如何与您的系统交互或调用您的API。

使用MCP

AI模型可以:

  • 了解用户的请求
  • 调用相应的API
  • 传递正确的数据
  • 接收回复并采取相应行动

AI购物车用例

例如,如果用户说:

“将最便宜的iPhone添加到我的购物车”

借助MCP,AI可以:

  1. 理解用户的意图
  2. 致电产品服务
  3. 找出最便宜的iPhone
  4. 使用适当的API将其添加到购物车中

所有这些都是使用MCP以结构化和无缝的方式发生的。


购物车MCP服务器

在这个项目中,我们使用Spring Boot构建了一个完整的购物车MCP服务器,并将其与Claude Desktop集成。

以下工具已公开:

  • addToCart –将产品添加到购物车
  • removeCart –从购物车中删除产品
  • getCart –检索购物车中的所有商品
  • getCartTotal –获取购物车的总价

我们使用Spring AI创建MCP服务器,并公开这些端点,以便AI模型可以与系统交互。

对于该模型,我们使用Claude Desktop。


Claude桌面配置

我们配置了 claude_desktop_config.json 注册我们的MCP服务器的文件:

{
  "mcpServers": {
    "shopping-cart-server": {
      "command": "java",
      "args": [
        "-jar",
        "/Users/adarshkumar/Desktop/Learning/ai-shopping-cart-mcp/target/shopping-cart-server.jar"
      ]
    }
  }
}

以下是Claude Desktop中的开发人员设置配置:


样本输出

成功连接到Claude后的截图:






我面临的问题和解决方法

1.JAR名称错误

最初,使用了不同的JAR名称(如ai-shopping-cart-cp-0.0.1-SNAPSHOT.JAR),这导致了启动失败。

修复: 确保使用正确的最终JAR名称:

购物卡服务器.jar

2.写入stdout的日志

MCP使用JSON通过stdout进行通信。如果您的应用程序将日志写入stdout,则会破坏通信。

您可能会看到错误:

JSON第4位后出现意外的非空白字符

修复:

使用logback-spring.xml将日志重定向到stderr 更新application.properties: spring.main.baner模式=关闭 logging.pattern.console=%d{HH:mm:ss}%-5level-%msg%n

3.日志文件写入错误

Logback试图将日志写入文件(app.log),但环境是只读的,导致应用程序崩溃。

修复:

从logback配置中删除文件附加器 仅使用控制台日志记录(stderr)

4.工具未注册(工具:[])

MCP服务器已成功连接,但未暴露任何工具。

原因: @工具注释方法未在MCP服务器上注册。

修复: 添加Toolcallback提供程序bean:

@Bean
public ToolCallbackProvider shoppingCartTools(ShoppingCartMcpService service) {
    return MethodToolCallbackProvider.builder()
            .toolObjects(service)
            .build();
}

什么不该做

  • 不要向stdout打印任何内容(这会中断MCP通信)
  • 不要使用不正确的JAR名称或过时的构建
  • 不要忘记使用Toolcallback Provider注册工具
  • 不要在受限环境中使用基于文件的日志记录
  • 更改配置后不要跳过重新启动Claude Desktop