# Servidor MCP del sitio web de Jaraco

El servidor MCP (Model Context Protocol) del sitio web de Jaraco proporciona acceso programático a todo el contenido del sitio, incluyendo publicaciones de blog, servicios y categorías. Permite a los agentes de IA y otros clientes leer el contenido y redactar correos electrónicos para diferentes servicios.

## Descripción general

El servidor MCP (Model Context Protocol) expone el contenido del sitio web de Jaraco como recursos estructurados a los que pueden acceder agentes de IA, chatbots u otras aplicaciones. El servidor proporciona **acceso de solo lectura** a todo el contenido e incluye una herramienta para redactar correos electrónicos específicos de servicios.

## Características

- **Leer publicaciones de blog**: Acceder a todas las publicaciones de blog en varios idiomas
- **Leer servicios**: Acceder a todas las descripciones de servicios
- **Explorar categorías**: Explorar contenido organizado por categorías
- **Redactar correos electrónicos**: Generar plantillas de correo electrónico específicas de servicios con textos predeterminados apropiados

## Recursos disponibles

### Tipos de recursos

| Tipo | Patrón de URI | Descripción |
|------|---------------|-------------|
| Publicaciones de blog | `blog_posts/{slug}[.{idioma}]` | Publicaciones de blog individuales |
| Servicios | `services/{slug}[.{idioma}]` | Descripciones de servicios |
| Categorías | `categories/{slug}` | Categorías de contenido |

### Idiomas admitidos

Todo el contenido está disponible en los siguientes idiomas:
- Inglés (`en`)
- Alemán (`de`)
- Francés (`fr`)
- Español (`es`)
- Neerlandés (`nl`)

Si no se especifica ningún idioma, se usa inglés de forma predeterminada.

## Conexión al servidor MCP

### Requisitos previos

1. Python 3.8 o superior
2. Biblioteca cliente MCP para su lenguaje de programación

### Información de conexión

- **Dirección del servidor**: `https://jarakube.eu/mcp`
- **Nombre del servidor**: `jaraco-website`
- **Versión**: `1.0.0`
- **SDK MCP**: v2.2.0+

### Ejemplo de conexión (Python)

```python
from mcp.client import Client

async def connect_to_mcp():
    client = Client("jaraco-website", url="https://jarakube.eu")
    await client.connect()
    
    # Listar todos los recursos
    resources = await client.list_resources()
    
    # Leer una publicación de blog específica
    post = await client.read_resource("blog_posts/del-caos-de-datos-a-la-automatizacion-eficiente")
    
    # Redactar un correo electrónico para un servicio
    email = await client.call_tool(
        "draft_email",
        {
            "service_slug": "software-development",
            "language": "es",
            "sender_name": "Juan Pérez",
            "sender_email": "juan@example.com",
            "custom_text": "Necesito ayuda con una aplicación web personalizada."
        }
    )
    
    await client.disconnect()
```

## Uso del servidor MCP

### Listar recursos

Para listar todos los recursos disponibles:

```python
resources = await client.list_resources()
```

Para listar recursos de un tipo específico:

```python
# Listar solo publicaciones de blog
blog_posts = await client.list_resources("blog_posts/")

# Listar solo servicios
services = await client.list_resources("services/")

# Listar solo categorías
categories = await client.list_resources("categories/")
```

### Leer recursos

Para leer un recurso específico:

```python
# Leer una publicación de blog
post = await client.read_resource("blog_posts/del-caos-de-datos-a-la-automatizacion-eficiente")

# Leer una publicación de blog en español
post_es = await client.read_resource("blog_posts/del-caos-de-datos-a-la-automatizacion-eficiente.es")

# Leer un servicio
service = await client.read_resource("services/software-development")

# Leer una categoría
category = await client.read_resource("categories/software-engineering")
```

### Redactar correos electrónicos

La herramienta `draft_email` genera plantillas de correo electrónico específicas de servicios. Admite los siguientes parámetros:

| Parámetro | Tipo | Obligatorio | Predeterminado | Descripción |
|-----------|------|-------------|---------------|-------------|
| `service_slug` | string | Sí | - | El identificador del servicio (ej. "software-development") |
| `language` | string | No | "en" | Idioma para la plantilla de correo electrónico |
| `recipient` | string | No | "info@jaraco.de" | Dirección de correo electrónico del destinatario |
| `subject` | string | No | Generado automáticamente | Asunto de correo electrónico personalizado |
| `custom_text` | string | No | "" | Texto adicional para incluir en el correo electrónico |
| `sender_name` | string | No | "" | Nombre del remitente |
| `sender_email` | string | No | "" | Dirección de correo electrónico del remitente |
| `sender_phone` | string | No | "" | Número de teléfono del remitente |

**Ejemplo**:

```python
email = await client.call_tool(
    "draft_email",
    {
        "service_slug": "software-development",
        "language": "es",
        "recipient": "info@jaraco.de",
        "sender_name": "Juan Pérez",
        "sender_email": "juan@empresa.com",
        "sender_phone": "+34123456789",
        "custom_text": "Queremos desarrollar una aplicación web personalizada para nuestra plataforma de comercio electrónico. Necesitamos experiencia en React, Node.js y diseño de bases de datos."
    }
)
```

**Formato de respuesta**:

```json
{
  "subject": "Consulta: Servicios de desarrollo de software",
  "body": "Estimado equipo de Jaraco,\n\nQueremos desarrollar una aplicación web personalizada para nuestra plataforma de comercio electrónico. Necesitamos experiencia en React, Node.js y diseño de bases de datos.\n\n[Contenido adicional de la plantilla...]\n\n---\nJaraco GmbH\nIngeniería de software · Münster\nTeléfono: +49 176 85952637\nCorreo electrónico: info@jaraco.de\nSitio web: https://jaraco-gmbh.de",
  "to": ["info@jaraco.de"],
  "cc": [],
  "bcc": [],
  "headers": {
    "From": "Juan Pérez <juan@empresa.com>",
    "Reply-To": "juan@empresa.com"
  }
}
```

## Servicios disponibles

Los siguientes servicios están disponibles a través del servidor MCP:

| Identificador del servicio | Descripción |
|-----------------------------|-------------|
| `software-development` | Servicios de desarrollo de software personalizado |
| `consulting` | Servicios de consultoría de TI |
| `it-architecture` | Diseño y revisión de arquitectura de TI |
| `linux-consulting` | Consultoría de sistemas Linux |
| `code-review` | Revisión de código y evaluación de calidad |
| `technology-assessment` | Evaluación de la pila tecnológica |

## Categorías disponibles

El contenido está organizado en las siguientes categorías:

| Identificador de la categoría | Descripción |
|-------------------------------|-------------|
| `software-engineering` | Desarrollo e ingeniería de software |
| `consulting` | Servicios de consultoría |
| `linux` | Servicios de Linux e infraestructura |
| `automation` | Automatización y mejora de flujos de trabajo |

## Referencia de la API

### list_resources

Listar todos los recursos disponibles o filtrar por tipo.

**Solicitud**:
```json
{
  "uri": "blog_posts/"
}
```

**Respuesta**:
```json
{
  "resources": [
    {
      "uri": "blog_posts/del-caos-de-datos-a-la-automatizacion-eficiente",
      "name": "Del caos de datos a la automatización eficiente",
      "description": "Cómo transformar...",
      "mimeType": "text/markdown",
      "size": 12345
    }
  ]
}
```

### read_resource

Leer un recurso específico por URI.

**Solicitud**:
```json
{
  "uri": "blog_posts/del-caos-de-datos-a-la-automatizacion-eficiente"
}
```

**Respuesta**:
```json
{
  "contents": [
    {
      "type": "text",
      "text": "# Del caos de datos a la automatización eficiente\n\n...",
      "mimeType": "text/markdown"
    }
  ]
}
```

### call_tool (draft_email)

Redactar un correo electrónico para un servicio.

**Solicitud**:
```json
{
  "name": "draft_email",
  "arguments": {
    "service_slug": "software-development",
    "language": "es",
    "sender_name": "Juan Pérez",
    "sender_email": "juan@example.com",
    "custom_text": "Necesito ayuda con..."
  }
}
```

**Respuesta**:
```json
{
  "content": [
    {
      "type": "text",
      "text": "{\"subject\": \"Consulta: Servicios de desarrollo de software\", ...}",
      "mimeType": "application/json"
    }
  ],
  "isError": false
}
```

## Seguridad

- El servidor MCP proporciona **acceso de solo lectura** al contenido
- No se requiere autenticación de forma predeterminada (se puede agregar si es necesario)
- Todas las entradas se validan antes del procesamiento
- El límite de velocidad está configurado para evitar abusos

## Soporte

Para preguntas o problemas con el servidor MCP:

- **Correo electrónico**: info@jaraco.de
- **Sitio web**: https://jaraco-gmbh.de
- **GitHub**: https://github.com/jaracogmbh/jaraco-website

## Historial de versiones

- **1.0.0**: Versión inicial con publicaciones de blog, servicios, categorías y redacción de correos electrónicos
