Jaraco GmbH

Jaraco Website MCP Server

The Jaraco Website MCP Server provides programmatic access to all website content including blog posts, services, and categories. It enables AI agents and other clients to read content and draft emails for different services.

The Jaraco Website MCP Server provides programmatic access to all website content including blog posts, services, and categories. It enables AI agents and other clients to read content and draft emails for different services.

Overview

The MCP (Model Context Protocol) server exposes the Jaraco website content as structured resources that can be accessed by AI agents, chatbots, or other applications. The server provides read-only access to all content and includes a tool for drafting service-specific emails.

Registry Information:

  • Registry Name: io.github.jrse/jaraco_website
  • Published Version: 1.0.1
  • PyPI Package: jaraco-website-mcp-server
  • Registry URL: https://registry.modelcontextprotocol.io

Features

  • Read Blog Posts: Access all blog posts in multiple languages
  • Read Services: Access all service descriptions and details
  • Browse Categories: Explore content organized by categories
  • Read Jarakube: Access Jaraco's Kubernetes platform information
  • Draft Emails: Generate service-specific or Jarakube email templates with appropriate default text

Available Resources

The MCP server exposes resources with the following URI patterns. Additionally, the following files are available for direct access:

Direct File Resources

File URI Description
llms.txt https://jarakube.eu/llms.txt Summary of LLMs and models used or recommended by Jaraco
llms-full.txt https://jarakube.eu/llms-full.txt Full list of LLMs and models used or recommended by Jaraco

Resource Types

Type URI Pattern Description
Blog Posts (English) resource://jaraco/blog_posts/{slug} Individual blog posts in English

Resource Types

Type URI Pattern Description
Blog Posts (English) resource://jaraco/blog_posts/{slug} Individual blog posts in English
Blog Posts (Localized) resource://jaraco/blog_posts/{slug}/{language} Blog posts in specific language
Services (English) resource://jaraco/services/{slug} Service descriptions in English
Services (Localized) resource://jaraco/services/{slug}/{language} Service descriptions in specific language
Categories resource://jaraco/categories/{slug} Content categories
Jarakube Platform (English) resource://jaraco/jarakube/platform Jaraco's Kubernetes platform information
Jarakube Platform (Localized) resource://jaraco/jarakube/platform/{language} Jarakube platform information in specific language

Supported Languages

All content is available in the following languages:

  • English (en)
  • German (de)
  • French (fr)
  • Spanish (es)
  • Dutch (nl)

Note: For localized content, use the {slug}/{language} pattern. For English content, you can use either {slug} or {slug}/en.

Connecting to the MCP Server

Prerequisites

  1. Python 3.10 or higher (required for MCP SDK v2)
  2. MCP client library for your programming language

Connection Information

  • Server Address: https://jarakube.eu/mcp
  • Server Name: jaraco-website
  • Version: 1.0.1
  • MCP SDK: v2.2.0+
  • Registry Name: io.github.jrse/jaraco_website

Example Connection (Python)


from mcp.client import Client

async def connect_to_mcp():
    # Connect to the MCP server using Streamable HTTP transport
    client = Client("jaraco-website", url="https://jarakube.eu/mcp")
    await client.connect()

    # List all resources
    resources = await client.list_resources()

    # Read a specific blog post (English)
    post = await client.read_resource("resource://jaraco/blog_posts/from-data-chaos-to-efficient-automation")

    # Read a localized blog post
    post_de = await client.read_resource("resource://jaraco/blog_posts/from-data-chaos-to-efficient-automation/de")

    # Draft an email for a service
    email = await client.call_tool(
        "draft_email",
        {
            "service_slug": "software-development",
            "language": "en",
            "sender_name": "John Doe",
            "sender_email": "john@example.com",
            "custom_text": "I need help with a custom web application."
        }
    )

    await client.disconnect()


**Note**: The MCP SDK v2 client automatically handles the Streamable HTTP transport. The endpoint is `/mcp` by default.

## Using the MCP Server

### Listing Resources

The server provides a `list_website_resources` tool to list available resources:


# List all available resources
resources = await client.call_tool(
    "list_website_resources"
)

# List resources of a specific type
blog_posts = await client.call_tool(
    "list_website_resources",
    {"resource_type": "blog_posts"}
)

services = await client.call_tool(
    "list_website_resources",
    {"resource_type": "services"}
)

categories = await client.call_tool(
    "list_website_resources",
    {"resource_type": "categories"}
)

jarakube = await client.call_tool(
    "list_website_resources",
    {"resource_type": "jarakube"}
)


**Note**: The `list_website_resources` tool returns resources with full MCP URIs like `resource://jaraco/blog_posts/slug`.

### Reading Resources

To read a specific resource, use the full resource URI:


# Read a blog post (English)
post = await client.read_resource("resource://jaraco/blog_posts/from-data-chaos-to-efficient-automation")

# Read a blog post in German
post_de = await client.read_resource("resource://jaraco/blog_posts/from-data-chaos-to-efficient-automation/de")

# Read a service (English)
service = await client.read_resource("resource://jaraco/services/software-development")

# Read a service in French
service_fr = await client.read_resource("resource://jaraco/services/software-development/fr")

# Read a category
category = await client.read_resource("resource://jaraco/categories/platform-engineering")

# Read Jarakube platform (English)
jarakube = await client.read_resource("resource://jaraco/jarakube/platform")

# Read Jarakube platform in Spanish
jarakube_es = await client.read_resource("resource://jaraco/jarakube/platform/es")


### Drafting Emails

The `draft_email` tool generates service-specific or Jarakube email templates. It supports the following parameters:

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `service_slug` | string | Yes | - | The service identifier (e.g., "software-development") or "jarakube" for Jarakube platform |
| `language` | string | No | "en" | Language for the email template |
| `recipient` | string | No | "info@jaraco.de" | Recipient email address |
| `subject` | string | No | Auto-generated | Custom email subject |
| `custom_text` | string | No | "" | Additional text to include in the email |
| `sender_name` | string | No | "" | Sender's name |
| `sender_email` | string | No | "" | Sender's email address |
| `sender_phone` | string | No | "" | Sender's phone number |

**Example**:


# Draft email for a service
email = await client.call_tool(
    "draft_email",
    {
        "service_slug": "software-development",
        "language": "en",
        "recipient": "info@jaraco.de",
        "sender_name": "Jane Smith",
        "sender_email": "jane@company.com",
        "sender_phone": "+1234567890",
        "custom_text": "We are looking to develop a custom web application for our e-commerce platform. We need expertise in React, Node.js, and database design."
    }
)

# Draft email for Jarakube platform
jarakube_email = await client.call_tool(
    "draft_email",
    {
        "service_slug": "jarakube",
        "language": "en",
        "sender_name": "John Doe",
        "sender_email": "john@example.com",
        "custom_text": "I need help with Jarakube deployment and configuration."
    }
)


**Response Format**:


{
  "subject": "Inquiry: Software Development Services",
  "body": "Dear Jaraco Team,\n\nWe are looking to develop a custom web application for our e-commerce platform. We need expertise in React, Node.js, and database design.\n\n[Additional template content...]\n\n---\nJaraco GmbH\nSoftware Engineering · Münster\nPhone: +49 176 85952637\nEmail: info@jaraco.de\nWebsite: https://jarakube.eu",
  "to": ["info@jaraco.de"],
  "cc": [],
  "bcc": [],
  "headers": {
    "From": "Jane Smith <jane@company.com>",
    "Reply-To": "jane@company.com"
  }
}


## Available Services

The following services are available through the MCP server:

| Service Slug | Description |
|--------------|-------------|
| `software-development` | Custom software development services |
| `consulting` | IT consulting and advisory services |
| `it-architecture` | IT architecture design and review |
| `linux-consulting` | Linux system consulting |
| `code-review` | Code review and quality assessment |
| `technology-assessment` | Technology stack evaluation |

## Available Categories

Content is organized into the following categories:

| Category Slug | Description |
|---------------|-------------|
| `platform-engineering` | Cloud, Kubernetes, delivery and reliability work for software companies |
| `platform-assessment` | Focused assessment for architecture, organization, constraints and bottlenecks |
| `practical-poc` | First practical solutions for automation, AI use cases and software bottlenecks |
| `jarakube` | The sovereign Kubernetes platform by jaraco |
| `company-founder` | jaraco's engineering roots, founder profile and company direction |


## API Reference

### list_website_resources Tool

List available Jaraco website resources, optionally filtered by type.

**Parameters:**
- `resource_type` (optional): Filter by resource type. Supported values: `services`, `blog_posts`, `categories`, `jarakube`

**Request**:

{
  "name": "list_website_resources",
  "arguments": {
    "resource_type": "services"
  }
}


**Response**:

{
  "content": [
    {
      "type": "text",
      "text": "[{\"uri\": \"resource://jaraco/services/software-development\", \"name\": \"Software Development\", \"description\": \"We build digital tools...\", \"mimeType\": \"text/markdown\"}, ...]",
      "mimeType": "application/json"
    }
  ],
  "isError": false
}


The response contains an array of resources with:
- `uri`: Full MCP resource URI (e.g., `resource://jaraco/services/software-development`)
- `name`: Resource name/title
- `description`: Resource description
- `mimeType`: MIME type (always `text/markdown`)

### read_resource

Read a specific resource by its full MCP URI.

**Request**:

{
  "uri": "resource://jaraco/services/software-development"
}


**Response**:

{
  "contents": [
    {
      "type": "text",
      "text": "# Software Development\n\nWe build digital tools and business software that make everyday work easier, faster, and more reliable.",
      "mimeType": "text/markdown"
    }
  ],
  "resourceTemplate": null
}


### draft_email Tool

Generate a service-specific or Jarakube email template.

**Parameters:**
- `service_slug` (required): Service identifier (e.g., "software-development") or "jarakube" for Jarakube platform
- `language` (optional, default: "en"): Language for the email template
- `recipient` (optional, default: "info@jaraco.de"): Recipient email address
- `subject` (optional): Custom email subject
- `custom_text` (optional): Additional text to include in the email
- `sender_name` (optional): Sender's name
- `sender_email` (optional): Sender's email address
- `sender_phone` (optional): Sender's phone number

**Request**:

{
  "name": "draft_email",
  "arguments": {
    "service_slug": "software-development",
    "language": "en",
    "recipient": "info@jaraco.de",
    "sender_name": "John Doe",
    "sender_email": "john@example.com",
    "custom_text": "I need help with..."
  }
}


**Response**:

{
  "content": [
    {
      "type": "text",
      "text": "{\"subject\": \"Inquiry: Software Development Services\", \"body\": \"Dear Jaraco Team,\\n\\nI need help with...\\n\\n---\\nJaraco GmbH\\nSoftware Engineering · Münster\\nPhone: +49 176 85952637\\nEmail: info@jaraco.de\", \"to\": [\"info@jaraco.de\"], \"headers\": {\"From\": \"John Doe <john@example.com>\", \"Reply-To\": \"john@example.com\"}}",
      "mimeType": "application/json"
    }
  ],
  "isError": false
}


The response is a JSON object with:
- `subject`: Email subject
- `body`: Email body text
- `to`: List of recipient email addresses
- `cc`: List of CC email addresses (empty by default)
- `bcc`: List of BCC email addresses (empty by default)
- `headers`: Email headers including From and Reply-To

## Security

- The MCP server provides **read-only access** to content
- No authentication is required by default (can be added if needed)
- All inputs are validated before processing
- Rate limiting is configured to prevent abuse

## Support

For questions or issues with the MCP server:

- **Email**: info@jaraco.de
- **Website**: https://jarakube.eu
- **GitHub**: https://github.com/jaracogmbh/jarakube-jaraco-app

## MCP Registry

This server is published to the official MCP Registry:

- **Registry Name:** `io.github.jrse/jaraco_website`
- **Registry URL:** https://registry.modelcontextprotocol.io
- **Search:** https://registry.modelcontextprotocol.io/v0.1/servers?search=jaraco

## Version History

- **1.0.1**: Updated documentation, published to MCP Registry
- **1.0.0**: Initial release with blog posts, services, categories, and email drafting