产品订单管理API

一个基于Node.js/Express和TypeScript的API服务器,用于管理产品和订单,并集成了Model Context Protocol (MCP)。

  • by sameerfa
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 sameerfa/mcp-demo-app

使用说明

MCP演示应用程序

一个简单的Node.js/Express API服务器,使用TypeScript管理产品和订单,并集成模型上下文协议(MCP)。

特性

  • 用于产品和订单的RESTful API
  • 承载令牌身份验证
  • 存储在JSON文件中的数据
  • MCP服务器公开产品/订单查询工具
  • TypeScript用于类型安全

项目结构

├── src/
│   ├── server.ts         # Main Express API server
│   ├── mcpServer.ts      # MCP server exposing tools
│   └── data/
│       ├── products.json # Product data
│       └── orders.json   # Order data
├── dist/                 # Compiled JS output
├── package.json          # Project metadata and scripts
├── tsconfig.json         # TypeScript config
└── .gitignore            # Ignored files

入门指南

先决条件

  • Node.js(建议使用v16+)
  • npm

再进行

npm install

构建项目

npm run build

运行API服务器

npm run dev   # For development (with nodemon)
npm start     # For production (after build)

运行MCP服务器

npm run mcp

认证

所有API端点(除 /health)需要不记名代币。有效令牌示例:

  • valid_token_123
  • client_abc_token

将令牌包含在 Authorization 头球

Authorization: Bearer valid_token_123

API终点

健康检查

  • GET /health --退货 { status: 'ok' }

产品

  • GET /products --列出所有产品
  • GET /products/:productId --按ID获取产品

订单

  • GET /orders --列出所有订单(可选按以下条件筛选 customerId)
  • GET /orders/:orderId --按ID获取订单

MCP服务器工具

MCP服务器(src/mcpServer.ts)公开了以下工具:

  • getProductInfo(productId) --获取产品详细信息和相关订单
  • listProducts() --列出所有产品
  • getProductOrders(productId) --获取产品的所有订单
  • searchProducts(query) --按名称或类别搜索产品

示例数据

产品中心(src/data/products.json)

[
  { "id": "p1", "name": "Cloud Widget", "category": "Widgets", "price": 99.99 },
  { "id": "p2", "name": "Data Analyzer", "category": "Analytics", "price": 199.99 },
  { "id": "p3", "name": "API Gateway", "category": "Infrastructure", "price": 149.99 }
]

订单(src/data/orders.json)

[
  { "id": "o101", "productId": "p1", "customerId": "cust_abc", "quantity": 2, "orderDate": "2023-10-26T10:00:00Z", "status": "shipped" },
  { "id": "o102", "productId": "p2", "customerId": "cust_xyz", "quantity": 1, "orderDate": "2023-10-27T15:30:00Z", "status": "processing" },
  { "id": "o103", "productId": "p3", "customerId": "cust_abc", "quantity": 3, "orderDate": "2023-10-28T09:15:00Z", "status": "delivered" }
]

开发说明

  • TypeScript配置:请参阅 tsconfig.json
  • 忽略的文件: dist/, node_modules/
  • 数据保存在JSON文件中 src/data/

许可证

麻省理工学院