产品目录 MCP 服务器 是一个使用 .NET 8 构建的 Web 应用程序,实现了模型上下文协议(MCP)服务器,用于管理零售产品的库存。它提供了一个标准化接口,使 AI 助手和其他应用程序能够通过一组定义良好的工具和 API 来与产品数据进行交互。
模型上下文协议是一个标准,允许 AI 助手安全地连接到外部数据源和工具。此服务器充当 AI 模型与产品库存数据之间的桥梁,使得可以通过自然语言与产品管理操作进行交互。
产品由 Product 类表示,具有以下属性:
public class Product
{
public string Name { get; set; } // 产品名称
public string Description { get; set; } // 产品描述
public string EAN { get; set; } // 欧洲商品编号(条形码)
public decimal Cost { get; set; } // 产品价格/成本
public int UnitsInStock { get; set; } // 当前库存数量
public string Brand { get; set; } // 产品制造商/品牌
public List<string> Categories { get; set; } // 产品类别/标签
}
Data/products.json 中服务器通过 MCP 协议公开了以下工具:
| 工具名称 | 描述 | 参数 |
|---|---|---|
ListProducts | 返回库存中的所有产品 | 无 |
AddProduct | 添加新产品 | 名称、描述、ean、成本、unitsInStock、品牌?、类别? |
UpdateProduct | 通过 EAN 更新现有产品 | ean + 需要更新的可选字段 |
UpdateStock | 更新库存数量 | ean、newStock |
RemoveProduct | 通过 EAN 删除产品 | e |
SearchProducts | 通过术语搜索产品 | 搜索术语 |
GetLowStockProducts | 获取低于阈值的产品 | 阈值 |
返回库存中所有产品的完整列表。
向库存中添加新产品。需要:
通过 EAN 更新现有产品。可选参数:
通过 EAN 更新特定产品的库存数量。
通过 EAN 从库存中删除产品。
使用匹配名称、描述、EAN、品牌或类别的搜索词来搜索产品。
返回库存水平低于指定阈值的产品(默认:10 个单位)。
graph TD
Root[📁 demo-mcp-productcatalog] --> Program[📄 Program.cs]
Root --> Project[📄 product-catalog-mcp-server.csproj]
Root --> Build[📄 build.ps1]
Root --> ReadMe[📄 README.md]
Root --> AppSettings[📄 appsettings.Development.json]
Root --> Config[📁 Configuration]
Config --> ConfigFile[📄 ProductCatalogMCPServerConfiguration.cs]
Root --> Data[📁 Data]
Data --> Products[📄 products.json]
Root --> Services[📁 Services]
Services --> IService[📄 IProductService.cs]
Services --> Service[📄 ProductService.cs]
Root --> Tools[📁 Tools]
Tools --> Models[📄 Models.cs]
Tools --> MCPTools[📄 ProductCatalogTools.cs]
Root --> Props[📁 Properties]
Props --> Launch[📄 launchSettings.json]
Root --> Infra[📁 infra]
Infra --> DeployPS[📄 deploy.ps1]
Infra --> DeploySH[📄 deploy.sh]
Infra --> Bicep[📄 main.bicep]
Infra --> BicepParam[📄 main.bicepparam]
Infra --> InfraReadMe[📄 README.md]
Root --> Bin[📁 bin]
Bin --> Debug1[📁 Debug]
Debug1 --> Net80[📁 net8.0]
Net80 --> Artifacts[📄 已构建工件...]
Root --> Obj[📁 obj]
Obj --> Debug2[📁 Debug]
Debug2 --> Net80Obj[📁 net8.0]
Net80Obj --> BuildFiles[📄 构建文件...]
style Root fill:#e1f5fe
style Program fill:#fff3e0
style Project fill:#fff3e0
style Config fill:#f3e5f5
style Data fill:#e8f5e8
style Services fill:#fff8e1
style Tools fill:#fce4ec
style Props fill:#f1f8e9
style Infra fill:#e0f2f1
style Bin fill:#f5f5f5
style Obj fill:#f5f5f5
graph LR
subgraph "MCP 服务器应用"
Entry[Program.cs<br/>入口点] --> MCPTools[ProductCatalogTools<br/>MCP 工具]
Entry --> BusinessLogic[ProductService<br/>业务逻辑]
MCPTools --> BusinessLogic
DataModels[Models.cs<br/>数据模型] --> MCPTools
DataModels --> BusinessLogic
AppConfig[Configuration<br/>设置] --> Entry
DataStore[products.json<br/>数据存储] --> BusinessLogic
end
subgraph "基础设施"
IaC[bicep 模板<br/>IaC] --> Deployment[Azure 部署]
Scripts[PowerShell 脚本<br/>自动化] --> Deployment
end
subgraph "MCP 协议"
Assistant[AI 助手] --> Transport[HTTP 传输]
Transport --> MCPTools
MCPTools --> Operations[产品操作]
Operations --> Inventory[库存管理]
end
style Entry fill:#ffeb3b
style MCPTools fill:#4caf50
style BusinessLogic fill:#2196f3
style DataModels fill:#ff9800
style DataStore fill:#9c27b0
style IaC fill:#607d8b
style Assistant fill:#f44336
为了快速简单的设置,请使用这五个基本命令:
在您喜欢的终端/控制台中的应用程序文件夹内执行
dotnet run
该命令启动应用程序于 http://Localhost:47002
devtunnel user login
作用:使用您的 Microsoft 账户验证您与 DevTunnel 服务的身份。这是在您创建或管理隧道之前所需的步骤。
devtunnel create product-catalog-mcp -a --host-header unchanged
作用:
product-catalog-mcp 的隧道-a 标志使隧道对任何人(匿名访问)可用--host-header unchanged 保留原始主机标头,这对于依赖特定主机值的应用程序非常重要devtunnel port create product-catalog-mcp -p 47002
作用:为 product-catalog-mcp 隧道创建端口映射,将流量转发到本地端口 47002,即 Product Catalog MCP 服务器正在运行的地方。
devtunnel host product-catalog-mcp
作用:启动 product-catalog-mcp 隧道的托管,使您的本地应用程序可通过公共 URL 访问。此命令将显示您可以用来从任何地方访问您的 Product Catalog MCP 服务器的公共 URL。
注意:在需要隧道处于活动状态时,请保持运行
devtunnel host product-catalog-mcp的终端窗口打开。确保您的 Product Catalog MCP 服务器在启动隧道之前已在端口 47002 上运行。
此 MCP 服务器为 AI 驱动的产品管理应用程序提供了坚实的基础,同时在其核心操作中保持简单性和可靠性。