Skip to main content

MCP server that exposes UCP shopping capabilities as tools for AI assistants. Let Claude, Cursor, and any MCP-compatible AI shop via the Universal Commerce Protocol.

Project description

ucp-mcp-server

Let AI assistants shop. An MCP server that gives Claude, Cursor, and any MCP-compatible AI the ability to interact with UCP-enabled merchants.

UCP (Universal Commerce Protocol) is Google's new open standard for agentic commerce, backed by Shopify, Stripe, Visa, Mastercard, Target, Walmart, and 20+ partners.

MCP (Model Context Protocol) is the standard for giving AI assistants access to tools.

This project connects them.


What Can It Do?

Tool Description
ucp_discover Find out what a merchant supports (capabilities, payment methods)
ucp_checkout_create Start a purchase (add items to cart, set buyer info)
ucp_checkout_update Apply discount codes to an existing checkout

Your AI assistant gets structured, type-safe access to the entire UCP shopping flow. No scraping, no browser automation, no brittle hacks.

Quick Start

Install

pip install ucp-mcp-server

Or with uv:

uv pip install ucp-mcp-server

Use with Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "ucp-shopping": {
      "command": "ucp-mcp-server"
    }
  }
}

Use with Cursor

Add to your .cursor/mcp.json:

{
  "mcpServers": {
    "ucp-shopping": {
      "command": "ucp-mcp-server"
    }
  }
}

Run Directly

# As a module
python -m ucp_mcp_server

# Or via the entry point
ucp-mcp-server

Tools Reference

ucp_discover

Discover what a UCP merchant supports before shopping.

Arguments:
  merchant_url (str): Base URL of a UCP-enabled merchant

Returns:
  capabilities: List of supported UCP capabilities (checkout, discount, fulfillment)
  payment_handlers: Accepted payment methods (Shop Pay, Google Pay, etc.)
  ucp_version: Protocol version the merchant implements

ucp_checkout_create

Create a new shopping cart / checkout session.

Arguments:
  merchant_url (str): Base URL of the merchant
  items (list): Items to buy, each with "id" and "quantity"
  buyer_name (str): Full name of the buyer
  buyer_email (str): Email address
  currency (str): Currency code (default: "USD")

Returns:
  checkout_id: Session ID for tracking this purchase
  status: Current checkout status
  total: Total price in smallest currency unit (cents)
  subtotal: Subtotal before discounts
  line_items: What's in the cart

ucp_checkout_update

Apply discount codes or modify an existing checkout.

Arguments:
  merchant_url (str): Base URL of the merchant
  checkout_id (str): The checkout session to update
  discount_codes (list[str]): Promo codes to apply

Returns:
  checkout_id: Session ID
  total: Updated total after discounts
  discount_applied: How much was saved
  discounts: Details of applied discounts

Example Conversation

You: "Find out what the flower shop at http://flowers.example.com supports"

Claude: calls ucp_discover "This merchant supports checkout, discounts, and fulfillment tracking. They accept Shop Pay and Google Pay."

You: "Buy 2 bouquets of roses for me"

Claude: calls ucp_checkout_create "I've created a checkout for 2 Bouquet of Red Roses. Total: $70.00. Would you like to proceed?"

You: "Try the code 10OFF first"

Claude: calls ucp_checkout_update "Applied 10OFF - saved $7.00! New total: $63.00."

Why This Exists

Every AI app is going to need shopping capabilities. UCP standardizes how merchants expose commerce APIs. MCP standardizes how AI assistants use tools. This project is the bridge.

Without this, connecting AI to commerce means:

  • Scraping websites (brittle, breaks constantly)
  • Building custom integrations per merchant (doesn't scale)
  • Browser automation (slow, unreliable, expensive)

With UCP + MCP:

  • One protocol, every merchant
  • Structured data in, structured data out
  • Works with any MCP-compatible AI assistant

Development

# Clone the repo
git clone https://github.com/nguthrie/ucp-mcp-server.git
cd ucp-mcp-server

# Install dependencies
uv sync --extra dev

# Run tests
uv run pytest -v

# Run integration tests (requires a live UCP server on port 8182)
uv run pytest -v -m integration --run-integration

Project Structure

ucp-mcp-server/
├── src/ucp_mcp_server/
│   ├── __init__.py        # Package version
│   ├── __main__.py        # python -m entry point
│   ├── server.py          # MCP server + tool definitions
│   ├── ucp_client.py      # HTTP client for UCP APIs
│   └── models.py          # Pydantic models for UCP data
└── tests/
    ├── conftest.py         # Test fixtures with mock UCP responses
    ├── test_discovery.py   # Discovery tool tests
    ├── test_checkout.py    # Checkout tool tests
    ├── test_errors.py      # Error handling tests
    └── test_integration.py # Live server integration tests

Roadmap

  • Merchant capability discovery
  • Checkout session creation
  • Discount code application
  • Purchase completion / payment submission
  • Order fulfillment tracking
  • Returns and exchanges
  • Multi-merchant comparison shopping
  • Hosted managed version (so you don't have to self-host)

Resources

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ucp_mcp_server-0.1.0.tar.gz (12.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ucp_mcp_server-0.1.0-py3-none-any.whl (9.2 kB view details)

Uploaded Python 3

File details

Details for the file ucp_mcp_server-0.1.0.tar.gz.

File metadata

  • Download URL: ucp_mcp_server-0.1.0.tar.gz
  • Upload date:
  • Size: 12.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ucp_mcp_server-0.1.0.tar.gz
Algorithm Hash digest
SHA256 bfb1f7293c6c1dc301053be0411b5a0d4a475512ab2d0d21817c99960a09b099
MD5 f2145247426c352fa74ad0fa597a05e6
BLAKE2b-256 4b9757e467891d735fc939fcdd27a51c9ce841678c6551ccf39d49e6f99bb582

See more details on using hashes here.

Provenance

The following attestation bundles were made for ucp_mcp_server-0.1.0.tar.gz:

Publisher: publish.yml on nguthrie/ucp-mcp-server

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ucp_mcp_server-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: ucp_mcp_server-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 9.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ucp_mcp_server-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 189a71fa454fade0d915fae0fda34a43b6ece06974fa51adae13f5ae88b19f55
MD5 5c6105831d7464bfb26fb1a6e8bd0c1f
BLAKE2b-256 f38e8686b1e1cd24c35cd742e9ccac7e79ff2c1b0ab8769bb611a89325fd015e

See more details on using hashes here.

Provenance

The following attestation bundles were made for ucp_mcp_server-0.1.0-py3-none-any.whl:

Publisher: publish.yml on nguthrie/ucp-mcp-server

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page