Zum Inhalt springen

Eigene Werkzeuge

Eigene Werkzeuge erweitern den MCP-Server von Guida um Funktionen, die nur in einem bestimmten Arbeitsbereich gelten. Sie definieren Werkzeuge in tools.json; verbundene KI-Agenten können sie dann mit einem Parameterschema aufrufen.

Legen Sie im Stammordner des Arbeitsbereichs eine tools.json an:

{
"tools": [
{
"name": "search-products",
"description": "Search the product catalog by keyword",
"script": "scripts/search-products.js",
"timeout": 30,
"parameters": {
"type": "object",
"properties": {
"keyword": {
"type": "string",
"description": "Search keyword"
},
"maxResults": {
"type": "number",
"description": "Maximum results to return"
}
},
"required": ["keyword"]
}
}
]
}
FeldErforderlichBedeutung
nameJaWerkzeugname, der über MCP sichtbar ist
descriptionJaLesbare Beschreibung für Werkzeuglisten
scriptJaSkriptpfad relativ zum Arbeitsbereich
timeoutNeinAusführungszeitlimit in Sekunden
parametersNeinJSON Schema für Eingabeparameter
headersNeinHTTP-Header, die in g.http.makeHttpRequest() eingespeist werden

Das parameters-Feld verwendet JSON Schema. Der KI-Agent sieht dieses Schema und liefert passende Argumente. Im Skript stehen sie unter g.tool.args bereit:

async function main() {
const keyword = g.tool.args.keyword;
const maxResults = g.tool.args.maxResults || 10;
await g.nav.navigateToUrl("https://store.example.com/search?q=" + keyword);
// ... Ergebnisse extrahieren ...
return results.slice(0, maxResults);
}

Der Rückgabewert von main() wird serialisiert und als Werkzeugergebnis an den Agenten zurückgegeben.

Header können {{SECRET_NAME}}-Vorlagen verwenden. Guida ersetzt sie zur Laufzeit durch verschlüsselt gespeicherte Zugangsdaten; der KI-Agent sieht die Werte nicht.

{
"tools": [
{
"name": "fetch-api-data",
"description": "Fetch data from the internal API",
"script": "scripts/api-fetch.js",
"headers": {
"Authorization": "Bearer {{API_TOKEN}}",
"X-Api-Key": "{{API_KEY}}"
}
}
]
}

Wenn ein Agent ein eigenes Werkzeug ausführt, lädt Guida das Skript, verarbeitet @timeout, stellt g.tool.args bereit, löst Header-Vorlagen auf und führt das Skript mit ScriptTaskOrigin.Mcp aus. Deshalb bleibt g.secrets.getSecret() weiterhin blockiert.

WerkzeugBeschreibung
GetWorkspaceToolsListet eigene Werkzeuge mit Parameterschemas
ExecuteWorkspaceToolFührt ein Werkzeug mit Parametern aus
ReloadWorkspaceToolsLädt tools.json nach Änderungen neu