Saltar para o conteúdo principal

Model Context Protocol

Servidor MCP do catálogo Grünig-SignTronic

Um servidor Model Context Protocol sem estado, sem autenticação e apenas de leitura que disponibiliza o catálogo público de serigrafia da Grünig-SignTronic — produtos, vagas, distribuidores, páginas legais e notícias — a qualquer cliente MCP ou assistente de IA, através de um único endpoint padrão.

Configuração

Ligar um cliente

O servidor fala o Model Context Protocol sobre Streamable HTTP num único endpoint. Não há chave de API nem conta — aponte um cliente para o URL e as suas tools aparecem.

Endpoint MCP
https://mcp.grunig-signtronic.com/mcp
Streamable HTTPSem autenticaçãoApenas de leitura
1Recomendado

Connector do Claude.ai

Adicione-o como connector personalizado no Claude.

  1. Abra Definições → Connectors.
  2. Clique em Adicionar connector personalizado.
  3. Cole o endpoint mostrado acima; deixe a autenticação vazia.
  4. Guarde, ative-o num chat e pergunte sobre o catálogo.

Utilize o endpoint MCP mostrado acima

2

ChatGPT

Adicione-o como connector personalizado no ChatGPT (Plus, Pro, Team ou Enterprise).

  1. Abra Definições → Connectors.
  2. Clique em Criar e escolha um connector personalizado (MCP).
  3. Cole o endpoint mostrado acima como URL do servidor; defina a autenticação como nenhuma.
  4. Guarde, ative-o num chat e pergunte sobre o catálogo.

Utilize o endpoint MCP mostrado acima

3

MCP Inspector

Inspecione e chame tools diretamente a partir de um terminal.

  1. Execute o comando abaixo.
  2. Escolha o transporte Streamable HTTP.
  3. Introduza o endpoint e clique em Connect.
  4. Use List Tools / Call Tool para explorar.
Executar
npx @modelcontextprotocol/inspector

Ou deixe o seu assistente configurá-lo

Cole isto no Claude, no ChatGPT ou em qualquer assistente compatível com MCP para adicionar o servidor e testá-lo num único passo:

Prompt de configuração
Adicione o servidor MCP remoto Grünig-SignTronic Catalog em https://mcp.grunig-signtronic.com/mcp (Model Context Protocol através de Streamable HTTP, sem autenticação) ao meu cliente MCP, depois liste as suas ferramentas e execute search_products com a consulta coating para confirmar que funciona.

Chamar uma tool diretamente (curl)

Cada pedido é um único POST JSON-RPC. Este pesquisa o catálogo de produtos:

Pesquisar produtos
curl -s https://mcp.grunig-signtronic.com/mcp -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"search_products","arguments":{"query":"coating","lang":"pt"}}}'

Referência

Tools

Cada entidade segue um padrão uniforme list / search + get: as tools de list e de search devolvem resumos compactos, as tools get_* devolvem os detalhes completos. Todas as tools são apenas de leitura e todas, exceto ping, recebem um lang de «en», «de», «fr», «it», «es» ou «pt». Esta referência é gerada a partir das próprias definições de tools do servidor, pelo que corresponde sempre ao que o endpoint expõe.

ping

Ping

Verificação de disponibilidade — devolve 'pong' e o ambiente ativo. Não recebe argumentos.

Devolve: Um texto curto, p. ex. pong (production).

Exemplo de chamada
Exemplo de chamada
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "ping",
    "arguments": {}
  }
}

search_products

Pesquisar produtos

Pesquisa ou lista produtos Grünig-SignTronic ativos no idioma pedido. Com «query», a pesquisa faz-se por substring sem distinção entre maiúsculas e minúsculas em todo o texto do produto — nome, descrição curta e completa, características, vantagens, aplicações e especificações — pelo que também correspondem números de modelo e termos técnicos (p. ex. «1270», «UV-LED»). SEM «query» lista em vez de pesquisar: «{ lang, category }» responde assim a «que produtos pertencem a esta categoria» e «{ lang }» lista o catálogo. «category» aceita um slug OU um nome de categoria em qualquer dos idiomas do catálogo (ver list_categories). Devolve resumos compactos (slug, nome, descrição curta, categoria, URL canónico); para detalhes completos, usar get_product.

ParâmetroTipoObrig.Descrição
querystring (1–200)opcionalTermo de pesquisa sem distinção entre maiúsculas e minúsculas. Omitir para listar em vez de pesquisar.
lang"en" | "de" | "fr" | "it" | "es" | "pt"obrigatórioIdioma de resposta para os conteúdos do catálogo.
limitinteger (1–50)opcionalMáx. de resultados. Predefinição 10.
categorystring (≤100)opcionalSlug da categoria ou nome da categoria em qualquer dos idiomas do catálogo (ver list_categories).

Devolve: { count, results: [{ slug, name, shortDescription, category, url }] }.

Exemplo de chamada
Exemplo de chamada
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "search_products",
    "arguments": {
      "lang": "en",
      "category": "screen-preparation"
    }
  }
}

get_product

Obter produto

Devolve os detalhes completos de um único produto ativo no idioma pedido: descrições, características, vantagens, aplicações, especificações, documentos e slugs de produtos relacionados. Resolução através de «slug», «id» ou «name» — «name» é o nome de exibição («G-COAT 746»); todos os três sem distinção entre maiúsculas e minúsculas, «name» também como substring. Se nada corresponder, a resposta traz «suggestions» com os produtos reais mais próximos — voltar a consultar com um desses em vez de adivinhar.

ParâmetroTipoObrig.Descrição
slugstring (≤200)opcionalSlug do produto. Indicar slug, id ou name.
idstring (≤100)opcionalid do produto. Indicar slug, id ou name.
namestring (≤200)opcionalNome de exibição do produto; sem distinção entre maiúsculas e minúsculas, substring permitido.
lang"en" | "de" | "fr" | "it" | "es" | "pt"obrigatórioIdioma de resposta para os conteúdos do catálogo.

Devolve: { found, truncated, product } — truncated: true significa que um campo atingiu o limite de comprimento. found: false (mais suggestions), se desconhecido ou inativo.

É obrigatório pelo menos um de slug, id ou name.

Exemplo de chamada
Exemplo de chamada
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_product",
    "arguments": {
      "name": "G-COAT 746",
      "lang": "en"
    }
  }
}

list_categories

Listar categorias

Lista todas as categorias de produto ativas no idioma pedido (slug, nome, descrição, productCount). «productCount» é o número de produtos ativos na categoria — esta lista é, por isso, o mapa do catálogo: começar aqui e depois passar um slug ou um nome como «category» a search_products para listar os produtos dessa categoria.

ParâmetroTipoObrig.Descrição
lang"en" | "de" | "fr" | "it" | "es" | "pt"obrigatórioIdioma de resposta para os conteúdos do catálogo.
limitinteger (1–200)opcionalMáx. de resultados. Predefinição 50.

Devolve: { count, results: [{ slug, name, description, productCount }] }.

Exemplo de chamada
Exemplo de chamada
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "list_categories",
    "arguments": {
      "lang": "en"
    }
  }
}

list_jobs

Listar vagas

Lista as vagas abertas como resumos compactos no idioma pedido. Opcionalmente filtrável por tipo de vaga. Para detalhes completos, usar get_job.

ParâmetroTipoObrig.Descrição
lang"en" | "de" | "fr" | "it" | "es" | "pt"obrigatórioIdioma de resposta para os conteúdos do catálogo.
typestring (≤50)opcionalTipo de vaga para filtrar.
limitinteger (1–200)opcionalMáx. de resultados. Predefinição 50.

Devolve: { count, results: [{ slug, title, type, … }] }.

Exemplo de chamada
Exemplo de chamada
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "list_jobs",
    "arguments": {
      "lang": "en"
    }
  }
}

get_job

Obter vaga

Devolve os detalhes completos de uma única vaga aberta no idioma pedido: descrição, requisitos, vantagens e tipo de vaga. Resolução através de «slug», «id» ou «name» (o título do anúncio) — todos sem distinção entre maiúsculas e minúsculas, «name» também como substring. Uma falha traz «suggestions» com as vagas abertas mais próximas do que foi pedido.

ParâmetroTipoObrig.Descrição
slugstring (≤200)opcionalSlug da vaga. Indicar slug, id ou name.
idstring (≤100)opcionalid da vaga. Indicar slug, id ou name.
namestring (≤200)opcionalTítulo do anúncio; sem distinção entre maiúsculas e minúsculas, substring permitido.
lang"en" | "de" | "fr" | "it" | "es" | "pt"obrigatórioIdioma de resposta para os conteúdos do catálogo.

Devolve: { found, truncated, job } — truncated: true significa que um campo atingiu o limite de comprimento. found: false (mais suggestions), se desconhecida ou encerrada.

É obrigatório pelo menos um de slug, id ou name.

Exemplo de chamada
Exemplo de chamada
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_job",
    "arguments": {
      "name": "Automation Engineer",
      "lang": "en"
    }
  }
}

list_distributors

Listar distribuidores

Lista os distribuidores como resumos ao nível da empresa no idioma pedido (nome, endereço, e-mail, website, coordenadas). Opcionalmente filtrável por país. Os contactos ao nível da pessoa NÃO estão incluídos aqui — usar get_distributor.

ParâmetroTipoObrig.Descrição
lang"en" | "de" | "fr" | "it" | "es" | "pt"obrigatórioIdioma de resposta para os conteúdos do catálogo.
countrystring (≤100)opcionalPaís para filtrar (sem distinção entre maiúsculas e minúsculas).
limitinteger (1–200)opcionalMáx. de resultados. Predefinição 50.

Devolve: { count, results: [{ companyName, address, email, url, coordinates }] }.

Exemplo de chamada
Exemplo de chamada
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "list_distributors",
    "arguments": {
      "lang": "en"
    }
  }
}

get_distributor

Obter distribuidor

Devolve os detalhes completos de um único distribuidor no idioma pedido — incluindo a pessoa de contacto indicada (e-mail/telefone/telemóvel), que só é divulgada aqui e nunca na lista global. Resolução através de «slug», «id» ou «name» (o nome da empresa) — todos sem distinção entre maiúsculas e minúsculas, «name» também como substring. Uma falha traz «suggestions» com os parceiros mais próximos.

ParâmetroTipoObrig.Descrição
slugstring (≤200)opcionalSlug do distribuidor. Indicar slug, id ou name.
idstring (≤100)opcionalid do distribuidor. Indicar slug, id ou name.
namestring (≤200)opcionalNome da empresa; sem distinção entre maiúsculas e minúsculas, substring permitido.
lang"en" | "de" | "fr" | "it" | "es" | "pt"obrigatórioIdioma de resposta para os conteúdos do catálogo.

Devolve: { found, truncated, distributor } incluindo um objeto contact; truncated: true significa que um campo atingiu o limite de comprimento.

É obrigatório pelo menos um de slug, id ou name.

Exemplo de chamada
Exemplo de chamada
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_distributor",
    "arguments": {
      "name": "Example Graphics",
      "lang": "en"
    }
  }
}

list_news

Listar notícias

Lista as notícias mais recentes no idioma pedido (título, excerto, tags, data). Opcionalmente filtrável por tag. São divulgados apenas excertos — nunca o HTML completo do artigo.

ParâmetroTipoObrig.Descrição
lang"en" | "de" | "fr" | "it" | "es" | "pt"obrigatórioIdioma de resposta para os conteúdos do catálogo.
tagstring (≤100)opcionalTag para filtrar.
limitinteger (1–50)opcionalMáx. de resultados. Predefinição 10.

Devolve: { count, results: [{ title, excerpt, tags, publishedAt }] }.

Exemplo de chamada
Exemplo de chamada
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "list_news",
    "arguments": {
      "lang": "en"
    }
  }
}

Cada tool declara também um outputSchema e devolve o seu payload duas vezes — como structuredContent (JSON real, validado em cada chamada) e como um bloco de texto JSON legível.

Além das tools

Resources & prompts

O servidor anuncia quatro capabilities: tools, resources, prompts e completions. Os resources tornam o mesmo catálogo endereçável por URI, pelo que um cliente pode anexar e reler um documento sem escolher uma tool. Os prompts são modelos prontos a usar que compõem as tools acima.

Resources

Descubra-os através de resources/list (URIs concretos) e resources/templates/list (padrões). {lang} é «en», «de», «fr», «it», «es» ou «pt» — o idioma faz parte do endereço porque cada registo do catálogo é localizado. Os resources devolvem o registo completo, não os resumos das tools.

URIConteúdo
catalog://{lang}/products{ count, products } — cada produto ativo, com todo o detalhe
catalog://{lang}/products/{slug}Um produto ativo, com todo o detalhe
catalog://{lang}/legal/{page}{ page, urlSlug, lang, summary, body, truncated }
catalog://{lang}/news{ count, news } — notícias publicadas, apenas excertos

Prompts

Cada prompt compõe as tools acima; o argumento lang é autocompletado, que é precisamente a finalidade da capability completions. Nenhum prompt pede um slug — produtos e categorias entram como texto livre e o próprio modelo os resolve através de search_products. Os argumentos opcionais são opcionais de propósito, para que um formulário de cliente nunca fique bloqueado à espera de uma entrada.

PromptArgumentosFinalidade
explore_cataloginterest?, lang?Orientação: categorias com o número de produtos e por onde continuar
category_overviewcategory?, lang?Os produtos de uma categoria — basta o nome da categoria
find_machineapplication, lang?Recomendação de equipamento para uma necessidade de produção descrita
compare_productsproducts?, criteria?, lang?Comparação lado a lado dos campos que diferem
plan_screen_making_linerequirements, lang?Uma linha completa como fluxo ordenado, etapa a etapa
product_documentsproduct, lang?As fichas técnicas e os manuais publicados para um produto
find_distributorcountry, lang?O distribuidor que cobre um país, com o respetivo contacto
request_quoteneed, country?, lang?Pedido de orçamento: pré-seleção, parceiro responsável, via de contacto
news_digesttopic?, lang?As últimas notícias publicadas, resumidas a partir dos seus excertos
open_positionsinterest?, lang?As vagas abertas e o que implicam

Sobre

Sobre este servidor

Objetivo

Permite que clientes MCP e assistentes de IA consultem o catálogo público da Grünig-SignTronic através de um único endpoint padrão e bem conhecido — sem scraping, sem API própria.

Fonte dos dados

Todo o conteúdo tem origem no site público da Grünig-SignTronic e é servido apenas para leitura. O catálogo é atualizado sempre que o site publica; o servidor nunca escreve.

Segurança

O endpoint é sem autenticação, apenas de leitura e sem estado. Não expõe segredos, não permite escritas nem revela dados pessoais além do que já é público no site.

Transporte

Model Context Protocol sobre Streamable HTTP. Os pedidos são JSON-RPC simples sobre POST; as respostas são colocadas em cache no edge onde é seguro.