产品目录管理服务

Product Catalog MCP Server 是一个基于.NET 8的Web应用程序,实现了用于管理零售产品库存的模型上下文协议(MCP)服务器,为AI助手和其他应用提供标准化的产品数据交互接口。

  • by petender
  • C#
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 petender/demo-mcp-productcatalog

使用说明

产品目录MCP服务器

概述

这 产品目录MCP服务器 是a。NET 8 web应用程序,实现了用于管理零售产品库存的模型上下文协议(MCP)服务器。它为AI助手和其他应用程序提供了一个标准化的接口,通过一组定义良好的工具和API与产品数据进行交互。

该场景提供了一个MCP服务器产品目录后端,可以集成到Copilot Studio(请参阅演示指南说明)或Azure AI Foundry演示中。

此场景是更广泛的Azure演示目录的一部分,可在 培训师演示部署.

什么是MCP(模型上下文协议)?

模型上下文协议是一种标准,使人工智能助手能够安全地与外部数据源和工具连接。该服务器充当人工智能模型和产品库存数据之间的桥梁,允许与产品管理操作进行自然语言交互。

建筑

技术栈

  • 框架:ASP。NET核心8.0
  • 协议:模型上下文协议(MCP)
  • 数据存储:基于JSON文件的存储
  • 语言:启用了可空引用类型的C#

核心组件

  1. 程序cs -应用程序入口点和服务配置
  2. 产品目录工具s.cs -产品操作的MCP工具定义
  3. 产品服务cs -产品管理的业务逻辑
  4. Models.cs -数据模型和DTO
  5. 配置 -服务器配置设置

数据模型

产品由 Product 类具有以下属性:

public class Product
{
    public string Name { get; set; }           // Product name
    public string Description { get; set; }   // Product description  
    public string EAN { get; set; }          // European Article Number (barcode)
    public decimal Cost { get; set; }        // Product price/cost
    public int UnitsInStock { get; set; }    // Current inventory count
    public string Brand { get; set; }        // Product manufacturer/brand
    public List<string> Categories { get; set; } // Product categories/tags
}

特性和功能

核心产品管理

  • ✅ 添加产品的 -在库存中创建新产品
  • ✅ 更新产品 -修改现有产品信息
  • ✅ 删除产品 -从库存中删除产品
  • ✅ 产品列表 -检索目录中的所有产品
  • ✅ 搜索产品 -按名称、描述、EAN、品牌或类别查找产品

库存管理

  • ✅ 库存跟踪 -监控每种产品的库存单位
  • ✅ 股票更新 -修改库存水平
  • ✅ 低库存检测 -识别库存水平低的产品

数据持久层

  • 产品以JSON格式存储在 Data/products.json
  • 基于文件初始化的内存操作
  • 使用锁定机制的线程安全操作

可用的MCP工具

服务器通过MCP协议公开以下工具:

工具名称 描述 参数
ListProducts 退回库存中的所有产品 无
AddProduct 添加新产品 名称、描述、ean、成本、单位库存、品牌?,类别?
UpdateProduct 按EAN EAN+可选字段更新现有产品
UpdateStock 更新库存数量 ean,newStock
RemoveProduct 按EAN EAN删除产品
SearchProducts 按术语搜索产品 searchTerm
GetLowStockProducts 获取低于阈值 阈值的产品

工具详细信息

产品列表

返回库存中所有产品的完整列表。

添加产品

将新产品添加到库存中。要求:

  • name(string):产品名称
  • description(string):产品描述
  • Ean(string):Ean条形码
  • 成本(小数):产品成本
  • unitsInStock(int):库存数量
  • brand(字符串,可选):产品品牌
  • 类别(字符串,可选):逗号分隔的类别

更新产品

通过EAN更新现有产品。可选参数:

  • 名称、描述、成本、品牌、类别

更新库存

按EAN更新特定产品的库存数量。

移除产品

通过EAN从库存中删除产品。

搜索产品

使用与名称、描述、EAN、品牌或类别匹配的搜索词搜索产品。

GetLowstock产品

返回库存水平低于指定阈值(默认值: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[📄 Built artifacts...]
    
    Root --> Obj[📁 obj]
    Obj --> Debug2[📁 Debug]
    Debug2 --> Net80Obj[📁 net8.0]
    Net80Obj --> BuildFiles[📄 Build files...]

    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 Server Application"
        Entry[Program.cs<br/>Entry Point] --> MCPTools[ProductCatalogTools<br/>MCP Tools]
        Entry --> BusinessLogic[ProductService<br/>Business Logic]
        MCPTools --> BusinessLogic
        
        DataModels[Models.cs<br/>Data Models] --> MCPTools
        DataModels --> BusinessLogic
        
        AppConfig[Configuration<br/>Settings] --> Entry
        DataStore[products.json<br/>Data Store] --> BusinessLogic
    end
    
    subgraph "Infrastructure"
        IaC[bicep templates<br/>IaC] --> Deployment[Azure Deployment]
        Scripts[PowerShell Scripts<br/>Automation] --> Deployment
    end
    
    subgraph "MCP Protocol"
        Assistant[AI Assistant] --> Transport[HTTP Transport]
        Transport --> MCPTools
        MCPTools --> Operations[Product Operations]
        Operations --> Inventory[Inventory Management]
    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

选项1:使用DevTunnel从开发环境本地运行应用程序

要快速简单地进行设置,请使用以下五个基本命令:

1.运行.NET应用程序

在您最喜欢的终端/控制台的应用程序文件夹中,执行

dotnet run

该应用程序在以下时间启动 http://Localhost:47002

2.运行DevTunnel,将本地运行的应用程序暴露给公共URL/端点:

1.登录DevTunnel

devtunnel user login

它的作用: 使用您的Microsoft帐户通过DevTunnel服务对您进行身份验证。在创建或管理隧道之前,这是必需的。

2.创建隧道

devtunnel create product-catalog-mcp -a --host-header unchanged

它的作用:

  • 创建一个名为的新隧道 product-catalog-mcp
  • -a 标志使隧道可供任何人访问(匿名访问)
  • --host-header unchanged 保留原始主机标头,这对于依赖于特定主机值的应用程序很重要

3.创建端口映射

devtunnel port create product-catalog-mcp -p 47002

它的作用: 为创建端口映射 product-catalog-mcp 隧道,将流量转发到本地端口 47002 产品目录MCP服务器正在运行。

4.启动隧道

devtunnel host product-catalog-mcp

它的作用: 开始托管 product-catalog-mcp 隧道,使您的本地应用程序可以通过公共URL访问。此命令将显示您可以从任何地方访问产品目录MCP服务器的公共URL。

注: 保持终端窗口 devtunnel host product-catalog-mcp 当你需要激活隧道时打开。在启动隧道之前,请确保您的产品目录MCP服务器正在端口47002上运行。

选项2:将应用程序部署到Azure应用程序服务

⬇️ 安装

🚀 分4个步骤部署场景:

  1. 在您的计算机上创建一个新文件夹。
mkdir -p petender/demo-mcp-productcatalog
  1. 接下来,导航到新文件夹。
cd petender/demo-mcp-productcatalog
  1. 接下来,运行 azd init 以初始化部署。
azd init -t petender/demo-mcp-productcatalog
  1. 最后,跑 azd up 以触发实际部署。
azd up

⏩ 注意:您可以通过删除资源组或运行以下命令从Azure门户中删除已部署的场景 azd down 从启动的文件夹中。

关闭

该MCP服务器为人工智能驱动的产品管理应用程序提供了坚实的基础,同时保持了其核心操作的简单性和可靠性。