Vai al contenuto principale

Model Context Protocol

Server MCP del catalogo Grünig-SignTronic

Un server Model Context Protocol senza stato, senza autenticazione e in sola lettura che espone il catalogo serigrafico pubblico di Grünig-SignTronic — prodotti, offerte di lavoro, distributori, pagine legali e news — a qualsiasi client MCP o assistente IA, attraverso un unico endpoint standard.

Configurazione

Collega un client

Il server parla il Model Context Protocol su Streamable HTTP a un unico endpoint. Non c’è nessuna chiave API e nessun account — puntate un client all’URL e i suoi tool compaiono.

Endpoint MCP
https://mcp.grunig-signtronic.com/mcp
Streamable HTTPNessuna autenticazioneIn sola lettura
1Consigliato

Connector Claude.ai

Aggiungetelo come connector personalizzato in Claude.

  1. Aprite Impostazioni → Connectors.
  2. Fate clic su «Aggiungi connector personalizzato».
  3. Incollate l’endpoint mostrato sopra; lasciate vuota l’autenticazione.
  4. Salvate, attivatelo in una chat e chiedete informazioni sul catalogo.

Usate l’endpoint MCP mostrato sopra

2

ChatGPT

Aggiungetelo come connector personalizzato in ChatGPT (Plus, Pro, Team o Enterprise).

  1. Aprite Impostazioni → Connectors.
  2. Fate clic su «Crea» e scegliete un connector personalizzato (MCP).
  3. Incollate l’endpoint mostrato sopra come URL del server; impostate l’autenticazione su «nessuna».
  4. Salvate, attivatelo in una chat e chiedete informazioni sul catalogo.

Usate l’endpoint MCP mostrato sopra

3

MCP Inspector

Ispezionate e chiamate i tool direttamente da un terminale.

  1. Eseguite il comando qui sotto.
  2. Scegliete il transport Streamable HTTP.
  3. Inserisca l’endpoint e faccia clic su «Connect».
  4. Usate «List Tools» / «Call Tool» per esplorare.
Esegui
npx @modelcontextprotocol/inspector

Oppure lasciate che sia il vostro assistente a configurarlo

Incollate questo in Claude, ChatGPT o in qualsiasi assistente compatibile con MCP per aggiungere il server e provarlo in un solo passaggio:

Prompt di configurazione
Aggiungete il server MCP remoto «Grünig-SignTronic Catalog» all’indirizzo https://mcp.grunig-signtronic.com/mcp (Model Context Protocol su Streamable HTTP, senza autenticazione) al mio client MCP, poi elencate i suoi strumenti ed eseguite search_products con la query «coating» per verificare che funzioni.

Chiamate un tool direttamente (curl)

Ogni richiesta è un singolo POST JSON-RPC. Questo cerca nel catalogo prodotti:

Cerca prodotti
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":"it"}}}'

Riferimento

Tools

Ogni entità segue una forma uniforme list / search + get: i tool list e search restituiscono riepiloghi compatti, i tool get_* restituiscono il dettaglio completo. Tutti i tool sono in sola lettura e ogni tool tranne ping accetta un lang tra «en», «de», «fr», «it», «es» o «pt». Questo riferimento è generato dalle definizioni dei tool del server stesso, quindi corrisponde sempre a ciò che l’endpoint espone.

ping

Ping

Verifica di raggiungibilità — restituisce 'pong' e l’ambiente attivo. Non accetta argomenti.

Restituisce: Una breve stringa di testo, ad es. pong (production).

Esempio di chiamata
Esempio di chiamata
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "ping",
    "arguments": {}
  }
}

search_products

Cerca prodotti

Cerca o elenca i prodotti Grünig-SignTronic attivi nella lingua richiesta. Con «query» la ricerca avviene per sottostringa, senza distinzione tra maiuscole e minuscole, su tutto il testo del prodotto — nome, descrizione breve e completa, caratteristiche, vantaggi, applicazioni e specifiche — così trovano riscontro anche i numeri di modello e i termini tecnici (ad es. «1270», «UV-LED»). SENZA «query» elenca invece di cercare: «{ lang, category }» risponde quindi a «quali prodotti appartengono a questa categoria», «{ lang }» elenca il catalogo. «category» accetta uno slug OPPURE un nome di categoria in una qualsiasi delle lingue del catalogo (vedi list_categories). Restituisce riepiloghi compatti (slug, nome, descrizione breve, categoria, URL canonico); per il dettaglio completo usare get_product.

ParametroTipoObbl.Descrizione
querystring (1–200)opzionaleTermine di ricerca senza distinzione tra maiuscole e minuscole. Omettere per elencare invece di cercare.
lang"en" | "de" | "fr" | "it" | "es" | "pt"obbligatorioLingua di risposta per i contenuti del catalogo.
limitinteger (1–50)opzionaleRisultati max. Predefinito 10.
categorystring (≤100)opzionaleSlug della categoria o nome della categoria in una qualsiasi delle lingue del catalogo (vedi list_categories).

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

Esempio di chiamata
Esempio di chiamata
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "search_products",
    "arguments": {
      "lang": "en",
      "category": "screen-preparation"
    }
  }
}

get_product

Recupera prodotto

Restituisce il dettaglio completo di un singolo prodotto attivo nella lingua richiesta: descrizioni, caratteristiche, vantaggi, applicazioni, specifiche, documenti e slug dei prodotti correlati. Risoluzione tramite «slug», «id» o «name» — «name» è il nome visualizzato («G-COAT 746»); tutti e tre senza distinzione tra maiuscole e minuscole, «name» anche come sottostringa. Se non corrisponde nulla, la risposta contiene «suggestions» con i prodotti reali più vicini: ripetere la richiesta con uno di quelli invece di tirare a indovinare.

ParametroTipoObbl.Descrizione
slugstring (≤200)opzionaleSlug del prodotto. Indicare slug, id o name.
idstring (≤100)opzionaleid del prodotto. Indicare slug, id o name.
namestring (≤200)opzionaleNome visualizzato del prodotto; senza distinzione tra maiuscole e minuscole, sottostringa consentita.
lang"en" | "de" | "fr" | "it" | "es" | "pt"obbligatorioLingua di risposta per i contenuti del catalogo.

Restituisce: { found, truncated, product } — truncated: true significa che un campo ha raggiunto il limite di lunghezza. found: false (più suggestions) se sconosciuto o inattivo.

È obbligatorio almeno uno tra slug, id o name.

Esempio di chiamata
Esempio di chiamata
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_product",
    "arguments": {
      "name": "G-COAT 746",
      "lang": "en"
    }
  }
}

list_categories

Elenca categorie

Elenca tutte le categorie di prodotto attive nella lingua richiesta (slug, nome, descrizione, productCount). «productCount» è il numero di prodotti attivi nella categoria: questo elenco è quindi la mappa del catalogo — partire da qui, poi passare uno slug o un nome come «category» a search_products per elencare i prodotti di quella categoria.

ParametroTipoObbl.Descrizione
lang"en" | "de" | "fr" | "it" | "es" | "pt"obbligatorioLingua di risposta per i contenuti del catalogo.
limitinteger (1–200)opzionaleRisultati max. Predefinito 50.

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

Esempio di chiamata
Esempio di chiamata
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "list_categories",
    "arguments": {
      "lang": "en"
    }
  }
}

list_jobs

Elenca offerte di lavoro

Elenca le offerte di lavoro aperte come riepiloghi compatti nella lingua richiesta. Filtrabile facoltativamente per tipo di posizione. Per il dettaglio completo usare get_job.

ParametroTipoObbl.Descrizione
lang"en" | "de" | "fr" | "it" | "es" | "pt"obbligatorioLingua di risposta per i contenuti del catalogo.
typestring (≤50)opzionaleTipo di posizione da usare come filtro.
limitinteger (1–200)opzionaleRisultati max. Predefinito 50.

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

Esempio di chiamata
Esempio di chiamata
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "list_jobs",
    "arguments": {
      "lang": "en"
    }
  }
}

get_job

Recupera offerta di lavoro

Restituisce il dettaglio completo di una singola posizione aperta nella lingua richiesta: descrizione, requisiti, vantaggi e tipo di posizione. Risoluzione tramite «slug», «id» o «name» (il titolo dell’annuncio) — tutti senza distinzione tra maiuscole e minuscole, «name» anche come sottostringa. Un mancato riscontro contiene «suggestions» con gli annunci aperti più affini alla richiesta.

ParametroTipoObbl.Descrizione
slugstring (≤200)opzionaleSlug della posizione. Indicare slug, id o name.
idstring (≤100)opzionaleid della posizione. Indicare slug, id o name.
namestring (≤200)opzionaleTitolo dell’annuncio; senza distinzione tra maiuscole e minuscole, sottostringa consentita.
lang"en" | "de" | "fr" | "it" | "es" | "pt"obbligatorioLingua di risposta per i contenuti del catalogo.

Restituisce: { found, truncated, job } — truncated: true significa che un campo ha raggiunto il limite di lunghezza. found: false (più suggestions) se sconosciuta o chiusa.

È obbligatorio almeno uno tra slug, id o name.

Esempio di chiamata
Esempio di chiamata
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_job",
    "arguments": {
      "name": "Automation Engineer",
      "lang": "en"
    }
  }
}

list_distributors

Elenca distributori

Elenca i distributori come riepiloghi a livello aziendale nella lingua richiesta (nome, indirizzo, e-mail, sito web, coordinate). Filtrabile facoltativamente per paese. I contatti a livello di persona NON sono inclusi qui — usare get_distributor.

ParametroTipoObbl.Descrizione
lang"en" | "de" | "fr" | "it" | "es" | "pt"obbligatorioLingua di risposta per i contenuti del catalogo.
countrystring (≤100)opzionalePaese da usare come filtro (senza distinzione tra maiuscole e minuscole).
limitinteger (1–200)opzionaleRisultati max. Predefinito 50.

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

Esempio di chiamata
Esempio di chiamata
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "list_distributors",
    "arguments": {
      "lang": "en"
    }
  }
}

get_distributor

Recupera distributore

Restituisce il dettaglio completo di un singolo distributore nella lingua richiesta — inclusa la persona di contatto indicata (e-mail/telefono/cellulare), esposta solo qui e mai nell’elenco complessivo. Risoluzione tramite «slug», «id» o «name» (la ragione sociale) — tutti senza distinzione tra maiuscole e minuscole, «name» anche come sottostringa. Un mancato riscontro contiene «suggestions» con i partner più vicini.

ParametroTipoObbl.Descrizione
slugstring (≤200)opzionaleSlug del distributore. Indicare slug, id o name.
idstring (≤100)opzionaleid del distributore. Indicare slug, id o name.
namestring (≤200)opzionaleRagione sociale; senza distinzione tra maiuscole e minuscole, sottostringa consentita.
lang"en" | "de" | "fr" | "it" | "es" | "pt"obbligatorioLingua di risposta per i contenuti del catalogo.

Restituisce: { found, truncated, distributor } incluso un oggetto contact; truncated: true significa che un campo ha raggiunto il limite di lunghezza.

È obbligatorio almeno uno tra slug, id o name.

Esempio di chiamata
Esempio di chiamata
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_distributor",
    "arguments": {
      "name": "Example Graphics",
      "lang": "en"
    }
  }
}

list_news

Elenca news

Elenca le news più recenti nella lingua richiesta (titolo, estratto, tag, data). Filtrabile facoltativamente per tag. Vengono esposti solo gli estratti — mai l’HTML completo dell’articolo.

ParametroTipoObbl.Descrizione
lang"en" | "de" | "fr" | "it" | "es" | "pt"obbligatorioLingua di risposta per i contenuti del catalogo.
tagstring (≤100)opzionaleTag da usare come filtro.
limitinteger (1–50)opzionaleRisultati max. Predefinito 10.

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

Esempio di chiamata
Esempio di chiamata
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "list_news",
    "arguments": {
      "lang": "en"
    }
  }
}

Ogni tool dichiara inoltre un outputSchema e restituisce il suo payload due volte — come structuredContent (JSON reale, validato a ogni chiamata) e come blocco di testo JSON leggibile.

Oltre i tool

Resources & prompts

Il server annuncia quattro capabilities: tools, resources, prompts e completions. Le resources rendono lo stesso catalogo indirizzabile tramite URI, così un client può allegare e rileggere un documento senza scegliere un tool. I prompts sono template già pronti che compongono i tool qui sopra.

Resources

Scoprile tramite resources/list (URI concreti) e resources/templates/list (pattern). {lang} è uno tra «en», «de», «fr», «it», «es» o «pt» — la lingua fa parte dell’indirizzo perché ogni record del catalogo è localizzato. Le resources restituiscono il record completo, non i riepiloghi dei tool.

URIContenuto
catalog://{lang}/products{ count, products } — ogni prodotto attivo, in dettaglio completo
catalog://{lang}/products/{slug}Un prodotto attivo, in dettaglio completo
catalog://{lang}/legal/{page}{ page, urlSlug, lang, summary, body, truncated }
catalog://{lang}/news{ count, news } — news pubblicate, solo estratti

Prompts

Ogni prompt compone i tool qui sopra; l’argomento lang si completa automaticamente, ed è proprio a questo che serve la capability completions. Nessun prompt chiede uno slug — prodotti e categorie si passano come testo libero e il modello li risolve da sé tramite search_products. Gli argomenti opzionali sono opzionali di proposito, così un modulo del client non si blocca mai su un input.

PromptArgomentiScopo
explore_cataloginterest?, lang?Orientamento: categorie con il numero di prodotti, poi come proseguire
category_overviewcategory?, lang?I prodotti di una categoria — basta il nome della categoria
find_machineapplication, lang?Raccomandazione di macchine per un’esigenza produttiva descritta
compare_productsproducts?, criteria?, lang?Confronto affiancato sui campi che differiscono
plan_screen_making_linerequirements, lang?Una linea completa come flusso ordinato, fase per fase
product_documentsproduct, lang?Le schede tecniche e i manuali pubblicati per un prodotto
find_distributorcountry, lang?Il distributore che copre un paese, con il suo contatto
request_quoteneed, country?, lang?Richiesta di preventivo: rosa di prodotti, partner competente, canale di contatto
news_digesttopic?, lang?Le ultime news pubblicate, riassunte dai loro estratti
open_positionsinterest?, lang?Le offerte di lavoro aperte e cosa comportano

Info

Informazioni su questo server

Scopo

Permette a client MCP e assistenti IA di interrogare il catalogo pubblico Grünig-SignTronic attraverso un unico endpoint standard e noto — senza scraping, senza API dedicata.

Fonte dei dati

Tutti i contenuti provengono dal sito web pubblico Grünig-SignTronic e sono serviti in sola lettura. Il catalogo viene aggiornato a ogni pubblicazione del sito; il server non scrive mai.

Sicurezza

L’endpoint è senza autenticazione, in sola lettura e senza stato. Non espone segreti, non consente scritture e non rivela dati personali oltre a quanto è già pubblico sul sito.

Transport

Model Context Protocol su Streamable HTTP. Le richieste sono semplice JSON-RPC via POST; le risposte vengono messe in cache all’edge dove è sicuro farlo.