MCP-SQL-Tool verwalten

Verwaltung für spezifische MCP-SQL-Endpunkte durch Angabe von SQL-Befehl sowie Eingabe- und Ausgabe-Feldern.

Der Kopfbereich für MCP-SQL-Endpunkte wird verwaltet in MCP-SQL-Tool verwalten OP84111.

Felder für MCP-SQL-Endpunkte werden verwaltet in MCP-SQL-Tool Felder verwalten OP84121.

Verwendung

MCP-SQL-Endpunkte dienen dazu, spezifische SQL-Abfragen zu definieren, um sie als MCP-Endpunkt bereitzustellen und durch KI-Agenten oder LLM zugänglich zu machen.

Dafür können SQL-Select-Befehle (selbstdefiniert oder Vorlagen aus SQL-Befehle OP10460R) verwendet werden, um parametrisierte Abfragen zu hinterlegen.

Zu jeder Abfrage sind die Eingabe- und Ausgabe-Felder zu hinterlegen (in MCP-SQL-Tool verwalten OP84111 und in MCP-SQL-Tool Felder verwalten OP84121),
um zu beschreiben, welche Werte der MCP-Endpunkt für die Abfrage erlaubt und (zwingend) erwartet und welche Werte der Endpunkt liefert.

KI-Agenten können die MCP-Endpunkte verwenden und, anhand der Beschreibung der Endpunkte inkl. der möglichen und verpflichtenden Eingabe-Parameter und den zur Verfügung gestellten Ausgabe-Parametern,
dynamisch und flexibel Anfragen an das oxaion ERP stellen und auf Daten zuzugreifen.

Technische Information

Beispiel: meistverkaufte Artikel auflisten (oxaion_mcp_sql_top10_article)

Zweck & Verwendung

Zweck: KI-Agenten können die meist-verkauften Artikel für einen Kunden für den aktuellen Zeitpunkt ermitteln

Voraussetzung: der KI-Agent kennt die Pflicht-Eingabefelder <Kundennummer> und <Filiale>

Werkzeuge: oxaion MCP-Server und der open-MCP-Endpunkt oxaion_mcp_sql_top10_article

Defintion & SQL-Statement

Als Beispiel dient die Anforderung: ermittle die TOP 10 verkauften Artikel eines Kunden

Der dafür konfigurierte MCP-Endpunkt erhält den Namen: oxaion_mcp_sql_top10_article

Das für den MCP-Endpunkt genutze SQL-Select-Statement:

select
        TOP (10) RPIDNR as ARTICLE_NUMBER    ,
        sum(RPNEDM)     as TOTAL_NET_AMOUNT  ,
        sum(RPBRDM)     as TOTAL_GROSS_AMOUNT,
        sum(RPLFS1)     as TOTAL_QUANTITY    ,
        RPMEK1          as UNIT_OF_MEASURE
from
        VRPOSP as INV_POS
where
        RPUPOS = 0
and     RPPOAR <> N'Z'
and     RPFIRM = N'%MNFIRM%'
--and     RPKDNR = N'$CUSTOMER_NUMBER'
--and     RPFINR = N'$FINANCIAL_AREA'
group by
        RPIDNR,
        RPMEK1
order by
        2 DESC

Eingabe-Parameter

Für die Abfrage gibt es 2 erforderliche Pflicht-Eingabe-Parameter:

  1. Kundennummer RPKDNR: CUSTOMER_NUMBER und
  2. Filiale zum Kunden RPFINR: FINANCIAL_AREA

Ohne Angabe der Pflicht-Eingabe-Parameter liefert der MCP-Endpunkt keine Ergebnisse.

Die Pflicht-Eingabe-Parameter werden nicht im Ausgabe-Format zurückgeliefert.

Weitere, optionale Eingabe-Parameter werden nicht verwendet und sind im Beispiel nicht benötigt.

Die SQL-Abfrage definiert zusätzlich unveränderliche Parameter, um nur die gültigen Datensätze aus VRPOSP zu verarbeiten:

  1. Unterposition RPUPOS=0
  2. Positionsart RPPOAR<>Z

Ausgabe-Parameter

Die Ausgabe-Parameter ergeben sich aus den selektierten Feldern der SQL-Abfrage:

  1. Artikelnummer RPIDNR: ARTICLE_NUMBER
  2. Summe der Nettobeträge aus RPNEDM: TOTAL_NET_AMOUNT
  3. Summe der Bruttobeträge aus RPBRDM: TOTAL_GROSS_AMOUNT
  4. Summe der Mengen aus RPLFS1: TOTAL_QUANTITY
  5. Mengeneinheit RPMEK1: UNIT_OF_MEASURE

Beispiel: Ansprechpartner & Kontaktdaten finden (oxaion_mcp_sql_find_contact)

Zweck & Verwendung

Zweck: KI-Agenten können Geschäftspartner und Ansprechpartner sowie deren Kontaktdaten wie Telefonnummer und E-Mail-Adressen abfragen, um bspw.

  • zu einem Geschäftspartner alle Ansprechpartner zu ermitteln
  • zu einem Ansprechpartner anhand Name / Vorname die Kontaktdaten zu ermitteln
  • ausgehend von einer Telefonnummer einen Ansprechpartner ermitteln

Voraussetzung: keine Pflichtfelder - vollständige Liste im Mandanten oder gefiltert entsprechend der vom KI-Agent übergebenen Filter-Werte

Werkzeuge: oxaion MCP-Server und der open-MCP-Endpunkt oxaion_mcp_sql_find_contact

Defintion & SQL-Statement

Als Beispiel dient die Anforderung: zu einem Ansprechpartner anhand Name / Vorname die Kontaktdaten zu ermitteln

Der dafür konfigurierte MCP-Endpunkt erhält den Namen: oxaion_mcp_sql_find_contact

Das für den MCP-Endpunkt genutze SQL-Select-Statement:

select
        TOP (500)
        --Schlüsselwerte
        UPKASP.PAPKNR                 as CUSTOMER_NUMBER      ,
        UPKASP.PAPFIN                 as FINANCIAL_AREA       ,
        UPKASP.PAASNR                 as CONTACT_NUMBER       ,
        --UPKASP.PAFIRM,
        --Ansprechpartner
        UPKASP.PANNAM                 as CONTACT_LASTNAME     ,
        UPKASP.PAVNAM                 as CONTACT_FIRSTNAME    ,
        --Anrede: Klartext
        UPKASP.PAXARA                 as SALUTATION_KEY       ,
        SUBSTRING(XARA.TBSATZ, 55, 5) as SALUTATION_TEXT      ,
        UPKASP.PATELA                 as CONTACT_TELEPHON     ,
        UPKASP.PAATBZ                 as CONTACT_DEPARTMENT   ,
        UPKASP.PAINET                 as CONTACT_EMAIL_ADDRESS,
        --Geschäftspartner
        UPKADP.PKOAZLK                as CUSTOMER_ADDRESS_TEXT,
        UPKADP.PKLANR                 as CUSTOMER_COUNTRY_KEY ,
        UPKADP.PKPLZI                 as CUSTOMER_ZIP_CODE    ,
        UPKADP.PKORT                  as CUSTOMER_LOCATION    ,
        UPKADP.PKTELN                 as CUSTOMER_TELEPHON    ,
        UPKADP.PKINET                 as CUSTOMER_EMAIL_ADDRESS
        --Ansprechpartner
from
        OXAION.UPKASP
left join
        OXAION.UFIRMP as UPKADP_FIRM
on
        UPKADP_FIRM.FIFIRM = N'ODD'
        --Geschäftspartner/Adresse
left join
        OXAION.UPKADP as UPKADP
on
        UPKADP.PKFAAD = UPKADP_FIRM.FIFAAD
and     UPKADP.PKPKNR = UPKASP.PAPKNR
and     UPKADP.PKPFIN = UPKASP.PAPFIN
        --Anrede: Klartext über FRD267
left join
        OXAION.TBPOSP as XARA
on
        XARA.TBFIRM = N''
and     XARA.TBTBGR = N'FRD'
and     XARA.TBSART = N'267'
and     XARA.TBRKEY = UPKASP.PAXARA
and     XARA.TBSPRA = N'%MNXSPR%'
where
        UPKASP.PAFIRM = '%MNFIRM%'

Eingabe-Parameter

Für die Abfrage gibt es keine Pflicht-Eingabe-Parameter, sodass ohne Angabe von Filter-Bedingungen die vollständige Liste im Mandaten geliefert wird.

Die Einschränkung auf den Mandanten erfolgt über die Variable %MNFIRM%.


Optionale Eingabe-Parameter sind alle weiteren im SQL selektieren Felder (gleichzeitig auch Ausgabe-Parameter):

  • Schlüsselfelder bei eindeutiger Suche:
    • CUSTOMER_NUMBER
    • FINANCIAL_AREA
    • CONTACT_NUMBER
  • Informationen zum Ansprechpartner:
    • CONTACT_LASTNAME
    • CONTACT_FIRSTNAME
    • CONTACT_TELEPHON
    • CONTACT_DEPARTMENT
    • CONTACT_EMAIL_ADDRESS
  • Informationen zum Geschäftspartner:
    • CUSTOMER_COUNTRY_KEY
    • CUSTOMER_ZIP_CODE
    • CUSTOMER_LOCATION
    • CUSTOMER_TELEPHON
    • CUSTOMER_EMAIL_ADDRESS


Wenn es fachlich keinen Wertwert bietet, nach Feld-Werten zu suchen, werden Felder nicht als Eingabe-Parameter, sondern nur als Ausgabe-parameter definiert:

  • SALUTATION_KEY
  • SALUTATION_TEXT
  • CUSTOMER_ADDRESS_TEXT

Ausgabe-Parameter

Alle selektierten Felder sind als Ausgabe-Parameter definiert.

Alle (optionalen) Eingabe-Parameter sind gleichzeitig auch Ausgabe-Parameter und werden somit im Ergebnis zurückgeliefert.

Allein die Einschränkung auf den Mandanten erfolgt über die Variable %MNFIRM% als versteckter, nicht-sichtbarer Eingabe-Parameter und wird ebenfalls nicht im Ergebnis zurückgeliefert.

Variablen

Im SQL-Befehl können Variablen, bspw. aus der MNUDTA verwendet werden, bspw. %MNFIRM% für den dynamischen Wert von MNFIRM bei Ausführung des SQL.


  • Keine Stichwörter
>