MCP Server

KI-Assistenten-Integration via Model Context Protocol

Was ist MCP?

Das Model Context Protocol (MCP) ist ein offener Standard, der es KI-Assistenten wie Claude ermöglicht, direkt mit lokalen Anwendungen zu kommunizieren. Die Überweisungen-App enthält einen eingebetteten MCP Server, der über HTTP und JSON-RPC 2.0 angesprochen wird.

Eingebetteter Server

Der MCP Server läuft direkt in der App — keine separate Installation nötig. Einfach in den Einstellungen (⌘,) den Tab MCP Server öffnen und starten.

  • Protokoll: JSON-RPC 2.0 über HTTP
  • Standard-Port: 8765
  • Sicherheit: Nur localhost (127.0.0.1)
  • Status-Anzeige: Grünes Banner in der Sidebar wenn aktiv

Verfügbare Tools

Der MCP Server stellt 12 Tools bereit:

Lesen & Suchen

  • list_transfers — Alle Überweisungen auflisten mit Filter (offen/überwiesen) und Sortierung
  • get_transfer — Einzelne Überweisung per UUID abrufen
  • search_transfers — Volltextsuche über Empfänger, IBAN, Verwendungszweck, Bank
  • get_statistics — Aggregierte Statistiken (Anzahl, Summen, Top-Empfänger)
  • get_transfer_summary — Lesbare Zusammenfassung für Berichte
  • export_transfers — CSV-Export aller Überweisungen

Erstellen & Bearbeiten

  • create_transfer — Neue Überweisung mit Empfänger, IBAN, Betrag, Zweck
  • update_transfer — Bestehende Überweisung ändern (nur angegebene Felder)
  • delete_transfer — Nicht-überwiesene Buchung löschen
  • mark_transferred — Status zwischen offen und überwiesen wechseln

MoneyMoney-Integration

  • send_to_moneymoney — Überweisung direkt an MoneyMoney senden (per ID oder mit Direktangaben)
  • list_accounts — Alle Girokonten aus MoneyMoney abrufen

API-Endpunkte

Methode Pfad Beschreibung
GET /health Health Check
GET /mcp/tools Liste aller Tools mit Schema
POST /mcp JSON-RPC 2.0 Endpunkt

Beispiele

Health Check

curl http://localhost:8765/health
{
  "status": "ok",
  "server": "Überweisungen MCP Server",
  "version": "1.0"
}

Alle offenen Überweisungen auflisten

curl -X POST http://localhost:8765/mcp \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "list_transfers",
      "arguments": {
        "status": "open",
        "sort_by": "amount",
        "sort_order": "desc"
      }
    }
  }'

Neue Überweisung erstellen

curl -X POST http://localhost:8765/mcp \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 2,
    "method": "tools/call",
    "params": {
      "name": "create_transfer",
      "arguments": {
        "recipient": "Max Mustermann GmbH",
        "iban": "DE89370400440532013000",
        "amount": 1250.50,
        "purpose": "Rechnung RE-2026-042",
        "bank": "Commerzbank"
      }
    }
  }'

An MoneyMoney senden

curl -X POST http://localhost:8765/mcp \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 3,
    "method": "tools/call",
    "params": {
      "name": "send_to_moneymoney",
      "arguments": {
        "recipient": "Stadtwerke München",
        "iban": "DE12500105170648489890",
        "amount": 89.90,
        "purpose": "Strom Februar 2026"
      }
    }
  }'

Statistiken abrufen

curl -X POST http://localhost:8765/mcp \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 4,
    "method": "tools/call",
    "params": {
      "name": "get_statistics",
      "arguments": {}
    }
  }'

Antwort:

{
  "total": { "count": 25, "amount": 15432.50, "average": 617.30 },
  "open": { "count": 8, "amount": 4521.00 },
  "transferred": { "count": 17, "amount": 10911.50 },
  "today": { "count": 3 },
  "this_week": { "count": 7 },
  "this_month": { "count": 12 },
  "top_recipients": [
    { "recipient": "Stadtwerke München", "total_amount": 539.40, "count": 6 }
  ]
}

Überweisungen durchsuchen

curl -X POST http://localhost:8765/mcp \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 5,
    "method": "tools/call",
    "params": {
      "name": "search_transfers",
      "arguments": {
        "query": "Stadtwerke",
        "limit": 5
      }
    }
  }'

CSV-Export

curl -X POST http://localhost:8765/mcp \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 6,
    "method": "tools/call",
    "params": {
      "name": "export_transfers",
      "arguments": { "status": "all" }
    }
  }'

Typische Workflows

Rechnung verarbeiten

  1. create_transfer — Überweisung aus Rechnungsdaten erstellen
  2. get_transfer — Ergebnis prüfen
  3. send_to_moneymoney — An MoneyMoney senden

Monatsübersicht erstellen

  1. get_statistics — Gesamtstatistik abrufen
  2. list_transfers — Alle Überweisungen des Monats auflisten
  3. export_transfers — CSV für Buchhaltung exportieren

Buchung suchen und korrigieren

  1. search_transfers — Nach Empfänger oder IBAN suchen
  2. get_transfer — Details abrufen
  3. update_transfer — Daten korrigieren

Technische Details

Architektur

Der MCP Server ist als @MainActor Singleton implementiert (MCPServerService.shared) und nutzt Apples Network.framework (NWListener) für den TCP-Server. Die JSON-RPC Verarbeitung erfolgt auf dem Main Thread, damit CoreData-Zugriffe sicher sind.

JSON-RPC 2.0 Methoden

Methode Beschreibung
initialize Client-Handshake, Server-Capabilities
tools/list Liste aller Tools mit InputSchema
tools/call Tool ausführen mit Argumenten
ping Verbindungstest

Sicherheit

  • Server lauscht nur auf localhost (127.0.0.1)
  • Keine Authentifizierung — nur für lokale Nutzung
  • Löschungen nur für nicht-überwiesene Buchungen
  • MoneyMoney-Überweisungen landen im Postausgang (nicht direkt ausgeführt)
  • CORS-Header für lokale Web-Clients aktiviert

Hinweis: MoneyMoney ist eine eigenständige macOS Banking-App, entwickelt von MRH applications. Dieses Projekt steht in keiner Verbindung zu MoneyMoney — es nutzt lediglich die öffentliche AppleScript-Schnittstelle zur Datenübergabe.