Skip to content

Conversation

@bahmad503
Copy link

Summary

I added a new Shopify adapter sample (mock) in Python that exposes a UCP-like shopping API, plus an MCP server that lets agent clients (e.g., Claude Desktop) interact with the adapter as tools.

This is a mock implementation (in-memory + mock catalog) so contributors can validate the end-to-end flow without Shopify credentials.

What’s included

UCP-like REST adapter (mock)

Path: adapters/shopify/python/

  • Discovery profile: GET /.well-known/ucp
  • Catalog:
    • GET /products
    • GET /products/{id}
  • Checkout sessions:
    • POST /checkout-sessions
    • GET /checkout-sessions/{id}
    • PUT /checkout-sessions/{id} (shipping destination + option selection)
    • POST /checkout-sessions/{id}/complete (mock payment token)
  • Orders:
    • GET /orders/{id}
  • Testing:
    • POST /testing/simulate-shipping/{id} (requires Simulation-Secret)

Extras:

  • Basic idempotency-key handling:
    • same key + same payload ⇒ returns the original response
    • same key + different payload ⇒ 409 IDEMPOTENCY_CONFLICT

MCP server

Path: adapters/shopify/python/mcp/

  • Exposes adapter functionality as tools:
    • discovery_profile, list_products, get_product
    • create_checkout, set_shipping, complete_checkout
    • get_order, simulate_shipping
  • Designed to target the running adapter via ADAPTER_BASE_URL (default: http://127.0.0.1:8183).

How to run (quick start)

1) Run the adapter

cd adapters/shopify/python
python -m venv .venv
source .venv/bin/activate
pip install -e .
ucp-shopify-adapter

2) Run the MCP server (separate terminal)
cd adapters/shopify/python/mcp
python -m venv .venv
source .venv/bin/activate
pip install -e .
ADAPTER_BASE_URL=http://127.0.0.1:8183 ucp-shopify-adapter-mcp

@bahmad503 bahmad503 requested a review from a team January 12, 2026 02:53
@bahmad503
Copy link
Author

Hi maintainers I’d appreciate feedback on (1) whether the adapter should live under adapters/ or another directory, and (2) whether the exposed MCP tools match what you’d want as a canonical “agent shopping” interface. The implementation is mock/in-memory by design so anyone can run it without Shopify tokens.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant