使用说明
Spring AI MCP服务器-产品库存
使用Spring AI构建的模型上下文协议(MCP)服务器,将产品库存管理工具暴露给Claude等AI助手。
该项目是作为YouTube视频的一部分构建的:https://www.youtube.com/watch?v=3rtZRKM39BI
什么是MCP?
这 模型上下文协议(MCP) 是一个开放标准,允许人工智能助手与外部工具和数据源安全交互。该服务器实现了MCP,将产品库存操作作为AI助手可以调用的工具公开。
特性
- Spring AI集成:使用Spring AI的MCP服务器启动器实现无缝协议实现
- STDIO传输:通过标准输入/输出进行通信,允许MCP客户端将其作为子流程生成
- H2内存数据库:包含示例数据的独立数据库,无需外部设置
- CRUD操作:产品的完整创建、读取、更新、删除功能
可用工具
服务器向AI助手公开以下工具:
| 工具 | 说明 |
|---|---|
getAllProducts |
从库存中检索所有产品 |
searchByCategory |
按类别查找产品(电子产品、书籍、服装、电器) |
findProductsUnderPrice |
查找低于指定价格阈值的产品 |
addProduct |
在库存中创建新产品 |
updateProduct |
更新现有产品的详细信息 |
deleteProduct |
从库存中删除产品 |
先决条件
- Java 17或更高版本
- Maven 3.6+(或使用附带的Maven包装器)
建设项目
# Using Maven wrapper (recommended)
./mvnw clean package -DskipTests
# Or with installed Maven
mvn clean package -DskipTests
这将在以下位置创建一个可执行JAR target/MCP-Server-0.0.1-SNAPSHOT.jar.
运行服务器
服务器设计为由MCP客户端(如Claude Desktop)启动。它通过STDIO进行通信,因此直接在终端中运行它不会很有用。
与Claude Desktop集成
将以下内容添加到您的Claude Desktop配置文件中:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
视窗: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"product-inventory": {
"command": "java",
"args": [
"-jar",
"/absolute/path/to/MCP-Server-0.0.1-SNAPSHOT.jar"
]
}
}
}
替换 /absolute/path/to/ 使用构建的JAR文件的实际路径。
更新配置后,重新启动Claude Desktop。然后,产品库存工具将在您的对话中可用。
项目结构
src/main/java/com/ezcloud/mcp/server/
├── McpServerApplication.java # Main application & tool registration
├── config/
│ └── DataInitializer.java # Sample data initialization
├── entity/
│ └── Product.java # JPA entity for products
├── repository/
│ └── ProductRepository.java # Spring Data JPA repository
└── service/
└── ProductService.java # MCP tools implementation
src/main/resources/
├── application.properties # Server configuration
└── logback.xml # Logging configuration
密钥配置
服务器已在中配置 application.properties:
# MCP Server Settings
spring.ai.mcp.server.enabled=true
spring.ai.mcp.server.name=product-inventory-mcp-server
spring.ai.mcp.server.stdio=true
spring.ai.mcp.server.capabilities.tool=true
重要提示:
- Web服务器已禁用 (
spring.main.web-application-type=none)-MCP使用STDIO,而不是HTTP - 日志记录已禁用 -任何控制台输出都会破坏MCP JSON协议
- H2内存数据库 -每次重启时数据重置
示例数据
服务器从4个类别的10个示例产品开始:
| 类别 | 产品 |
|---|---|
| 电子产品 | 笔记本电脑(999.99美元)、无线鼠标(29.99美元)、机械键盘(89.99美元) |
| 书籍 | 《Spring in Action》(45.99美元),《Clean Code》(39.99美元) |
| 服装 | T恤(19.99美元),牛仔裤(59.99美元) |
| 电器 | 咖啡机(79.99美元)、搅拌机(49.99美元)和烤面包机(29.99美元) |
与克劳德的对话示例
配置后,您可以向Claude询问以下问题:
- “你们库存中有什么产品?”
- “给我看看100美元以下的所有电子产品”
- “添加新产品:电子类游戏耳机,79.99美元,有库存25件”
- “将笔记本电脑价格更新为899.99美元”
- “从库存中删除烤面包机”
运作原理
- 克劳德桌面版 将JAR作为子进程启动
- MCP握手:通过STDIO上的JSON实现客户端和服务器交换功能
- 工具发现:Claude看到了可用的工具及其描述
- 工具调用:在适当的时候,Claude会调用带有参数的工具
- 回复:服务器执行操作并将结果返回给Claude
依赖项
- 弹簧靴3.5.6
- Spring AI 1.0.3(MCP服务器入门版)
- Spring数据JPA
- H2数据库
- 龙目
许可证
此作品根据 知识共享署名-非商业4.0国际许可.
贡献
欢迎投稿!请随时提交拉取请求。
