luke-nielsen

walmart-mcp

Community luke-nielsen
Updated

TypeScript Walmart API client and MCP server — wraps the Walmart Marketplace (seller) and Affiliate/Catalog (consumer) APIs behind one client, with OAuth and RSA-signature auth handled for you.

walmart-mcp

A TypeScript Walmart API client, delivered as an MCP server (stdio) with a reusable SDKunderneath. It wraps two Walmart APIs behind one client:

  • Marketplace (seller) — manage your Walmart Marketplace catalog: items, inventory, prices,and orders. OAuth 2.0.
  • Affiliate / Catalog (consumer) — search the public Walmart catalog: product search,lookup, taxonomy, trending, reviews, and store locator. Read-only, RSA-signature auth.

Configure either or both surfaces. Tools register only for the surfaces you've configured.

Why this one

  • Importable SDK, not just a server. client/ + api/ are a standalone, fully unit-testedWalmart SDK with zero MCP knowledgeimport { WalmartSdk } and use it in any Nodeproject. The MCP server is a thin wrapper.
  • Minimal footprint. Two runtime deps total (@modelcontextprotocol/sdk + zod). RSAsigning and correlation UUIDs use Node's built-in crypto; .env is loaded via --env-file,no dotenv/node-rsa/uuid.
  • Two auth schemes done right. Marketplace's OAuth token is cached and auto-refreshed on401; the Affiliate signature is regenerated (with a fresh timestamp) on every request.
  • Curated outputs. Search/list tools return compact, schema-validated structuredContentinstead of raw, deeply-nested Walmart payloads, so agents don't shell out to parse JSON.

Which surface do I want?

You are… Use Credentials from Auth
A Walmart seller managing your listings/orders Marketplace developer.walmart.com → API Key Management OAuth 2.0 (Client ID + Secret)
An affiliate / app reading the public catalog Affiliate walmart.io (program approval required) RSA signature (Consumer ID + private key)

Setup

1. Install & build

npm install
npm run build

2. Configure credentials

cp .env.example .env   # then fill in whichever surface(s) you use
# Marketplace (seller)
WALMART_CLIENT_ID=...
WALMART_CLIENT_SECRET=...

# Affiliate / Catalog (consumer)
WALMART_CONSUMER_ID=...
WALMART_PRIVATE_KEY=...        # single-line Base64 PKCS#8 from the portal (or a full PEM)
WALMART_KEY_VERSION=1

The server reads credentials from its environment; it does not auto-load .env. Your MCPclient supplies them via the config env block (step 4). For the CLI and standalone runs,Node's --env-file=.env loads them (the npm run check / npm start scripts do this).

Notes:

  • Private key handling. WALMART_PRIVATE_KEY accepts the single-line Base64 key theWalmart.io portal issues, or a full -----BEGIN PRIVATE KEY----- PEM. It's never logged. Thematching public key is uploaded to the portal; WALMART_KEY_VERSION is shown next to it.
  • Marketplace tokens are short-lived (~15 min) and cached in your OS data dir($XDG_DATA_HOME/walmart-mcp on Unix, %APPDATA%\walmart-mcp on Windows; files chmod 0600),then auto-refreshed on use.

3. Validate (optional but recommended)

npm run check

Mints a Marketplace token (proves CLIENT_ID/SECRET) and signs a live Affiliate request (provesCONSUMER_ID + private key), skipping whichever surface you didn't configure. Expected output:

Marketplace  validating OAuth client credentials… OK
Affiliate    signing a taxonomy request… OK
✅ Configured surfaces validated. The MCP server reuses these same credentials.

4. Register with your MCP client

{
  "mcpServers": {
    "walmart": {
      "command": "node",
      "args": ["/absolute/path/to/walmart-mcp/dist/mcp/server.js"],
      "env": {
        "WALMART_CLIENT_ID": "...",
        "WALMART_CLIENT_SECRET": "...",
        "WALMART_CONSUMER_ID": "...",
        "WALMART_PRIVATE_KEY": "...",
        "WALMART_KEY_VERSION": "1"
      }
    }
  }
}

5. Run

Your MCP client launches node dist/mcp/server.js, injects the env vars, and the serverregisters the tools for each configured surface. (To run standalone for testing: npm start.)

Tools

Affiliate / Catalog (read-only)

Tool Purpose
affiliate_search Full-text catalog search (compact results)
affiliate_product_lookup Look up products by item id(s), UPC, or GTIN
affiliate_taxonomy The catalog category tree
affiliate_trending Currently trending products
affiliate_reviews Customer reviews for a product
affiliate_stores Walmart stores near a lat/long, city, or ZIP

Marketplace (seller)

Tool Auth Purpose
mp_get_items OAuth List your catalog (compact, cursor-paginated)
mp_get_item OAuth One catalog item by SKU
mp_get_inventory OAuth A SKU's on-hand inventory
mp_update_inventory OAuth Write: set a SKU's available quantity
mp_update_price OAuth Write: update a SKU's price
mp_get_orders OAuth List orders by date/status (compact, cursor-paginated)
mp_get_order OAuth One order by purchaseOrderId
mp_acknowledge_order OAuth Write: acknowledge an order (required before shipping)

Search/list tools return compact, structured results (structuredContent validated by anoutput schema) — just the fields the workflow needs — rather than the raw, deeply-nested Walmartpayload.

Troubleshooting

Symptom Cause / fix
Server logs "No Walmart credentials found" Neither surface configured. Fill the config env block (MCP) or .env (standalone).
A tool returns "… credentials are not configured" That surface's env vars are missing; the other surface still works.
401 / token errors on Marketplace Client ID/Secret wrong or revoked. Re-check with npm run check. The client already refreshes a normal expiry automatically.
401 / signature errors on Affiliate Wrong Consumer ID, key version, or private key; or large clock skew (timestamp TTL ≈ 180s). Verify with npm run check.
"Could not parse the affiliate private key" WALMART_PRIVATE_KEY isn't the Base64 PKCS#8 portal key or a valid PEM.
MCP server won't start / behaves like old code dist/ is missing or stale — the MCP launch runs the built file and does not auto-build. Run npm run build.
--env-file=.env errors with ENOENT .env doesn't exist. cp .env.example .env and fill it in.

Development

npm test         # vitest (fetch mocked, throwaway RSA keypair) — no credentials needed
npm run typecheck
npm run build    # also runs on install (prepare) and before start/check

Architecture

src/
  client/   WalmartClient, marketplaceAuth (OAuth), affiliateAuth + signature (RSA),
            tokenStore, correlation, errors
  api/      marketplace/{items,inventory,prices,orders}, affiliate/catalog   (zero MCP knowledge)
  types/    request/response shapes
  mcp/      server.ts (stdio) + config.ts + tools.ts + format.ts
  sdk.ts    WalmartSdk facade

The client/ + api/ layers are a standalone SDK, fully unit-tested with fetch mocked;mcp/ is a thin wrapper. Import the SDK directly via the package root (WalmartSdk).

MCP Server · Populars

MCP Server · New

    ihuzaifashoukat

    x-use

    Browser-native AI agents for X (Twitter): multi-account, MCP-ready, no X API key required.

    Community ihuzaifashoukat
    hongnoul

    hwatu

    Visual verification browser for AI coding agents: daemon-based WebKitGTK, real rendering, ~13ms window spawn

    Community hongnoul
    SeanFDZ

    AgentBridge

    Let AI agents control Classic Mac OS through a shared folder protocol.

    Community SeanFDZ
    livecontext-ai

    LiveContext

    The AI automation platform, self-hosted. Describe the job in chat and LiveContext builds it: readable workflows, scoped AI agents, and small apps your team uses. Chat, Workflow, Agent and App on one canvas.

    Community livecontext-ai
    timescale

    rsigma

    A complete Sigma detection engineering toolkit: parser, linter, evaluator, correlation engine, conversion framework, streaming daemon, MCP and LSP servers :crab:

    Community timescale