返回市场
演示-MCP产品目录

演示-MCP产品目录

作者:petender3 星标更新:2025-11-23

项目介绍

产品目录 MCP 服务器

概述

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

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

模型上下文协议是一个标准,允许 AI 助手安全地连接到外部数据源和工具。此服务器充当 AI 模型与产品库存数据之间的桥梁,使得可以通过自然语言与产品管理操作进行交互。

架构

技术栈

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

核心组件

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

数据模型

产品由 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; } // 产品类别/标签
}

特性与能力

核心产品管理

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

库存管理

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

数据持久化

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

可用的 MCP 工具

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

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

工具详情

ListProducts

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

AddProduct

向库存中添加新产品。需要:

  • 名称(字符串):产品名称
  • 描述(字符串):产品描述
  • ean(字符串):EAN 条形码
  • 成本(十进制):产品成本
  • unitsInStock(整数):库存数量
  • 品牌(字符串,可选):产品品牌
  • 类别(字符串,可选):逗号分隔的类别

UpdateProduct

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

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

UpdateStock

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

RemoveProduct

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

SearchProducts

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

GetLowStockProducts

返回库存水平低于指定阈值的产品(默认: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

基础设置 / 运行应用程序命令

为了快速简单的设置,请使用这五个基本命令:

1. 运行 dotnet 应用

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

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,即 Product Catalog MCP 服务器正在运行的地方。

4. 启动隧道

devtunnel host product-catalog-mcp

作用:启动 product-catalog-mcp 隧道的托管,使您的本地应用程序可通过公共 URL 访问。此命令将显示您可以用来从任何地方访问您的 Product Catalog MCP 服务器的公共 URL。

注意:在需要隧道处于活动状态时,请保持运行 devtunnel host product-catalog-mcp 的终端窗口打开。确保您的 Product Catalog MCP 服务器在启动隧道之前已在端口 47002 上运行。

结束语

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