# Jaraco Website MCP-Server

Der Jaraco Website MCP-Server bietet programmatischen Zugriff auf alle Website-Inhalte, einschließlich Blog-Beiträge, Dienstleistungen und Kategorien. Er ermöglicht KI-Agenten und anderen Clients, Inhalte zu lesen und E-Mails für verschiedene Dienstleistungen zu verfassen.

## Übersicht

Der MCP-Server (Model Context Protocol) stellt die Inhalte der Jaraco-Website als strukturierte Ressourcen bereit, auf die von KI-Agenten, Chatbots oder anderen Anwendungen zugegriffen werden kann. Der Server bietet **nur Lesezugriff** auf alle Inhalte und enthält ein Tool zum Verfassen service-spezifischer E-Mails.

## Funktionen

- **Blog-Beiträge lesen**: Zugriff auf alle Blog-Beiträge in mehreren Sprachen
- **Dienstleistungen lesen**: Zugriff auf alle Dienstleistungsbeschreibungen
- **Kategorien durchsuchen**: Inhalte nach Kategorien organisiert durchsuchen
- **E-Mails verfassen**: Service-spezifische E-Mail-Vorlagen mit passendem Standardtext generieren

## Verfügbare Ressourcen

### Ressourcentypen

| Typ | URI-Muster | Beschreibung |
|-----|------------|--------------|
| Blog-Beiträge | `blog_posts/{slug}[.{sprache}]` | Individuelle Blog-Beiträge |
| Dienstleistungen | `services/{slug}[.{sprache}]` | Dienstleistungsbeschreibungen |
| Kategorien | `categories/{slug}` | Inhaltskategorien |

### Unterstützte Sprachen

Alle Inhalte sind in den folgenden Sprachen verfügbar:
- Englisch (`en`)
- Deutsch (`de`)
- Französisch (`fr`)
- Spanisch (`es`)
- Niederländisch (`nl`)

Wenn keine Sprache angegeben ist, wird standardmäßig Englisch verwendet.

## Verbindung zum MCP-Server

### Voraussetzungen

1. Python 3.8 oder höher
2. MCP-Client-Bibliothek für Ihre Programmiersprache

### Verbindungsinformationen

- **Server-Adresse**: `https://jarakube.eu/mcp`
- **Server-Name**: `jaraco-website`
- **Version**: `1.0.0`
- **MCP SDK**: v2.2.0+

### Beispielverbindung (Python)

```python
from mcp.client import Client

async def connect_to_mcp():
    # Verbindung zum MCP-Server mit Streamable HTTP Transport
    client = Client("jaraco-website", url="https://jarakube.eu")
    await client.connect()
    
    # Alle Ressourcen auflisten
    resources = await client.list_resources()
    
    # Einen bestimmten Blog-Beitrag lesen
    post = await client.read_resource("blog_posts/from-data-chaos-to-efficient-automation")
    
    # Eine E-Mail für eine Dienstleistung verfassen
    email = await client.call_tool(
        "draft_email",
        {
            "service_slug": "software-development",
            "language": "de",
            "sender_name": "Max Mustermann",
            "sender_email": "max@example.com",
            "custom_text": "Ich benötige Hilfe bei einer benutzerdefinierten Webanwendung."
        }
    )
    
    await client.disconnect()
```

**Hinweis**: Das MCP SDK v2 Client handhabt automatisch den Streamable HTTP Transport. Der Endpunkt ist standardmäßig `/mcp`.

## Verwendung des MCP-Servers

### Ressourcen auflisten

Um alle verfügbaren Ressourcen aufzulisten:

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

Um Ressourcen eines bestimmten Typs aufzulisten:

```python
# Nur Blog-Beiträge auflisten
blog_posts = await client.list_resources("blog_posts/")

# Nur Dienstleistungen auflisten
services = await client.list_resources("services/")

# Nur Kategorien auflisten
categories = await client.list_resources("categories/")
```

### Ressourcen lesen

Um eine bestimmte Ressource zu lesen:

```python
# Einen Blog-Beitrag lesen
post = await client.read_resource("blog_posts/vom-datenchaos-zur-effizienten-automatisierung")

# Einen Blog-Beitrag auf Deutsch lesen
post_de = await client.read_resource("blog_posts/vom-datenchaos-zur-effizienten-automatisierung.de")

# Eine Dienstleistung lesen
service = await client.read_resource("services/software-development")

# Eine Kategorie lesen
category = await client.read_resource("categories/software-engineering")
```

### E-Mails verfassen

Das `draft_email`-Tool generiert service-spezifische E-Mail-Vorlagen. Es unterstützt die folgenden Parameter:

| Parameter | Typ | Erforderlich | Standard | Beschreibung |
|-----------|-----|-------------|----------|--------------|
| `service_slug` | string | Ja | - | Die Dienstleistungs-ID (z.B. "software-development") |
| `language` | string | Nein | "en" | Sprache für die E-Mail-Vorlage |
| `recipient` | string | Nein | "info@jaraco.de" | E-Mail-Adresse des Empfängers |
| `subject` | string | Nein | Auto-generiert | Benutzerdefinierter E-Mail-Betreff |
| `custom_text` | string | Nein | "" | Zusätzlicher Text für die E-Mail |
| `sender_name` | string | Nein | "" | Name des Absenders |
| `sender_email` | string | Nein | "" | E-Mail-Adresse des Absenders |
| `sender_phone` | string | Nein | "" | Telefonnummer des Absenders |

**Beispiel**:

```python
email = await client.call_tool(
    "draft_email",
    {
        "service_slug": "software-development",
        "language": "de",
        "recipient": "info@jaraco.de",
        "sender_name": "Max Mustermann",
        "sender_email": "max@unternehmen.de",
        "sender_phone": "+49123456789",
        "custom_text": "Wir möchten eine benutzerdefinierte Webanwendung für unsere E-Commerce-Plattform entwickeln. Wir benötigen Expertise in React, Node.js und Datenbankdesign."
    }
)
```

**Antwortformat**:

```json
{
  "subject": "Anfrage: Softwareentwicklungsdienstleistungen",
  "body": "Sehr geehrtes Jaraco-Team,\n\nWir möchten eine benutzerdefinierte Webanwendung für unsere E-Commerce-Plattform entwickeln. Wir benötigen Expertise in React, Node.js und Datenbankdesign.\n\n[Weitere Vorlageninhalte...]\n\n---\nJaraco GmbH\nSoftware Engineering · Münster\nTelefon: +49 176 85952637\nE-Mail: info@jaraco.de\nWebsite: https://jarakube.eu",
  "to": ["info@jaraco.de"],
  "cc": [],
  "bcc": [],
  "headers": {
    "From": "Max Mustermann <max@unternehmen.de>",
    "Reply-To": "max@unternehmen.de"
  }
}
```

## Verfügbare Dienstleistungen

Die folgenden Dienstleistungen sind über den MCP-Server verfügbar:

| Dienstleistungs-ID | Beschreibung |
|---------------------|--------------|
| `software-development` | Individuelle Softwareentwicklungsdienstleistungen |
| `consulting` | IT-Beratungsdienstleistungen |
| `it-architecture` | IT-Architektur-Design und -Review |
| `linux-consulting` | Linux-Systemberatung |
| `code-review` | Code-Review und Qualitätsbewertung |
| `technology-assessment` | Bewertung des Technologie-Stacks |

## Verfügbare Kategorien

Inhalte sind in den folgenden Kategorien organisiert:

| Kategorie-ID | Beschreibung |
|--------------|--------------|
| `software-engineering` | Softwareentwicklung und -engineering |
| `consulting` | Beratungsdienstleistungen |
| `linux` | Linux- und Infrastrukturdienstleistungen |
| `automation` | Automatisierung und Workflow-Verbesserung |


## API-Referenz

### list_resources

Listet alle verfügbaren Ressourcen auf oder filtert nach Typ.

**Anfrage**:
```json
{
  "uri": "blog_posts/"  // Optional: nach Ressourcentyp filtern
}
```

**Antwort**:
```json
{
  "resources": [
    {
      "uri": "blog_posts/vom-datenchaos-zur-effizienten-automatisierung",
      "name": "Vom Datenchaos zur effizienten Automatisierung",
      "description": "Wie man...",
      "mimeType": "text/markdown",
      "size": 12345
    },
    {
      "uri": "services/software-development",
      "name": "Softwareentwicklung",
      "description": "Individuelle Softwareentwicklung...",
      "mimeType": "text/markdown",
      "size": 6789
    }
  ]
}
```

### read_resource

Liest eine bestimmte Ressource über URI.

**Anfrage**:
```json
{
  "uri": "blog_posts/vom-datenchaos-zur-effizienten-automatisierung"
}
```

**Antwort**:
```json
{
  "contents": [
    {
      "type": "text",
      "text": "# Vom Datenchaos zur effizienten Automatisierung\n\n...",
      "mimeType": "text/markdown"
    }
  ],
  "resourceTemplate": null
}
```

### call_tool (draft_email)

Verfasst eine E-Mail für eine Dienstleistung.

**Anfrage**:
```json
{
  "name": "draft_email",
  "arguments": {
    "service_slug": "software-development",
    "language": "de",
    "sender_name": "Max Mustermann",
    "sender_email": "max@example.com",
    "custom_text": "Ich benötige Hilfe bei..."
  }
}
```

**Antwort**:
```json
{
  "content": [
    {
      "type": "text",
      "text": "{\"subject\": \"Anfrage: Softwareentwicklungsdienstleistungen\", ...}",
      "mimeType": "application/json"
    }
  ],
  "isError": false
}
```

## Sicherheit

- Der MCP-Server bietet **nur Lesezugriff** auf Inhalte
- Standardmäßig ist keine Authentifizierung erforderlich
- Alle Eingaben werden vor der Verarbeitung validiert
- Rate-Limiting ist konfiguriert, um Missbrauch zu verhindern

## Support

Bei Fragen oder Problemen mit dem MCP-Server:

- **E-Mail**: info@jaraco.de
- **Website**: https://jaraco-gmbh.de
- **GitHub**: https://github.com/jaracogmbh/jaraco-website

## Versionsverlauf

- **1.0.0**: Erste Version mit Blog-Beiträgen, Dienstleistungen, Kategorien und E-Mail-Erstellung
