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:
- Kundennummer RPKDNR: CUSTOMER_NUMBER und
- 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:
- Unterposition RPUPOS=0
- Positionsart RPPOAR<>Z
Ausgabe-Parameter
Die Ausgabe-Parameter ergeben sich aus den selektierten Feldern der SQL-Abfrage:
- Artikelnummer RPIDNR: ARTICLE_NUMBER
- Summe der Nettobeträge aus RPNEDM: TOTAL_NET_AMOUNT
- Summe der Bruttobeträge aus RPBRDM: TOTAL_GROSS_AMOUNT
- Summe der Mengen aus RPLFS1: TOTAL_QUANTITY
- 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.