项目简介

"超市管理MCP服务器" 是一个基于 .NET 9.0+ 构建的后端应用,它以双模式运行:既可以作为传统的Web API (RESTful) 服务器提供数据服务,也可以作为符合Model Context Protocol (MCP) 标准的服务器,向大型语言模型(LLM)客户端(如Claude Desktop)提供上下文信息和可调用的功能(工具)。它支持插件架构,当前包含超市管理(基于SQL Server)和GK API集成(基于MongoDB)两个核心插件,提供了丰富的库存、销售、收入、类别分析及预测功能。

主要功能点

  • 双模式操作: 可选择作为Web API (REST) 服务器或作为MCP工具提供者运行,实现灵活部署。
  • 插件化架构: 支持扩展,允许轻松添加新的数据源和功能插件,增强系统的可定制性。
  • 超市管理工具: 提供全面的业务查询功能,包括获取所有产品信息、指定日期范围内的销售数据、总收入、库存低于阈值的产品、按类别统计销售额、实时库存状态、每日销售摘要、详细库存、未来需求预测、潜在缺货风险分析、商品季节性销售趋势以及智能补货建议。
  • GK API集成工具: 针对MongoDB数据源,提供获取无基础项价格、最新处理统计、内容类型摘要以及通过名称或内容键(自动补零)查找文章等高级数据分析功能。
  • LLM集成: 通过MCP协议将上述所有工具暴露给大型语言模型,使LLM能够理解并调用这些工具,从而通过自然语言查询和操作业务数据。
  • Azure AI服务集成: 支持将MCP工具的元数据索引到Azure Search,为LLM提供更高效的工具发现能力,并集成Azure OpenAI进行AI对话服务(需额外配置相关Azure服务凭据)。

安装步骤

  1. 先决条件:
    • .NET 9.0+ SDK (推荐安装最新版本)
    • SQL Server 2014+ (用于超市插件的数据存储)
    • MongoDB 4.0+ (用于GkApi插件的数据存储,可选安装)
    • Node.js (可选,用于MCP Inspector等辅助工具)
  2. 数据库设置:
    • 运行仓库根目录下的 'Database/SetupDatabase.sql' 脚本,这将创建所需的SQL Server数据库表并填充示例数据。
  3. 配置连接字符串:
    • 编辑项目根目录下的 'appsettings.json' 文件,更新 'ConnectionStrings:DefaultConnection' 为您的SQL Server连接字符串。
    • MongoDB 连接默认指向 'mongodb://localhost:27017/GkApi',如果您的MongoDB部署在其他位置或需要认证,您需要修改代码中的 'Plugins/GkApi/Services/GkApiDataService.cs' 文件中的连接字符串。
  4. 构建项目: 打开命令行工具(如PowerShell, Bash),导航到项目根目录,然后执行:
    dotnet build
  5. 运行项目:
    • Web API 模式:
      dotnet run --webapi
      服务器将在 'http://localhost:5000' 启动(如果 'appsettings.json' 中未配置其他URL)。您可以通过访问 'http://localhost:5000/swagger' 查看API文档。
    • MCP 工具提供者模式 (控制台模式):
      dotnet run
      此时,服务器将作为MCP服务器运行,通过标准输入输出(Stdio)进行JSON-RPC通信,等待LLM客户端连接。

服务器配置 (MCP客户端使用)

为了将此MCP服务器与LLM客户端(如Claude Desktop)集成,您需要配置客户端指向此服务器的可执行命令。以下是一个示例配置,您应根据您的实际环境修改项目路径。

MCP客户端配置示例 (例如 'claude_desktop_config.json' 文件内容):

{
  "mcpServers": {
    "supermarket": {
      "command": "dotnet",
      "args": [
        "run",
        "--project",
        "/path/to/your/McpServer", 
        "--no-build"
      ],
      "description": "提供超市库存、销售和分析工具,支持预测和补货推荐。",
      "iconUrl": "https://example.com/supermarket_icon.png" 
    },
    "gkapi": {
      "command": "dotnet",
      "args": [
        "run",
        "--project",
        "/path/to/your/McpServer", 
        "--no-build"
      ],
      "description": "提供GK API数据操作工具,用于查询文章价格和统计信息。",
      "iconUrl": "https://example.com/gkapi_icon.png" 
    }
  }
}

配置说明:

  • '"supermarket"' 和 '"gkapi"' 是您可以为每个插件定义的服务器名称,LLM客户端将使用这些名称来识别不同的功能集。
  • '"command"': 启动MCP服务器的命令。如果您的'.NET'项目已编译成可执行文件,这里可以是可执行文件的路径(例如 './McpServer'),否则通常是 'dotnet'。
  • '"args"': 传递给命令的参数列表。
    • '"run"': 指示 'dotnet' 运行项目。
    • '"--project", "/path/to/your/McpServer"': 指定 'McpServer' 项目的本地路径。请务必将 '/path/to/your/McpServer' 替换为您的实际本地路径(例如 'C:\Users\YourUser\Projects\McpServer' 或 '/home/youruser/McpServer')。
    • '"--no-build"': 这是一个优化参数,避免在每次启动时重新构建项目,提高效率。
  • 重要提示: 在MCP客户端配置中,请确保 'args' 参数不包含 '--webapi',以便服务器以MCP模式启动。
  • '"description"' 和 '"iconUrl"' 字段是可选的,用于在LLM客户端界面中提供更好的展示和说明。

基本使用方法 (与LLM客户端集成)

  1. 启动MCP服务器: 在命令行中运行 'dotnet run' (不带 '--webapi' 参数) 启动服务器。服务器会等待MCP客户端连接。
  2. 配置LLM客户端: 根据上述“MCP客户端配置示例”修改您的LLM客户端(例如Claude Desktop)的配置文件。通常该文件位于类似 'C:\Users<YourUsername>\AppData\Roaming\Claude' 的路径。
  3. 重启LLM客户端: 完成配置后,重启您的LLM客户端以加载新的MCP服务器配置。
  4. 开始交互: 现在,您可以通过自然语言与LLM客户端进行交互,LLM将能够识别并调用您的MCP服务器提供的工具来回答问题、获取数据或执行任务。例如,您可以问:“列出所有商品”、“查询今年1月的销售数据”、“告诉我库存不足的产品有哪些”或“预测下周牛奶的需求量”。

信息

分类

商业系统