# gmc-mcp

Connects an MCP client to Google Merchant Center so an agent can manage products, feeds and reports through Merchant API v1.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 19
- Author: kiwoongeom
- License: MIT · policy=link-only · description only; the file stays with the author
- Source: https://github.com/kiwoongeom/gmc-mcp
- Updated: 2026-05-02
- HTML: https://affpapa.org/en/nevibecode/mcp/gmc-mcp

## What it does

gmc-mcp gives an MCP client access to Google Merchant Center. An agent can inspect or change products and inventory, manage feeds and promotions, review account issues, and run reports. The package provides 126 tools for Merchant API v1.

Writes are logged with snapshots of previous values. A dry-run setting is available, while destructive bulk actions need an explicit confirmation. Claude Code setup requires `GMC_ACCOUNT_ID`, `GMC_SERVICE_ACCOUNT_KEY` and `GMC_OAUTH_TOKEN`; without those credentials the server cannot access the account. It runs through `uvx gmc-mcp`.

## Requirements
- Needs: Python and uv (commands run via uvx)
- Environment variables: `GMC_ACCOUNT_ID`, `GMC_SERVICE_ACCOUNT_KEY`, `GMC_OAUTH_TOKEN`, `GMC_SUBACCOUNT_ID`, `GMC_DRY_RUN`, `GMC_LOG_LEVEL` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add --env GMC_ACCOUNT_ID=<GMC_ACCOUNT_ID> --env GMC_SERVICE_ACCOUNT_KEY=<GMC_SERVICE_ACCOUNT_KEY> --env GMC_OAUTH_TOKEN=<GMC_OAUTH_TOKEN> --env GMC_SUBACCOUNT_ID=<GMC_SUBACCOUNT_ID> --env GMC_DRY_RUN=<GMC_DRY_RUN> --transport stdio gmc-mcp -- uvx gmc-mcp
```
Replace <…> with your own values. 1 more environment variable is in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from gmc-mcp <command>

### Codex

**Platform CLI**
```bash
codex mcp add gmc-mcp --env GMC_ACCOUNT_ID=<GMC_ACCOUNT_ID> --env GMC_SERVICE_ACCOUNT_KEY=<GMC_SERVICE_ACCOUNT_KEY> --env GMC_OAUTH_TOKEN=<GMC_OAUTH_TOKEN> --env GMC_SUBACCOUNT_ID=<GMC_SUBACCOUNT_ID> --env GMC_DRY_RUN=<GMC_DRY_RUN> -- uvx gmc-mcp
```
Replace <…> with your own values. 1 more environment variable is in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from gmc-mcp <command>

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "gmc-mcp": {
            "command": "uvx",
            "args": [
                "gmc-mcp"
            ],
            "env": {
                "GMC_ACCOUNT_ID": "<GMC_ACCOUNT_ID>",
                "GMC_SERVICE_ACCOUNT_KEY": "<GMC_SERVICE_ACCOUNT_KEY>",
                "GMC_OAUTH_TOKEN": "<GMC_OAUTH_TOKEN>",
                "GMC_SUBACCOUNT_ID": "<GMC_SUBACCOUNT_ID>",
                "GMC_DRY_RUN": "<GMC_DRY_RUN>"
            }
        }
    }
}
```
Replace <…> with your own values. 1 more environment variable is in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from gmc-mcp <command>

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "gmc-mcp": {
            "type": "stdio",
            "command": "uvx",
            "args": [
                "gmc-mcp"
            ],
            "env": {
                "GMC_ACCOUNT_ID": "<GMC_ACCOUNT_ID>",
                "GMC_SERVICE_ACCOUNT_KEY": "<GMC_SERVICE_ACCOUNT_KEY>",
                "GMC_OAUTH_TOKEN": "<GMC_OAUTH_TOKEN>",
                "GMC_SUBACCOUNT_ID": "<GMC_SUBACCOUNT_ID>",
                "GMC_DRY_RUN": "<GMC_DRY_RUN>"
            }
        }
    }
}
```
Replace <…> with your own values. 1 more environment variable is in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from gmc-mcp <command>

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e GMC_ACCOUNT_ID=<GMC_ACCOUNT_ID> -e GMC_SERVICE_ACCOUNT_KEY=<GMC_SERVICE_ACCOUNT_KEY> -e GMC_OAUTH_TOKEN=<GMC_OAUTH_TOKEN> -e GMC_SUBACCOUNT_ID=<GMC_SUBACCOUNT_ID> -e GMC_DRY_RUN=<GMC_DRY_RUN> gmc-mcp uvx gmc-mcp
```
Replace <…> with your own values. 1 more environment variable is in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from gmc-mcp <command>

## When to use it
- find disapproved products and group them by issue code
- change product prices or inventory
- compare a store CSV with a Merchant Center feed
- report product impressions with no clicks
- revert a change using its audit record

## Example prompts
- List disapproved products and group them by issue code.
- Compare my Shopify CSV with the Merchant Center feed and find missing products.
- Show products that had impressions but no clicks last week.

## Similar
- [labelhead-artist-momentum](https://affpapa.org/en/nevibecode/mcp/labelhead-artist-momentum.md) — MCP server · ★ 107423
- [openshorts](https://affpapa.org/en/nevibecode/mcp/openshorts.md) — MCP server · ★ 7049
- [OpenScreen](https://affpapa.org/en/nevibecode/mcp/openscreen.md) — MCP server · ★ 4863
- [Usertour MCP Server](https://affpapa.org/en/nevibecode/mcp/usertour-mcp-server.md) — MCP server · ★ 2326
- [Appllama](https://affpapa.org/en/nevibecode/mcp/appllama.md) — MCP server · ★ 3046
- [obsei](https://affpapa.org/en/nevibecode/mcp/obsei.md) — MCP server · ★ 1441

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
