Skip to main content
Glama

mcp-gs1br

Model Context Protocol (MCP) server for the GS1 Brasil — Verified by GS1 API.

Queries authoritative product data from the GTIN (EAN-8, UPC-A, EAN-13, ITF-14): brand, description, GPC, NCM, CEST, images, weight, dimensions, licensee. Covers the national database (Cadastro Nacional de Produtos – CNP) and the international database (GS1 Registry Platform).

Prerequisites

  1. Be a GS1 Brasil member.

  2. Accept the terms of use at https://verifiedbygs1.gs1br.org/.

  3. Request access approval at https://fs8.formsite.com/gsurvey/cfw75k23hq/index.

  4. Receive your client_id and client_secret from GS1 Brasil.

After that, use the same username/password from the CNP / Verified by GS1 portal as OAuth credentials.

Installation

cd mcp-gs1br
npm install
npm run build

Configuration

Export the credentials as environment variables:

Variable

Required

Description

GS1BR_CLIENT_ID

yes

Client ID received from GS1 Brasil

GS1BR_CLIENT_SECRET

yes

Client Secret received from GS1 Brasil

GS1BR_USERNAME

yes

CNP / Verified by GS1 user email

GS1BR_PASSWORD

yes

Same user's password

GS1BR_ENV

no

production (default) or homologacao

Register as MCP in Claude Code

.claude/mcp.json or equivalent:

{
  "mcpServers": {
    "gs1br": {
      "command": "node",
      "args": ["/caminho/absoluto/para/mcp-gs1br/dist/index.js"],
      "env": {
        "GS1BR_CLIENT_ID": "...",
        "GS1BR_CLIENT_SECRET": "...",
        "GS1BR_USERNAME": "seu@email",
        "GS1BR_PASSWORD": "...",
        "GS1BR_ENV": "production"
      }
    }
  }
}

Claude Desktop

In claude_desktop_config.json:

{
  "mcpServers": {
    "gs1br": {
      "command": "node",
      "args": ["/caminho/absoluto/para/mcp-gs1br/dist/index.js"],
      "env": { "GS1BR_CLIENT_ID": "...", "GS1BR_CLIENT_SECRET": "...", "GS1BR_USERNAME": "...", "GS1BR_PASSWORD": "..." }
    }
  }
}

Exposed tools

gs1_validate_check_digit

Validates the check digit (modulo 10) of a GTIN locally. Does not consume the API. Useful for filtering out bad reads before spending quota.

{ "gtin": "7898357416086" }

gs1_verify_gtin

Queries a GTIN and returns a normalized summary:

{
  "gtin": "7898357416086",
  "found": true,
  "source": "national",
  "status": "Válido",
  "brand": "GS1 Brasil",
  "description": "GS1 Brasil Tênis de Corrida Style Azul com Branco Tamanho 37",
  "gpcCategoryCode": "10001070",
  "gpcCategoryName": "Calçados Esportivos - Uso Geral",
  "ncm": "0000.00.00",
  "cest": "28.059.00",
  "imageUrls": ["https://cnp30blob.blob.core.windows.net/cnp3files/..."],
  "grossWeight": { "value": 2.8, "unitCode": "KGM" },
  "netWeight":   { "value": 2.8, "unitCode": "KGM" },
  "netContent":  { "value": 1,   "unitCode": "EA"  },
  "dimensions": {
    "height": { "value": 40, "unitCode": "CMT" },
    "width":  { "value": 17, "unitCode": "CMT" },
    "depth":  { "value": 10, "unitCode": "CMT" }
  },
  "licensee": {
    "name": "GS1 BRASIL - ASSOCIACAO BRASILEIRA DE AUTOMACAO",
    "licenseType": "GCP",
    "managingOrganization": "GS1 Brasil"
  },
  "syncInformationCCG": true,
  "raw": { ... }
}

Fields may come empty depending on the contracted query profile (Verification, Verification + National, Verification + International, National + International).

gs1_verify_gtin_raw

Same as above, but returns the raw JSON from the GS1 API (array with dadosInternacionais, dadosNacionais, verificacao).

gs1_enrich_many

Enriches a batch of up to 25 GTINs sequentially. Locally filters invalid check digits to save requests.

{ "gtins": ["7898357416086", "4006381333931", "..."] }

Under the hood

  • OAuth 2.0 password grant against POST {host}/oauth/access-token, header Authorization: Basic base64(client_id:client_secret), JSON body {grant_type, username, password}.

  • In-memory token cache, TTL 3h (expires_in = 10800). Automatic reauthentication on 401/403.

  • Query: GET {host}/provider/v2/verified?gtin={GTIN} with client_id and access_token headers.

  • Hosts:

    • https://api.gs1br.org (production)

    • https://api-hml.gs1br.org (staging)

Common errors

HTTP Code

Situation

200

Success

400

Invalid request

403

User not authorized for the resource

404

GTIN not found

500

GS1 internal error

Business codes (returnCode / returnCodeDescription) returned inside the payload when the GTIN is international — see official manual R1.3.

References

License

MIT.

-
license - not tested
Not graded
quality - not tested
C
maintenance

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • Bling ERP (SMB and e-commerce management, by Locaweb) via the official v3 API, sales orders, product

  • Manage products, EU Digital Product Passports, operator parties, and GS1 EPCIS supply-chain events.

  • Correios: CEP, official-source lookup. Platform-hosted, pay per query with prepaid credit.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/vertexdevs-hq/mcp-gs1br'

If you have feedback or need assistance with the MCP directory API, please join our Discord server