Saltar al contenido principal

Model Context Protocol

Servidor MCP del catálogo Grünig-SignTronic

Un servidor Model Context Protocol sin estado, sin autenticación y de solo lectura que expone el catálogo público de serigrafía de Grünig-SignTronic — productos, empleos, distribuidores, páginas legales y noticias — a cualquier cliente MCP o asistente de IA, a través de un único endpoint estándar.

Configuración

Conectar un cliente

El servidor habla el Model Context Protocol sobre Streamable HTTP en un único endpoint. No hay clave de API ni cuenta — apunte un cliente a la URL y sus tools aparecen.

Endpoint MCP
https://mcp.grunig-signtronic.com/mcp
Streamable HTTPSin autenticaciónSolo lectura
1Recomendado

Connector de Claude.ai

Añádalo como connector personalizado en Claude.

  1. Abra Configuración → Connectors.
  2. Haga clic en Añadir connector personalizado.
  3. Pegue el endpoint que se muestra arriba; deje la autenticación vacía.
  4. Guarde, actívelo en un chat y pregunte por el catálogo.

Use el endpoint MCP que se muestra arriba

2

ChatGPT

Añádalo como connector personalizado en ChatGPT (Plus, Pro, Team o Enterprise).

  1. Abra Configuración → Connectors.
  2. Haga clic en Crear y elija un connector personalizado (MCP).
  3. Pegue el endpoint que se muestra arriba como URL del servidor; establezca la autenticación en ninguna.
  4. Guarde, actívelo en un chat y pregunte por el catálogo.

Use el endpoint MCP que se muestra arriba

3

MCP Inspector

Inspeccione y llame a los tools directamente desde un terminal.

  1. Ejecute el comando de abajo.
  2. Elija el transporte Streamable HTTP.
  3. Introduzca el endpoint y haga clic en Connect.
  4. Use List Tools / Call Tool para explorar.
Ejecutar
npx @modelcontextprotocol/inspector

O deje que su asistente lo configure

Pegue esto en Claude, ChatGPT o cualquier asistente compatible con MCP para añadir el servidor y probarlo en un solo paso:

Prompt de configuración
Añada el servidor MCP remoto Grünig-SignTronic Catalog en https://mcp.grunig-signtronic.com/mcp (Model Context Protocol sobre Streamable HTTP, sin autenticación) a mi cliente MCP, luego enumere sus herramientas y ejecute search_products con la consulta coating para confirmar que funciona.

Llamar a un tool directamente (curl)

Cada petición es un único POST JSON-RPC. Esto busca en el catálogo de productos:

Buscar productos
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":"es"}}}'

Referencia

Tools

Cada entidad sigue una forma uniforme list / search + get: los tools de list y de search devuelven resúmenes compactos, los tools get_* devuelven el detalle completo. Todos los tools son de solo lectura y cada tool excepto ping toma un lang de «en», «de», «fr», «it», «es» o «pt». Esta referencia se genera a partir de las propias definiciones de tools del servidor, por lo que siempre coincide con lo que expone el endpoint.

ping

Ping

Comprobación de disponibilidad — devuelve 'pong' y el entorno activo. No toma argumentos.

Devuelve: Un texto corto, p. ej. pong (production).

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

search_products

Buscar productos

Busca o lista productos Grünig-SignTronic activos en el idioma solicitado. Con «query», la consulta es una subcadena sin distinción de mayúsculas que se compara con todo el texto del producto — nombre, descripción corta y completa, características, ventajas, aplicaciones y especificaciones — de modo que también aciertan números de modelo y términos técnicos (p. ej. «1270», «UV-LED»). SIN «query» lista en lugar de buscar: «{ lang, category }» responde así a «qué productos pertenecen a esta categoría», «{ lang }» lista el catálogo. «category» acepta un slug O un nombre de categoría en cualquiera de los idiomas del catálogo (véase list_categories). Devuelve resúmenes compactos (slug, nombre, descripción corta, categoría, URL canónica); para el detalle completo usar get_product.

ParámetroTipoReq.Descripción
querystring (1–200)opcionalTérmino de búsqueda sin distinción de mayúsculas. Omitir para listar en lugar de buscar.
lang"en" | "de" | "fr" | "it" | "es" | "pt"requeridoIdioma de respuesta para el contenido del catálogo.
limitinteger (1–50)opcionalMáx. resultados. Predeterminado 10.
categorystring (≤100)opcionalSlug o nombre de categoría en cualquiera de los idiomas del catálogo (véase list_categories).

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

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

get_product

Obtener producto

Devuelve el detalle completo de un único producto activo en el idioma solicitado: descripciones, características, ventajas, aplicaciones, especificaciones, documentos y slugs de productos relacionados. Se resuelve mediante «slug», «id» o «name» — «name» es el nombre visible («G-COAT 746»); los tres sin distinción de mayúsculas, «name» además como subcadena. Si nada coincide, la respuesta lleva «suggestions» con los productos reales más cercanos — volver a consultar con uno de ellos en lugar de adivinar.

ParámetroTipoReq.Descripción
slugstring (≤200)opcionalSlug del producto. Indicar slug, id o name.
idstring (≤100)opcionalid del producto. Indicar slug, id o name.
namestring (≤200)opcionalNombre visible del producto; sin distinción de mayúsculas, se permite subcadena.
lang"en" | "de" | "fr" | "it" | "es" | "pt"requeridoIdioma de respuesta para el contenido del catálogo.

Devuelve: { found, truncated, product } — truncated: true significa que un campo ha alcanzado el límite de longitud. found: false (más suggestions) si es desconocido o inactivo.

Se requiere al menos uno de slug, id o name.

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

list_categories

Listar categorías

Lista todas las categorías de producto activas en el idioma solicitado (slug, nombre, descripción, productCount). «productCount» es el número de productos activos de la categoría — esta lista es por tanto el mapa del catálogo: empezar aquí y luego pasar un slug o un nombre como «category» a search_products para listar los productos de esa categoría.

ParámetroTipoReq.Descripción
lang"en" | "de" | "fr" | "it" | "es" | "pt"requeridoIdioma de respuesta para el contenido del catálogo.
limitinteger (1–200)opcionalMáx. resultados. Predeterminado 50.

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

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

list_jobs

Listar ofertas de empleo

Lista las ofertas de empleo abiertas como resúmenes compactos en el idioma solicitado. Opcionalmente filtrable por tipo de puesto. Para el detalle completo usar get_job.

ParámetroTipoReq.Descripción
lang"en" | "de" | "fr" | "it" | "es" | "pt"requeridoIdioma de respuesta para el contenido del catálogo.
typestring (≤50)opcionalTipo de puesto para filtrar.
limitinteger (1–200)opcionalMáx. resultados. Predeterminado 50.

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

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

get_job

Obtener oferta de empleo

Devuelve el detalle completo de una única oferta de empleo abierta en el idioma solicitado: descripción, requisitos, ventajas y tipo de puesto. Se resuelve mediante «slug», «id» o «name» (el título de la oferta) — todos sin distinción de mayúsculas, «name» además como subcadena. Un fallo lleva «suggestions» con las ofertas abiertas más afines a lo solicitado.

ParámetroTipoReq.Descripción
slugstring (≤200)opcionalSlug de la oferta. Indicar slug, id o name.
idstring (≤100)opcionalid de la oferta. Indicar slug, id o name.
namestring (≤200)opcionalTítulo de la oferta; sin distinción de mayúsculas, se permite subcadena.
lang"en" | "de" | "fr" | "it" | "es" | "pt"requeridoIdioma de respuesta para el contenido del catálogo.

Devuelve: { found, truncated, job } — truncated: true significa que un campo ha alcanzado el límite de longitud. found: false (más suggestions) si es desconocida o está cerrada.

Se requiere al menos uno de slug, id o name.

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

list_distributors

Listar distribuidores

Lista los distribuidores como resúmenes a nivel de empresa en el idioma solicitado (nombre, dirección, correo electrónico, sitio web, coordenadas). Opcionalmente filtrable por país. Los datos de contacto a nivel de persona NO se incluyen aquí — usar get_distributor.

ParámetroTipoReq.Descripción
lang"en" | "de" | "fr" | "it" | "es" | "pt"requeridoIdioma de respuesta para el contenido del catálogo.
countrystring (≤100)opcionalPaís para filtrar (sin distinción de mayúsculas).
limitinteger (1–200)opcionalMáx. resultados. Predeterminado 50.

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

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

get_distributor

Obtener distribuidor

Devuelve el detalle completo de un único distribuidor en el idioma solicitado — incluida la persona de contacto designada (correo electrónico/teléfono/móvil), que solo se expone aquí y nunca en el listado masivo. Se resuelve mediante «slug», «id» o «name» (el nombre de la empresa) — todos sin distinción de mayúsculas, «name» además como subcadena. Un fallo lleva «suggestions» con los socios más cercanos.

ParámetroTipoReq.Descripción
slugstring (≤200)opcionalSlug del distribuidor. Indicar slug, id o name.
idstring (≤100)opcionalid del distribuidor. Indicar slug, id o name.
namestring (≤200)opcionalNombre de la empresa; sin distinción de mayúsculas, se permite subcadena.
lang"en" | "de" | "fr" | "it" | "es" | "pt"requeridoIdioma de respuesta para el contenido del catálogo.

Devuelve: { found, truncated, distributor } incluido un objeto contact; truncated: true significa que un campo ha alcanzado el límite de longitud.

Se requiere al menos uno de slug, id o name.

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

list_news

Listar noticias

Lista las noticias más recientes en el idioma solicitado (título, extracto, etiquetas, fecha). Opcionalmente filtrable por etiqueta. Solo se exponen extractos — nunca el HTML completo del artículo.

ParámetroTipoReq.Descripción
lang"en" | "de" | "fr" | "it" | "es" | "pt"requeridoIdioma de respuesta para el contenido del catálogo.
tagstring (≤100)opcionalEtiqueta para filtrar.
limitinteger (1–50)opcionalMáx. resultados. Predeterminado 10.

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

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

Cada tool declara además un outputSchema y devuelve su payload dos veces — como structuredContent (JSON real, validado en cada llamada) y como un bloque de texto JSON legible.

Más allá de los tools

Resources & prompts

El servidor anuncia cuatro capabilities: tools, resources, prompts y completions. Los resources hacen que el mismo catálogo sea direccionable por URI, así que un cliente puede adjuntar y volver a leer un documento sin elegir un tool. Los prompts son plantillas listas para usar que componen los tools de arriba.

Resources

Descúbrelos con resources/list (URIs concretas) y resources/templates/list (patrones). {lang} es «en», «de», «fr», «it», «es» o «pt» — el idioma forma parte de la dirección porque cada registro del catálogo está localizado. Los resources devuelven el registro completo, no los resúmenes de los tools.

URIContenido
catalog://{lang}/products{ count, products } — cada producto activo, con todo el detalle
catalog://{lang}/products/{slug}Un producto activo, con todo el detalle
catalog://{lang}/legal/{page}{ page, urlSlug, lang, summary, body, truncated }
catalog://{lang}/news{ count, news } — noticias publicadas, solo extractos

Prompts

Cada prompt compone los tools de arriba; el argumento lang se autocompleta, que es para lo que sirve la capability completions. Ningún prompt pide un slug — los productos y las categorías se pasan como texto libre y el modelo los resuelve por sí mismo con search_products. Los argumentos opcionales son opcionales a propósito, para que un formulario de cliente nunca se bloquee esperando una entrada.

PromptArgumentosPropósito
explore_cataloginterest?, lang?Orientación: categorías con el número de productos y por dónde seguir
category_overviewcategory?, lang?Los productos de una categoría — basta con el nombre de la categoría
find_machineapplication, lang?Recomendación de equipos para una necesidad de producción descrita
compare_productsproducts?, criteria?, lang?Comparación en paralelo de los campos que difieren
plan_screen_making_linerequirements, lang?Una línea completa como flujo ordenado, etapa por etapa
product_documentsproduct, lang?Las fichas técnicas y los manuales publicados para un producto
find_distributorcountry, lang?El distribuidor que cubre un país, con su contacto
request_quoteneed, country?, lang?Solicitud de presupuesto: preselección, socio responsable, vía de contacto
news_digesttopic?, lang?Las últimas noticias publicadas, resumidas a partir de sus extractos
open_positionsinterest?, lang?Las ofertas de empleo abiertas y en qué consisten

Info

Acerca de este servidor

Propósito

Permite que los clientes MCP y los asistentes de IA consulten el catálogo público de Grünig-SignTronic a través de un único endpoint estándar y conocido — sin scraping, sin una API propia.

Fuente de datos

Todo el contenido procede del sitio web público de Grünig-SignTronic y se sirve en modo de solo lectura. El catálogo se actualiza cada vez que el sitio web publica; el servidor nunca escribe.

Seguridad

El endpoint es sin autenticación, de solo lectura y sin estado. No expone secretos, ni escrituras, ni datos personales más allá de lo que ya es público en el sitio web.

Transporte

Model Context Protocol sobre Streamable HTTP. Las peticiones son JSON-RPC simple sobre POST; las respuestas se almacenan en caché en el edge cuando es seguro.