Skip to main content
Glama
tife89

KfW Förderungsmittel MCP Server

by tife89
README.md
# KfW Förderungsmittel MCP Server

Ein MCP (Model Context Protocol) Server für die Abfrage von KfW-Förderprogrammen zur energetischen Sanierung von Wohngebäuden in Deutschland.

> Teil der "Sanierungskompass" Plattform - verbindet Hausbesitzer mit Energieberatern und aktuellen KfW-Finanzierungsmöglichkeiten.

## Was ist KfW-Förderung?

Die Kreditanstalt für Wiederaufbau (KfW) bietet zinsgünstige Kredite und Zuschüsse für:
- Energetische Gebäudesanierung (BEG - Bundesförderung für effiziente Gebäude)
- Heizungsaustausch und erneuerbare Wärmequellen
- Einzelmaßnahmen wie Fenster, Dämm- und Lüftungsarbeiten
- Gesamtsanierungen zu KfW-Effizienzhaus-Standards

## Features

- **4 MCP Tools** für KfW-Datenabfragen
- **Aktuelle KfW-Programmdaten** (2025/2026)
- **Statische Fallback-Datenbank** mit gängigen Programmen
- **Zinssatze und Kreditkonditionen** mit Berechnung
- **Tilgungszuschuss-Ermittlung** (zuschussfinanzierter Darlehensanteil)
- **Typ-sichere Implementierung** in TypeScript

## Installation

### NPM Package

```bash
npm install @sanierungskompass/kfw-mcp
```

### Aus Source

```bash
git clone https://github.com/timfellendorf/kfw-mcp.git
cd kfw-mcp
npm install
npm run build
```

## Verwendung

### Als MCP Server starten

```bash
npm start
# oder für Entwicklung:
npm run dev
```

Der Server lauscht auf Stdin/Stdout im MCP-Protokoll-Format.

### Mit Claude Desktop konfigurieren

Bearbeiten Sie `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) oder den Äquivalent unter Windows/Linux:

```json
{
  "mcpServers": {
    "kfw-foerdermittel": {
      "command": "node",
      "args": ["/pfad/zu/kfw-mcp/dist/index.js"]
    }
  }
}
```

Dann in Claude den Server aktivieren.

### Mit Claude Code

```bash
# Server im Hintergrund starten
npm run dev &

# In Claude Code verwenden:
# - Claude erkennt verfügbare Tools automatisch
# - Tools können direkt in Prompts genutzt werden
```

## Verfügbare Tools

### 1. `kfw_list_programs`

Listet alle verfügbaren KfW-Programme für die Wohngebäudesanierung auf.

**Eingabe:** Keine Parameter erforderlich

**Ausgabe:** Array mit Programmen (ID, Name, Typ, Kategorie, Beschreibung)

**Beispiel:**
```
Claude: "Zeige mir alle verfügbaren KfW-Programme"

Server antwortet mit:
[
  {
    "id": "358",
    "name": "KfW 358 - Ergänzungskredit für Einzelmaßnahmen",
    "type": "Kredit",
    "category": "BEG - Einzelmaßnahmen",
    "description": "Zinsgünstiger Kredit für einzelne energetische Maßnahmen an Wohngebäuden",
    "maxLoanAmount": 120000,
    "interestRate": {
      "current": 2.75,
      "unit": "% p.a. effektiv"
    }
  },
  ...
]
```

### 2. `kfw_get_program_details`

Ruft detaillierte Informationen zu einem spezifischen KfW-Programm ab.

**Parameter:**
- `program_number` (string, erforderlich): KfW Programmnummer (z.B. "358", "261", "458", "459")

**Ausgabe:** Detaillierte Programminformationen

**Beispiel:**
```
Claude: "Gib mir Details zum KfW 358 Programm"

Server antwortet mit:
{
  "id": "358",
  "name": "KfW 358 - Ergänzungskredit für Einzelmaßnahmen",
  "type": "Kredit",
  "description": "Zinsgünstiger Kredit für einzelne energetische Maßnahmen an Wohngebäuden",
  "maxLoanAmount": 120000,
  "eligibleMeasures": [
    "Fenstertausch",
    "Türentausch",
    "Dachdämmung",
    "Wanddämmung",
    "Kellerdeckendämmung",
    "Heizungsanlage",
    "Lüftungsanlage",
    "Solarthermieanlage"
  ],
  "interestRate": {
    "current": 2.75,
    "unit": "% p.a. effektiv"
  },
  "maxRepaymentPeriod": 20,
  "minRepaymentPeriod": 4,
  "tilgungszuschuss": 0,
  "notes": "Für einzelne energetische Sanierungsmaßnahmen"
}
```

### 3. `kfw_check_eligibility`

Prüft, welche KfW-Programme für eine bestimmte Sanierungsmaßnahme geeignet sind.

**Parameter:**
- `measure` (string, erforderlich): Sanierungsmaßnahme (z.B. "Fenstertausch", "Dachdämmung", "Heizungsaustausch", "Wärmepumpe")
- `building_type` (string, optional): Gebäudetyp (z.B. "Wohngebäude")
- `is_owner_occupied` (boolean, optional): Eigengenutzt?

**Ausgabe:** Anwendbare Programme mit Empfehlungen

**Beispiel:**
```
Claude: "Welche KfW-Programme gibt es für Wärmepumpen?"

Server antwortet mit:
{
  "measure": "Wärmepumpe",
  "applicablePrograms": [
    {
      "id": "458",
      "name": "KfW 458 - Heizungsförderung",
      "type": "Zuschuss",
      "eligibilityNotes": "30% Basis + bis zu 40% Bonuszuschläge = max 70%"
    },
    {
      "id": "359",
      "name": "KfW 359 - Kredit für Sanierungsmaßnahmen",
      "type": "Kredit",
      "eligibilityNotes": "Umfassende Sanierung mit Effizienzhaus-Standard"
    }
  ],
  "matchCount": 2,
  "recommendations": [
    "Zuschuss- und Kreditprogramme verfügbar - vergleichen Sie die Konditionen.",
    "Zuschuss-Programme erfordern keine Rückzahlung.",
    "Kredit-Programme bieten zinsgünstige Darlehen."
  ]
}
```

### 4. `kfw_calculate_funding`

Berechnet die geschätzten Kreditraten und Fördersummen für ein KfW-Programm.

**Parameter:**
- `program` (string, erforderlich): KfW Programmnummer (z.B. "358", "458")
- `loan_amount` (number, erforderlich): Kreditbetrag/Zuschussbetrag in EUR
- `term_years` (number, optional): Laufzeit in Jahren (Standard: 15 Jahre für Kredite)

**Ausgabe:** Berechnung mit monatlicher Rate, Gesamtbelastung, Zinssatz und Tilgungszuschuss

**Beispiel:**
```
Claude: "Berechne die monatliche Rate für einen 50.000€ Kredit im KfW 358 über 15 Jahre"

Server antwortet mit:
{
  "program": "358",
  "loanAmount": 50000,
  "termYears": 15,
  "type": "Kredit",
  "monthlyPayment": 351.24,
  "totalPayment": 63223.0,
  "totalInterest": 13223.0,
  "effectiveInterestRate": 2.75,
  "tilgungszuschuss": 0,
  "netLoanAmount": 50000,
  "notes": "Zinssatz: 2.75% p.a. effektiv"
}
```

**Für Zuschüsse (z.B. KfW 458):**
```
Claude: "Berechne den Zuschuss für eine 15.000€ Wärmepumpen-Anlage im KfW 458"

Server antwortet mit:
{
  "program": "458",
  "loanAmount": 15000,
  "type": "Zuschuss",
  "monthlyPayment": 0,
  "tilgungszuschuss": 10500,
  "netLoanAmount": 4500,
  "subsidyPercentage": 70,
  "notes": "70% Zuschuss = 10500€ nicht rückzahlbar"
}
```

## Unterstützte KfW-Programme

| Nummer | Name | Typ | Kategorie |
|--------|------|-----|-----------|
| 358 | Ergänzungskredit für Einzelmaßnahmen | Kredit | BEG Einzelmaßnahmen |
| 359 | Kredit für Sanierungsmaßnahmen | Kredit | BEG Vollsanierung |
| 261 | Wohngebäude Kredit Effizienzhaus | Kredit | BEG Effizienzhaus |
| 458 | Heizungsförderung | Zuschuss | BEG Heizung |
| 459 | Zuschuss Einzelmaßnahmen | Zuschuss | BEG Einzelmaßnahmen |

(Weitere Program wie 455, 440, 461 als Auslaufprogramme im Datensatz)

## Programmlogik

### Datenbeschaffung

1. **Primär:** Fallback auf statische Datenbank (`src/data/kfw-programs.json`)
2. **Sekundär:** Versuch, Live-Daten von `https://www.kfw.de/inlandsfoerderung/Privatpersonen/Bestandsimmobilien/` zu scrapen
3. Bei Scraping-Fehler → Statische Daten werden automatisch genutzt

### Fördersumme-Berechnung

Für **Kredite**:
- Monatliche Rate: Standardisierte Annuitättenformel mit Zinseszins
- Tilgungszuschuss wird von der Kreditbasis abgezogen
- Effektiver Zinssatz nach KfW-Vorgaben

Für **Zuschüsse**:
- Prozentuale Bezuschussung auf Gesamtkosten
- KfW 458: Basis 30% + Bonuszuschläge (bis 70% max)
- KfW 459: Basis 15% + Standards (bis 25% max)

## Entwicklung

### Projekt-Struktur

```
kfw-mcp/
├── src/
│   ├── index.ts                 # MCP Server Entry Point
│   ├── tools/
│   │   ├── listPrograms.ts      # Tool 1: Programmübersicht
│   │   ├── programDetails.ts    # Tool 2: Details
│   │   ├── checkEligibility.ts  # Tool 3: Eignung
│   │   └── calculateFunding.ts  # Tool 4: Berechnung
│   ├── utils/
│   │   └── scraper.ts           # Web-Scraping-Hilfsfunktionen
│   └── data/
│       └── kfw-programs.json    # Statische Programmdatenbank
├── dist/                        # Kompilierte JavaScript-Dateien
├── package.json
├── tsconfig.json
└── README.md
```

### Build und Test

```bash
# TypeScript compilieren
npm run build

# Server starten
npm start

# Entwicklungsmodus (mit Auto-Rebuild)
npm run dev
```

### Daten aktualisieren

Programm- und Zinssatzdaten können in `src/data/kfw-programs.json` aktualisiert werden:

```json
{
  "programs": [
    {
      "id": "358",
      "name": "KfW 358 - ...",
      "interestRate": { "current": 2.75, "unit": "% p.a. effektiv" },
      ...
    }
  ]
}
```

## Lizenz

MIT License - Siehe `LICENSE` Datei

## Kontakt

Tim Fellendorf <timfellendorf@googlemail.com>

Teil des Sanierungskompass-Projekts zur Unterstützung energetischer Gebäudesanierung in Deutschland.