Skip to main content

fega-schmitt-mcp

Publish License: MIT uv Ruff

Status: Preis-/Verfügbarkeitsabfrage (SOAP) sowie Webshop-Zugriff (Suche, Artikeldetails, Warenkörbe, Bestellungen, ...) implementiert, noch nicht auf PyPI veröffentlicht.

Ein dünner MCP-Server, der KI-Assistenten (z. B. Claude) Zugriff auf Daten von FEGA & Schmitt Elektrogroßhandel gibt — Preis- und Verfügbarkeitsabfragen für Artikel sowie Zugriff auf die Webshop-Weboberfläche (Suche, Artikeldetails, Warenkörbe, Bestellungen, Aktionsangebote).

Die gesamte Protokoll-/API-Logik (SOAP, Auth, Fehlercodes, XML, Webshop-Scraping) lebt nicht in diesem Repo, sondern in der eigenständigen Python-Library fega-schmitt-client (Repo unter GIT/Python/, auf PyPI veröffentlicht). Dieses Repo bildet nur die Brücke zwischen MCP-Protokoll und dieser Library.

graph LR
    Host["MCP-Host<br/>(Claude Desktop / Claude Code / ...)"] -->|stdio, JSON-RPC| MCP["fega-schmitt-mcp<br/>(dieses Repo)"]
    MCP -->|Python-Aufruf| LIB["fega-schmitt-client<br/>(eigenes Repo + PyPI-Paket)"]
    LIB -->|SOAP/HTTPS| API["FEGA & Schmitt<br/>Preis-/Verfügbarkeitsservice"]
    LIB -->|HTTPS, Scraping| SHOP["FEGA & Schmitt<br/>Webshop-Frontend"]

    style MCP fill:#2b6cb0,color:#fff

Suchst du die Python-Library oder das CLI-Tool? Siehe fega-schmitt-client — die eigenständige Library, die dieser MCP-Server verpackt.

Warum zwei Pakete?

  • fega-schmitt-client: reine Python-Library, kein MCP-/KI-spezifischer Code. Eigenständig nutzbar (Skripte, andere Services), unabhängig testbar, unabhängig versionierbar.
  • fega-schmitt-mcp (dieses Repo): übersetzt die Library-Funktionen in MCP-Tools (stdio-Transport, Tool-Schemas, Fehler-Serialisierung für MCP-Clients). Enthält selbst keine SOAP-/XML-Logik.

Tools

SOAP-Preisservice

Tool Beschreibung
get_price_availability Preis und Verfügbarkeit für bis zu 999 Artikel je Anfrage. Eingabe: Liste von Artikelnummern mit Menge und optionaler Mengeneinheit. Ausgabe je Artikel: Verfügbarkeitsstatus, Nettopreis, Listenpreis, Zu-/Abschläge, Lagerzuordnung. Fehlerfälle (unbekannte Artikelnummer, ungültige Mengeneinheit, Mengenüberlauf) werden je Position gemeldet, ohne die gesamte Anfrage abzubrechen.

Webshop (best-effort, nicht offiziell dokumentiert)

Diese Tools sprechen die Kunden-Weboberfläche (shop.fega.de) statt einer dokumentierten Schnittstelle an — siehe fega-schmitt-client/docs/extensions.md für Details/Vorbehalte je Methode. Nutzen dieselben Zugangsdaten wie get_price_availability.

Tool Beschreibung
web_search_articles Artikelsuche über Artikelnummer, EAN, Herstellerteilenummer oder Freitext (ein gemeinsames Suchfeld).
web_get_article Alle bekannten Artikeldetails in einem Aufruf: EAN, Herstellernummer(n), Kategorie, eigene Artikelnummer, Attribute, Bilder, Schnittkosten sowie Artikelnummern von Zubehör/Varianten/Alternativen/Cross-Sell.
web_set_article_number Eigene (kundenspezifische) Artikelnummer für einen Artikel setzen.
web_get_cable_lengths Verfügbare Kabellängen (Trommeln/Reststücke) eines Kabelartikels je Lagerstandort.
web_list_articles_by_category Artikel einer UWG-Warengruppe auflisten.
web_get_favorites Gespeicherte Favoritenliste abrufen.
web_get_deal_campaigns Aktive Aktionsangebote-Kampagnen auflisten.
web_get_deal_articles Artikel einer Aktionsangebote-Kampagne abrufen.
web_get_daily_deals Tagesangebote abrufen.
web_get_second_choice_articles "2. Wahl"/B-Ware-Artikel abrufen.
web_get_cart Inhalt eines Warenkorbs (Standard: aktuell aktiver) abrufen.
web_get_cart_list Alle Warenkörbe des Kunden auflisten.
web_get_order_list Bestellübersicht abrufen.
web_get_order Positionen einer einzelnen Bestellung abrufen.

Installation

Voraussetzungen

  • Python ≥ 3.10
  • uv

Dependencies installieren

uv sync

Server starten (Entwicklung)

export FEGA_CUSTOMER_NUMBER=9920
export FEGA_SHOP_PASSWORD=...
uv run fega-schmitt-mcp
# oder
uv run python -m fega_schmitt_mcp.server

Mit dem MCP Inspector testen

uv run mcp dev src/fega_schmitt_mcp/server.py

Konfiguration in VS Code / Claude Desktop

Server in der MCP-Konfiguration eintragen (.vscode/mcp.json bzw. claude_desktop_config.json):

Installation von PyPI:

{
  "servers": {
    "fega-schmitt": {
      "command": "bash",
      "args": ["-l", "-c", "uvx fega-schmitt-mcp"],
      "env": {
        "FEGA_CUSTOMER_NUMBER": "9920",
        "FEGA_SHOP_PASSWORD": "..."
      }
    }
  }
}

Installation von GitHub:

{
  "servers": {
    "fega-schmitt": {
      "command": "bash",
      "args": [
        "-l",
        "-c",
        "uvx --from git+https://github.com/the78mole/fega-schmitt-mcp.git fega-schmitt-mcp"
      ],
      "env": {
        "FEGA_CUSTOMER_NUMBER": "9920",
        "FEGA_SHOP_PASSWORD": "..."
      }
    }
  }
}

Lokale Entwicklung (Workspace-Checkout):

{
  "servers": {
    "fega-schmitt": {
      "command": "bash",
      "args": ["-l", "-c", "uv --directory ${workspaceFolder} run fega-schmitt-mcp"],
      "env": {
        "FEGA_CUSTOMER_NUMBER": "9920",
        "FEGA_SHOP_PASSWORD": "..."
      }
    }
  }
}

Hinweis: bash -l lädt das Login-Shell-Profil, damit uvx/uv in ~/.local/bin gefunden werden, ohne dass eine zusätzliche env/PATH-Konfiguration nötig ist.

Umgebungsvariablen

Variable Default Beschreibung
FEGA_CUSTOMER_NUMBER – (erforderlich) FEGA & Schmitt-Kundennummer (PARTNER_PURCHASER)
FEGA_SHOP_PASSWORD – (erforderlich) Shop-Kennwort (LEGITIMATION_ID)
FEGA_ENDPOINT https://soap.fega.de/priceavail.php Abweichende SOAP-Service-URL, z. B. für Tests gegen einen Mock-Server
FEGA_SHOP_BASE_URL https://shop.fega.de Abweichende Webshop-Basis-URL für die web_*-Tools
FEGA_TIMEOUT 30 HTTP-Timeout in Sekunden (gilt für beide Backends)

Fehlen FEGA_CUSTOMER_NUMBER/FEGA_SHOP_PASSWORD, liefert das Tool {"error": ...} statt eine Exception zu werfen — Secrets werden nie geloggt oder im Code hinterlegt (siehe docs/architecture.md, Abschnitt 3).

Beispiel

get_price_availability(items=[
    {"material_number": "0815", "quantity": "200", "unit": "MTR"},
    {"material_number": "4711"},
])

liefert:

{
  "results": [
    {
      "line_item_number": 1,
      "material_number": "0815",
      "status": "ok",
      "return_code": "I720",
      "return_code_text": "OK",
      "availability_status": "V",
      "warehouse_number": "10",
      "warehouse_name": "Zentrallager",
      "price_amount": "12.50",
      "net_amount": "13.20",
      "list_amount": "15.00",
      "surcharges": [{"code": "CU", "text": "Kupferzuschlag", "amount": "0.70"}]
    },
    {
      "line_item_number": 2,
      "material_number": "4711",
      "status": "error",
      "return_code": "E999",
      "return_code_text": "Bitte pruefen Sie Ihre Anmeldedaten",
      "availability_status": null,
      "warehouse_number": null,
      "warehouse_name": null,
      "price_amount": null,
      "net_amount": null,
      "list_amount": null,
      "surcharges": []
    }
  ]
}

Webshop-Beispiel:

web_get_article(material_number="0815")

liefert (gekürzt):

{
  "material_number": "0815",
  "ean": "4012345678901",
  "own_article_number": "MEIN-0815",
  "category": {"id": "UWG_14_87", "name": "Leitungsschutzschalter"},
  "attributes": {"Nennspannung": "230 V"},
  "images": [{"url": "https://shop.fega.de/img/0815-1.jpg", "is_primary": true}],
  "accessories": ["1000"],
  "variants": ["1001", "1002"],
  "alternatives": [],
  "cross_sell": ["1004"]
}

Über FEGA & Schmitt

FEGA & Schmitt ist ein deutscher Elektrogroßhändler. Details zu den verfügbaren Schnittstellen (SOAP-Preisservice, IDS-Branchenstandard, UGL4-Branchenstandard, Webshop-Frontend) siehe die Architekturbeschreibung der Library: fega-schmitt-client/docs/architecture.md.

Lokale Entwicklung

# Projektumgebung einrichten
uv sync

# Linting & Formatting
uv run ruff format .
uv run ruff check --fix .

# Tests
uv run pytest

Offene Punkte

  • Test-/Produktivzugangsdaten für den SOAP-Service (siehe fega-schmitt-client-Repo)
  • Zielumgebung des MCP-Servers (lokal per stdio, oder als gehosteter Dienst?)
  • Endgültiger PyPI-/Paketname (fega-schmitt-mcp ist ein Arbeitstitel)
  • PyPI Trusted Publishing muss einmalig manuell auf pypi.org eingerichtet werden (Workflow-Datei publish.yml, Environment pypi), bevor der Release-Workflow tatsächlich veröffentlichen kann

Related Projects

Project Description
fega-schmitt-client Python-Library, die dieser MCP-Server verpackt. Enthält die gesamte SOAP-/Protokoll-Logik sowie ein eigenständiges CLI.

Lizenz

MIT, siehe LICENSE.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fega_schmitt_mcp-0.1.1.tar.gz (102.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fega_schmitt_mcp-0.1.1-py3-none-any.whl (12.3 kB view details)

Uploaded Python 3

File details

Details for the file fega_schmitt_mcp-0.1.1.tar.gz.

File metadata

  • Download URL: fega_schmitt_mcp-0.1.1.tar.gz
  • Upload date:
  • Size: 102.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for fega_schmitt_mcp-0.1.1.tar.gz
Algorithm Hash digest
SHA256 eb5d07fda462f3f84faa165ece6bd211a14ccbcda4b6460cb0707d5c61c02880
MD5 251001d28f439a3dc86c79ddf0dec861
BLAKE2b-256 2fdab27e73bf7ff7fe1e1af22ee82190f40418af295b3be89d52a601019f0cf9

See more details on using hashes here.

Provenance

The following attestation bundles were made for fega_schmitt_mcp-0.1.1.tar.gz:

Publisher: publish.yml on the78mole/fega-schmitt-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fega_schmitt_mcp-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for fega_schmitt_mcp-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 30ee05f958328041a541543ce77ad71f05ac4cfd216b28e367e5cd6389f40670
MD5 639b8ef158c2113c6a27bb4385b14a89
BLAKE2b-256 dd26734d2b39b9f08817679ee881a5079913ad2a434816576f27901b395c6345

See more details on using hashes here.

Provenance

The following attestation bundles were made for fega_schmitt_mcp-0.1.1-py3-none-any.whl:

Publisher: publish.yml on the78mole/fega-schmitt-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 files

0.0.12

2 files

0.0.11

2 files

0.0.10

2 files

0.0.9

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page