Zum Hauptinhalt springen

Model Context Protocol

Grünig-SignTronic Katalog MCP-Server

Ein zustandsloser, authentifizierungsfreier, nur lesender Model-Context-Protocol-Server, der den öffentlichen Grünig-SignTronic Siebdruck-Katalog — Produkte, Stellen, Vertriebspartner, Rechtsseiten und News — über einen einzigen Standard-Endpunkt für jeden MCP-Client oder KI-Assistenten bereitstellt.

Einrichtung

Client verbinden

Der Server spricht das Model Context Protocol über Streamable HTTP an einem einzigen Endpunkt. Es gibt keinen API-Schlüssel und kein Konto — richte einen Client auf die URL und seine Tools erscheinen.

MCP-Endpunkt
https://mcp.grunig-signtronic.com/mcp
Streamable HTTPKeine AuthentifizierungNur lesend
1Empfohlen

Claude.ai Connector

Als eigenen Connector in Claude hinzufügen.

  1. Einstellungen → Connectors öffnen.
  2. Auf «Eigenen Connector hinzufügen» klicken.
  3. Den oben gezeigten Endpunkt einfügen; Authentifizierung leer lassen.
  4. Speichern, in einem Chat aktivieren und nach dem Katalog fragen.

Verwende den oben gezeigten MCP-Endpunkt

2

ChatGPT

Als eigenen Connector in ChatGPT hinzufügen (Plus, Pro, Team oder Enterprise).

  1. Einstellungen → Connectors öffnen.
  2. Auf «Erstellen» klicken und einen eigenen (MCP-)Connector wählen.
  3. Den oben gezeigten Endpunkt als Server-URL einfügen; Authentifizierung auf «keine» setzen.
  4. Speichern, in einem Chat aktivieren und nach dem Katalog fragen.

Verwende den oben gezeigten MCP-Endpunkt

3

MCP Inspector

Tools direkt aus dem Terminal prüfen und aufrufen.

  1. Den Befehl unten ausführen.
  2. Den Streamable-HTTP-Transport wählen.
  3. Den Endpunkt eingeben und auf «Connect» klicken.
  4. Mit «List Tools» / «Call Tool» erkunden.
Ausführen
npx @modelcontextprotocol/inspector

Oder vom Assistenten einrichten lassen

Füge dies in Claude, ChatGPT oder einen beliebigen MCP-fähigen Assistenten ein, um den Server hinzuzufügen und in einem Schritt zu testen:

Einrichtungs-Prompt
Füge den Remote-MCP-Server «Grünig-SignTronic Catalog» unter https://mcp.grunig-signtronic.com/mcp (Model Context Protocol über Streamable HTTP, ohne Authentifizierung) zu meinem MCP-Client hinzu, liste dann seine Tools auf und rufe search_products mit der Abfrage «coating» auf, um zu prüfen, dass es funktioniert.

Ein Tool direkt aufrufen (curl)

Jede Anfrage ist ein einzelner JSON-RPC-POST. Dieser durchsucht den Produktkatalog:

Produkte suchen
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":"de"}}}'

Referenz

Tools

Jede Entität folgt einem einheitlichen list / search + get-Muster: List- und Search-Tools liefern kompakte Zusammenfassungen, get_*-Tools liefern volle Details. Alle Tools sind nur lesend, und jedes Tool ausser ping nimmt ein lang von «en», «de», «fr», «it», «es» oder «pt». Diese Referenz wird aus den Tool-Definitionen des Servers erzeugt und stimmt daher immer mit dem Endpunkt überein.

ping

Ping

Erreichbarkeitsprüfung — gibt 'pong' und die aktive Umgebung zurück. Nimmt keine Argumente.

Rückgabe: Ein kurzer Text, z. B. pong (production).

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

search_products

Produkte suchen

Durchsucht oder listet aktive Grünig-SignTronic Produkte in der gewünschten Sprache. Mit «query» ist die Suchanfrage ein Teilstring ohne Gross-/Kleinschreibung, der über den gesamten Produkttext abgeglichen wird — Name, Kurz- und Volltextbeschreibung, Merkmale, Vorteile, Anwendungen und Spezifikationen — sodass auch Modellnummern und Fachbegriffe (z. B. «1270», «UV-LED») treffen. OHNE «query» wird gelistet statt gesucht: «{ lang, category }» beantwortet damit «welche Produkte gehören zu dieser Kategorie», «{ lang }» listet den Katalog. «category» akzeptiert einen Slug ODER einen Kategorienamen in jeder der Katalogsprachen (siehe list_categories). Liefert kompakte Zusammenfassungen (slug, Name, Kurzbeschreibung, Kategorie, kanonische URL); für volle Details get_product verwenden.

ParameterTypErf.Beschreibung
querystring (1–200)optionalSuchbegriff ohne Gross-/Kleinschreibung. Weglassen, um zu listen statt zu suchen.
lang"en" | "de" | "fr" | "it" | "es" | "pt"erforderlichAntwortsprache für die Katalog-Inhalte.
limitinteger (1–50)optionalMax. Ergebnisse. Standard 10.
categorystring (≤100)optionalKategorie-Slug oder -Name in jeder der Katalogsprachen (siehe list_categories).

Rückgabe: { count, results: [{ slug, name, shortDescription, category, url }] }.

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

get_product

Produkt abrufen

Liefert die vollen Details eines einzelnen aktiven Produkts in der gewünschten Sprache: Beschreibungen, Merkmale, Vorteile, Anwendungen, Spezifikationen, Dokumente und Slugs verwandter Produkte. Auflösung über «slug», «id» oder «name» — «name» ist der Anzeigename («G-COAT 746»); alle drei ohne Gross-/Kleinschreibung, «name» zusätzlich als Teilstring. Passt nichts, trägt die Antwort «suggestions» mit den nächstliegenden echten Produkten — damit erneut anfragen statt raten.

ParameterTypErf.Beschreibung
slugstring (≤200)optionalProdukt-Slug. slug, id oder name angeben.
idstring (≤100)optionalProdukt-id. slug, id oder name angeben.
namestring (≤200)optionalAnzeigename des Produkts; ohne Gross-/Kleinschreibung, Teilstring erlaubt.
lang"en" | "de" | "fr" | "it" | "es" | "pt"erforderlichAntwortsprache für die Katalog-Inhalte.

Rückgabe: { found, truncated, product } — truncated: true heisst, dass ein Feld die Längengrenze erreicht hat. found: false (plus suggestions), falls unbekannt oder inaktiv.

Mindestens eines von slug, id oder name ist erforderlich.

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

list_categories

Kategorien auflisten

Listet alle aktiven Produktkategorien in der gewünschten Sprache (slug, Name, Beschreibung, productCount). «productCount» ist die Anzahl aktiver Produkte in der Kategorie — diese Liste ist damit die Landkarte des Katalogs: hier beginnen, dann einen Slug oder Namen als «category» an search_products übergeben, um die Produkte der Kategorie zu listen.

ParameterTypErf.Beschreibung
lang"en" | "de" | "fr" | "it" | "es" | "pt"erforderlichAntwortsprache für die Katalog-Inhalte.
limitinteger (1–200)optionalMax. Ergebnisse. Standard 50.

Rückgabe: { count, results: [{ slug, name, description, productCount }] }.

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

list_jobs

Stellen auflisten

Listet offene Stellenausschreibungen als kompakte Zusammenfassungen in der gewünschten Sprache. Optional nach Stellentyp filterbar. Für volle Details get_job verwenden.

ParameterTypErf.Beschreibung
lang"en" | "de" | "fr" | "it" | "es" | "pt"erforderlichAntwortsprache für die Katalog-Inhalte.
typestring (≤50)optionalStellentyp zum Filtern.
limitinteger (1–200)optionalMax. Ergebnisse. Standard 50.

Rückgabe: { count, results: [{ slug, title, type, … }] }.

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

get_job

Stelle abrufen

Liefert die vollen Details einer einzelnen offenen Stelle in der gewünschten Sprache: Beschreibung, Anforderungen, Vorteile und Stellentyp. Auflösung über «slug», «id» oder «name» (den Stellentitel) — alle ohne Gross-/Kleinschreibung, «name» zusätzlich als Teilstring. Ein Fehlschlag trägt «suggestions» mit den passendsten offenen Ausschreibungen.

ParameterTypErf.Beschreibung
slugstring (≤200)optionalStellen-Slug. slug, id oder name angeben.
idstring (≤100)optionalStellen-id. slug, id oder name angeben.
namestring (≤200)optionalStellentitel; ohne Gross-/Kleinschreibung, Teilstring erlaubt.
lang"en" | "de" | "fr" | "it" | "es" | "pt"erforderlichAntwortsprache für die Katalog-Inhalte.

Rückgabe: { found, truncated, job } — truncated: true heisst, dass ein Feld die Längengrenze erreicht hat. found: false (plus suggestions), falls unbekannt oder geschlossen.

Mindestens eines von slug, id oder name ist erforderlich.

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

list_distributors

Vertriebspartner auflisten

Listet Vertriebspartner als firmenbezogene Zusammenfassungen in der gewünschten Sprache (Name, Adresse, E-Mail, Website, Koordinaten). Optional nach Land filterbar. Kontaktdaten auf Personenebene sind hier NICHT enthalten — get_distributor verwenden.

ParameterTypErf.Beschreibung
lang"en" | "de" | "fr" | "it" | "es" | "pt"erforderlichAntwortsprache für die Katalog-Inhalte.
countrystring (≤100)optionalLand zum Filtern (ohne Gross-/Kleinschreibung).
limitinteger (1–200)optionalMax. Ergebnisse. Standard 50.

Rückgabe: { count, results: [{ companyName, address, email, url, coordinates }] }.

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

get_distributor

Vertriebspartner abrufen

Liefert die vollen Details eines einzelnen Vertriebspartners in der gewünschten Sprache — einschliesslich der benannten Kontaktperson (E-Mail/Telefon/Mobil), die nur hier preisgegeben wird und nie in der Sammel-Liste. Auflösung über «slug», «id» oder «name» (den Firmennamen) — alle ohne Gross-/Kleinschreibung, «name» zusätzlich als Teilstring. Ein Fehlschlag trägt «suggestions» mit den nächstliegenden Partnern.

ParameterTypErf.Beschreibung
slugstring (≤200)optionalVertriebspartner-Slug. slug, id oder name angeben.
idstring (≤100)optionalVertriebspartner-id. slug, id oder name angeben.
namestring (≤200)optionalFirmenname; ohne Gross-/Kleinschreibung, Teilstring erlaubt.
lang"en" | "de" | "fr" | "it" | "es" | "pt"erforderlichAntwortsprache für die Katalog-Inhalte.

Rückgabe: { found, truncated, distributor } inklusive eines contact-Objekts; truncated: true heisst, dass ein Feld die Längengrenze erreicht hat.

Mindestens eines von slug, id oder name ist erforderlich.

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

list_news

News auflisten

Listet die neuesten News-Einträge in der gewünschten Sprache (Titel, Auszug, Tags, Datum). Optional nach Tag filterbar. Es werden nur Auszüge preisgegeben — nie der vollständige Artikel-HTML.

ParameterTypErf.Beschreibung
lang"en" | "de" | "fr" | "it" | "es" | "pt"erforderlichAntwortsprache für die Katalog-Inhalte.
tagstring (≤100)optionalTag zum Filtern.
limitinteger (1–50)optionalMax. Ergebnisse. Standard 10.

Rückgabe: { count, results: [{ title, excerpt, tags, publishedAt }] }.

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

Jedes Tool deklariert zusätzlich ein outputSchema und liefert seine Nutzlast zweimal — als structuredContent (echtes JSON, bei jedem Aufruf validiert) und als lesbaren JSON-Textblock.

Über Tools hinaus

Resources & Prompts

Der Server bewirbt vier Capabilities: tools, resources, prompts und completions. Resources machen denselben Katalog per URI adressierbar — ein Client kann ein Dokument anhängen und erneut lesen, ohne ein Tool auszuwählen. Prompts sind fertige Vorlagen, die die Tools oben komponieren.

Resources

Auffindbar über resources/list (konkrete URIs) und resources/templates/list (Muster). {lang} ist «en», «de», «fr», «it», «es» oder «pt» — die Sprache ist Teil der Adresse, weil jeder Katalog-Datensatz lokalisiert ist. Resources liefern den vollständigen Datensatz, nicht die Tool-Zusammenfassungen.

URIInhalt
catalog://{lang}/products{ count, products } — jedes aktive Produkt, vollständige Details
catalog://{lang}/products/{slug}Ein aktives Produkt, vollständige Details
catalog://{lang}/legal/{page}{ page, urlSlug, lang, summary, body, truncated }
catalog://{lang}/news{ count, news } — veröffentlichte News, nur Auszüge

Prompts

Jeder Prompt komponiert die Tools oben; das Argument lang wird autovervollständigt — genau dafür ist die completions-Capability da. Kein Prompt verlangt einen Slug: Produkte und Kategorien werden als Freitext übergeben, das Modell löst sie selbst über search_products auf. Optionale Argumente sind bewusst optional, damit die Client-Maske nicht auf einer Eingabe blockiert.

PromptArgumenteZweck
explore_cataloginterest?, lang?Orientierung: Kategorien mit Produktanzahl, dann der nächste Schritt
category_overviewcategory?, lang?Die Produkte einer Kategorie — der Kategoriename genügt
find_machineapplication, lang?Anlagenempfehlung für einen beschriebenen Produktionsbedarf
compare_productsproducts?, criteria?, lang?Direktvergleich über die Felder, die sich unterscheiden
plan_screen_making_linerequirements, lang?Eine vollständige Anlage als geordneter Ablauf, Schritt für Schritt
product_documentsproduct, lang?Die zu einem Produkt veröffentlichten Datenblätter und Anleitungen
find_distributorcountry, lang?Der Vertriebspartner für ein Land, samt Kontakt
request_quoteneed, country?, lang?Offertanfrage: Vorauswahl, zuständiger Partner, Kontaktweg
news_digesttopic?, lang?Die neusten veröffentlichten News, aus ihren Auszügen zusammengefasst
open_positionsinterest?, lang?Offene Stellen und was sie beinhalten

Info

Über diesen Server

Zweck

MCP-Clients und KI-Assistenten können den öffentlichen Grünig-SignTronic Katalog über einen einzigen, wohldefinierten Endpunkt abfragen — kein Scraping, keine eigene API.

Datenquelle

Alle Inhalte stammen von der öffentlichen Grünig-SignTronic Website und werden nur lesend ausgeliefert. Der Katalog wird bei jeder Veröffentlichung der Website aktualisiert; der Server schreibt nie.

Sicherheit

Der Endpunkt ist authentifizierungsfrei, nur lesend und zustandslos. Er gibt keine Geheimnisse, keine Schreibzugriffe und keine personenbezogenen Daten preis, die nicht bereits öffentlich auf der Website stehen.

Transport

Model Context Protocol über Streamable HTTP. Anfragen sind einfaches JSON-RPC über POST; Antworten werden am Edge zwischengespeichert, wo es sicher ist.