A stateless, authless, read-only Model Context Protocol server that exposes the public Grünig-SignTronic screen-printing catalog — products, jobs, distributors, legal pages and news — to any MCP client or AI assistant, over one standard endpoint.
The server speaks the Model Context Protocol over Streamable HTTP at a single endpoint. There is no API key and no account — point a client at the URL and its tools appear.
MCP endpoint
https://mcp.grunig-signtronic.com/mcp
Streamable HTTPNo authenticationRead-only
1Recommended
Claude.ai connector
Add it as a custom connector in Claude.
Open Settings → Connectors.
Click Add custom connector.
Paste the endpoint shown above; leave authentication empty.
Save, enable it in a chat, then ask about the catalog.
Use the MCP endpoint shown above
2
ChatGPT
Add it as a custom connector in ChatGPT (Plus, Pro, Team or Enterprise).
Open Settings → Connectors.
Click Create and choose a custom (MCP) connector.
Paste the endpoint shown above as the server URL; set authentication to none.
Save, enable it in a chat, then ask about the catalog.
Use the MCP endpoint shown above
3
MCP Inspector
Inspect and call tools directly from a terminal.
Run the command below.
Choose the Streamable HTTP transport.
Enter the endpoint and click Connect.
Use List Tools / Call Tool to explore.
Run
npx @modelcontextprotocol/inspector
Or let your assistant set it up
Paste this into Claude, ChatGPT or any MCP-aware assistant to add the server and try it in one step:
Setup prompt
Add the remote MCP server "Grünig-SignTronic Catalog" at https://mcp.grunig-signtronic.com/mcp (Model Context Protocol over Streamable HTTP, no authentication) to my MCP client, then list its tools and run search_products with query "coating" to confirm it works.
Call a tool directly (curl)
Every request is a single JSON-RPC POST. This searches the product catalog:
Every entity follows a uniform list / search + get shape: list and search tools return compact summaries, get_* tools return full detail. All tools are read-only, and every tool except ping takes a lang of “en”, “de”, “fr”, “it”, “es” or “pt”. This reference is generated from the server's own tool definitions, so it always matches what the endpoint exposes.
ping
Ping
Liveness check — returns 'pong' and the active environment. Takes no arguments.
Returns:A short text string, e.g. pong (production).
Search or list active Grünig-SignTronic products in the requested language. With `query`, it is a case-insensitive substring matched across all product text — name, short and full description, features, benefits, applications and specifications — so model numbers and technical terms (e.g. "1270", "UV-LED") match too. WITHOUT `query` it lists instead of searching, so `{ lang, category }` alone answers "which products are in this category" and `{ lang }` alone lists the catalog. `category` accepts a slug OR a category name in any of the catalog languages (see list_categories). Returns compact summaries (slug, name, short description, category, canonical URL) plus `total`, the number of matches before `limit` — raise `limit` when `count < total`; use get_product for full detail.
Parameter
Type
Req.
Description
query
string (1–200)
optional
Case-insensitive search term. Omit to list instead of search.
lang
"en" | "de" | "fr" | "it" | "es" | "pt"
required
Response language for the catalog content.
limit
integer (1–50)
optional
Max results. Default 10.
category
string (≤100)
optional
Category slug, or category name in any of the catalog languages (see list_categories).
Return the full detail of a single active product in the requested language: descriptions, features, benefits, applications, specifications, documents and related-product slugs. Resolved by `slug`, `id` or `name` — pass `name` when you only know the display name ("G-COAT 746"); all three ignore case and `name` also matches as a substring. If nothing matches, the answer carries `suggestions` with the closest real products, so retry with one of those rather than guessing.
List all active product categories in the requested language (slug, name, description, productCount). `productCount` is the number of active products in the category, so this is a map of the catalog — start here, then pass a slug or name as search_products' `category` to list that category's products.
Return the full detail of a single open job in the requested language: description, requirements, benefits and job type. Resolved by `slug`, `id` or `name` (the posting title) — all case-insensitive, `name` also as a substring. A miss carries `suggestions` with the open postings closest to what you asked for.
List distributors as company-level summaries in the requested language (name, address, email, website, coordinates). Optionally filter by country. Person-level contact is NOT included here — use get_distributor.
Return the full detail of a single distributor in the requested language — including the named contact person (email/phone/mobile), which is exposed only here and never in the bulk list. Resolved by `slug`, `id` or `name` (the company name) — all case-insensitive, `name` also as a substring. A miss carries `suggestions` with the closest partners.
Parameter
Type
Req.
Description
slug
string (≤200)
optional
Distributor slug. Provide slug, id or name.
id
string (≤100)
optional
Distributor id. Provide slug, id or name.
name
string (≤200)
optional
Company name; case-insensitive, substring allowed.
lang
"en" | "de" | "fr" | "it" | "es" | "pt"
required
Response language for the catalog content.
Returns:{ found, truncated, distributor } including a contact object; truncated: true means a field hit the length cap.
Return a legal document (e.g. imprint, privacy policy, terms). `page` accepts the page key or the URL slug, case-insensitively. Legal texts exist in every catalog language, but the GERMAN version is the legally binding one — the others are informative translations, so quote them as such. A page with no approved text in the requested language receives the English one, and `document.lang` always states which text you got. `document.body` carries the full text and `document.truncated` says whether it had to be shortened — never present a truncated document as the complete terms. A miss carries `suggestions` with the pages a caller in that language can actually read.
Parameter
Type
Req.
Description
page
string (1–100)
required
Legal page key or URL slug, e.g. `imprint` / `privacy`.
lang
"en" | "de" | "fr" | "it" | "es" | "pt"
required
Response language for the catalog content. Legal documents exist in every catalog language; the German version is the legally binding one and the others are informative translations. A page with no approved text in the requested language is returned in English.
Returns:{ found, document: { page, urlSlug, lang, summary, body, truncated } } — found: false plus suggestions on a miss.
List the latest news items in the requested language (title, excerpt, tags, date). Optionally filter by tag. Only excerpts are exposed — never full article HTML.
Every tool also declares an outputSchema and returns its payload twice — as structuredContent (real JSON, validated on every call) and as a readable JSON text block.
Beyond tools
Resources & prompts
The server advertises four capabilities: tools, resources, prompts and completions. Resources make the same catalog addressable by URI, so a client can attach and re-read a document without choosing a tool. Prompts are ready-made templates that compose the tools above.
Resources
Discover them via resources/list (concrete URIs) and resources/templates/list (patterns). {lang} is one of “en”, “de”, “fr”, “it”, “es” or “pt” — language is part of the address because every catalog record is localized. Resources return the full record, not the tools' summaries.
URI
Contents
catalog://{lang}/products
{ count, products } — every active product, full detail
catalog://{lang}/products/{slug}
One active product, full detail
catalog://{lang}/legal/{page}
{ page, urlSlug, lang, summary, body, truncated }
catalog://{lang}/news
{ count, news } — published news, excerpts only
Prompts
Each prompt composes the tools above; the lang argument autocompletes, which is what the completions capability is for. No prompt asks for a slug — products and categories go in as free text and the model resolves them itself via search_products. Optional arguments are optional on purpose, so a client form never blocks on an input.
Prompt
Arguments
Purpose
explore_catalog
interest?, lang?
Orientation: categories with product counts, then where to go next
category_overview
category?, lang?
The products of one category — the category name is enough
find_machine
application, lang?
Equipment recommendation for a described production need
compare_products
products?, criteria?, lang?
Side-by-side comparison over the fields that differ
plan_screen_making_line
requirements, lang?
A complete line as an ordered workflow, stage by stage
product_documents
product, lang?
The datasheets and manuals published for a product
find_distributor
country, lang?
The sales partner covering a country, plus its contact
The latest published news, summarized from its excerpts
open_positions
interest?, lang?
Open job postings and what they involve
About
About this server
Purpose
It lets MCP clients and AI assistants query the public Grünig-SignTronic catalog through one standard, well-known endpoint — no scraping, no bespoke API.
Data source
All content originates from the public Grünig-SignTronic website and is served read-only. The catalog is refreshed whenever the website publishes; the server never writes.
Security
The endpoint is authless, read-only and stateless. It exposes no secrets, no writes and no personal data beyond what is already public on the website.
Transport
Model Context Protocol over Streamable HTTP. Requests are plain JSON-RPC over POST; responses are edge-cached where safe.