products-mcp-server

products-mcp-server

Exposes 27 product tools (CRUD, search, stats, recommendations) backed by fakestoreapi.com, deployable via stdio, HTTP, or serverless.

Category
Visit Server

README

products-mcp-server

A custom Model Context Protocol (MCP) server exposing 27 product tools backed by fakestoreapi.com.

It runs three ways from the same code:

  • Local (stdio) — for Cursor / Claude Desktop, via src/index.ts → dist/index.js.
  • Render (persistent HTTP) — a long-running Streamable HTTP server, via src/http.ts → dist/http.js.
  • Vercel (serverless HTTP) — a stateless Streamable HTTP function, via api/mcp.ts.

Architecture

src/
  products-api.ts   # Fake Store API client (endpoints + 60s TTL cache)
  tools.ts          # registerTools(server): all 27 tools (shared)
  server.ts         # createServer(): builds a configured server (shared)
  index.ts          # stdio entry point (local)
  http.ts           # persistent HTTP entry point (Render) — listens on $PORT
api/
  mcp.ts            # Vercel serverless entry point (stateless Streamable HTTP)
render.yaml         # Render blueprint (web service)
vercel.json         # Vercel function config

All entry points call createServer(), so the tool set stays identical across transports.

Tools

# Tool Description
1 getProducts All products (optional limit, sort).
2 getProductById One product by id.
3 getCategories List of categories.
4 getProductsByCategory Products in a category (optional limit).
5 searchProducts Keyword search over title + description.
6 getProductsByPriceRange Products within [min, max].
7 getProductsAbovePrice Products costing more than price.
8 getProductsBelowPrice Products costing less than price.
9 getCheapestProduct Single cheapest product.
10 getMostExpensiveProduct Single most expensive product.
11 getTopRatedProducts Sorted by rating (optional limit).
12 getMostReviewedProducts Sorted by review count (optional limit).
13 getProductsByMinRating Products with rating >= minRating.
14 getPriceStats count / min / max / average / median / total.
15 getCategoryStats Per-category price stats.
16 countProducts Total count (optional category).
17 listProductTitles Lightweight id + title list.
18 getRandomProduct A random product.
19 compareProducts Compare 2–10 products by ids.
20 getProductRecommendations Same-category picks for an id.
21 getDiscountedPrice Price after discountPercent.
22 summarizeCatalog High-level catalog summary.
23 getCheapestInCategory Cheapest within a category.
24 getHighestRatedInCategory Highest-rated within a category.
25 createProduct Create a product (simulated by the API).
26 updateProduct Update a product (simulated).
27 deleteProduct Delete a product (simulated).

Note: fakestoreapi.com simulates write operations (create/update/delete) and does not persist them.

Local development

npm install
npm run build       # tsc: src -> dist
npm run typecheck   # type-checks src + api
npm start           # runs the stdio server

Use locally in Cursor (~/.cursor/mcp.json)

{
  "mcpServers": {
    "products": {
      "command": "node",
      "args": ["c:/Users/serch/OneDrive/Desktop/MCP-Servers/products-mcp-server/dist/index.js"]
    }
  }
}

Re-run npm run build after changing the TypeScript, since Cursor runs the compiled dist/index.js.

To run the HTTP server locally (same one Render uses):

npm run build
npm run start:http          # listens on http://localhost:3000/mcp
# health check: curl http://localhost:3000/healthz

Deploy to Render

Render runs a persistent Node process (via src/http.ts), which suits MCP well and avoids serverless cold starts / timeouts.

Option A — Blueprint (recommended)

The repo includes render.yaml:

services:
  - type: web
    name: products-mcp-server
    runtime: node
    plan: free
    buildCommand: npm install && npm run build
    startCommand: npm run start:http
    healthCheckPath: /healthz
  1. Push this folder to a Git repo.
  2. In Render: New → Blueprint, select the repo. Render reads render.yaml and creates the web service.
  3. Deploy. Your endpoint will be:
https://<your-service>.onrender.com/mcp

Option B — Manual web service

New → Web Service → connect the repo, then set:

  • Runtime: Node
  • Build Command: npm install && npm run build
  • Start Command: npm run start:http
  • Health Check Path: /healthz

Connect a client to the Render server

{
  "mcpServers": {
    "products": { "url": "https://<your-service>.onrender.com/mcp" }
  }
}

For stdio-only clients, bridge with mcp-remote:

{
  "mcpServers": {
    "products": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://<your-service>.onrender.com/mcp"]
    }
  }
}

Notes

  • The server binds to process.env.PORT (Render sets this automatically). The MCP path defaults to /mcp and can be overridden with the MCP_PATH env var.
  • Render's free web services sleep after inactivity; the first request after idle may be slow to wake.
  • The deployed URL is public — add authentication before exposing sensitive tools.

Deploy to Vercel

The api/mcp.ts function serves the MCP server over Streamable HTTP in stateless mode (a fresh server per request — no Redis required).

  1. Push this folder to a Git repo and import it in Vercel (or run npx vercel).
  2. Vercel compiles api/mcp.ts automatically; no build step is required for the function.
  3. After deploy, your endpoint is:
https://<your-project>.vercel.app/api/mcp

Connect a client to the deployed server

If the client supports Streamable HTTP (e.g. recent Cursor):

{
  "mcpServers": {
    "products": { "url": "https://<your-project>.vercel.app/api/mcp" }
  }
}

For stdio-only clients, bridge with mcp-remote:

{
  "mcpServers": {
    "products": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://<your-project>.vercel.app/api/mcp"]
    }
  }
}

Notes & limits

  • Stateless: each request is self-contained. If you later need SSE streaming / persistent sessions across instances, add Upstash Redis and enable Vercel Fluid Compute.
  • Timeout: vercel.json sets maxDuration: 60; each tool also has a 10s upstream-fetch abort guard.
  • Auth: the deployed URL is public. Add authentication before exposing sensitive tools.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured