sameerfa/mcp-demo-app
If you are the rightful owner of mcp-demo-app and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
A simple Node.js/Express API server using TypeScript for managing products and orders, with Model Context Protocol (MCP) integration.
MCP Demo App
A simple Node.js/Express API server using TypeScript for managing products and orders, with Model Context Protocol (MCP) integration.
Features
- RESTful API for products and orders
- Bearer token authentication
- Data stored in JSON files
- MCP server exposing tools for product/order queries
- TypeScript for type safety
Project Structure
āāā 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
Getting Started
Prerequisites
- Node.js (v16+ recommended)
- npm
Install Dependencies
npm install
Build the Project
npm run build
Run the API Server
npm run dev # For development (with nodemon)
npm start # For production (after build)
Run the MCP Server
npm run mcp
Authentication
All API endpoints (except /health) require a Bearer token. Example valid tokens:
valid_token_123client_abc_token
Include the token in the Authorization header:
Authorization: Bearer valid_token_123
API Endpoints
Health Check
GET /healthā Returns{ status: 'ok' }
Products
GET /productsā List all productsGET /products/:productIdā Get product by ID
Orders
GET /ordersā List all orders (optionally filter bycustomerId)GET /orders/:orderIdā Get order by ID
MCP Server Tools
The MCP server (src/mcpServer.ts) exposes the following tools:
getProductInfo(productId)ā Get product details and related orderslistProducts()ā List all productsgetProductOrders(productId)ā Get all orders for a productsearchProducts(query)ā Search products by name or category
Example Data
Products (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 }
]
Orders (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" }
]
Development Notes
- TypeScript config: see
tsconfig.json - Ignored files:
dist/,node_modules/ - Data is persisted in JSON files in
src/data/
License
MIT