Tools, Resources & Prompts
Wissen
Jeder MCP-Server kann drei Arten von Fähigkeiten bereitstellen. Diese werden Primitives genannt und bilden das Fundament jeder MCP-Integration. Jedes Primitive hat einen klaren Zweck und eine definierte Interaktionsweise.
Primitive 1: Tools
Tools sind Funktionen, die das LLM aktiv ausführen kann. Sie verändern Zustand oder führen Berechnungen durch.
Beispiele für Tools:
create_issue-- Erstellt ein Jira-Ticketsend_message-- Sendet eine Slack-Nachrichtrun_query-- Führt eine Datenbank-Abfrage auscreate_branch-- Erstellt einen Git-Branch
Tool-Definition
Ein Tool wird im Server mit einem JSON-Schema definiert:
server.setRequestHandler(ListToolsRequestSchema, async () => ({
tools: [
{
name: "create_issue",
description: "Erstellt ein neues Issue im Projektmanagement-Tool",
inputSchema: {
type: "object",
properties: {
title: {
type: "string",
description: "Titel des Issues"
},
priority: {
type: "string",
enum: ["low", "medium", "high", "critical"],
description: "Prioritaet des Issues"
}
},
required: ["title"]
}
}
]
}));
Wie Tools aufgerufen werden
Der Ablauf bei einem Tool-Call:
- Das LLM erkennt, dass ein Tool hilfreich wäre
- Es sendet einen
tools/call-Request mit dem Tool-Namen und Argumenten - Der Server führt die Funktion aus
- Der Server sendet das Ergebnis zurück
- Das LLM verarbeitet das Ergebnis und antwortet dem Nutzer
iHuman-in-the-Loop
Bei sensiblen Tools (z.B. Daten löschen, Nachrichten senden) kann der Host den Nutzer um Bestätigung bitten, bevor der Tool-Call ausgeführt wird. Das ist eine wichtige Sicherheitsfunktion.
Primitive 2: Resources
Resources sind Daten, die das LLM lesen kann -- ohne etwas zu verändern. Sie erweitern den Kontext des LLMs.
Beispiele für Resources:
project://PROJ-123/status-- Aktueller Status eines Projektsconfluence://page/12345-- Inhalt einer Wiki-Seitegit://repo/main/README.md-- Dateiinhalt aus einem Repositorymetrics://dashboard/sales-- Aktuelle Verkaufszahlen
Resource-Definition
server.setRequestHandler(ListResourcesRequestSchema, async () => ({
resources: [
{
uri: "project://current/sprint",
name: "Aktueller Sprint",
description: "Status und Aufgaben des aktuellen Sprints",
mimeType: "application/json"
}
]
}));
Primitive 3: Prompts
Prompts sind vordefinierte Prompt-Templates, die der Server bereitstellt. Sie helfen Nutzern, wiederkehrende Aufgaben effizient zu formulieren.
Beispiele für Prompts:
code-review-- Template für strukturiertes Code-Reviewbug-report-- Template für Bug-Reports mit allen nötigen Infosmeeting-summary-- Template zum Zusammenfassen von Meeting-Notizen
Prompt-Definition
server.setRequestHandler(ListPromptsRequestSchema, async () => ({
prompts: [
{
name: "code-review",
description: "Strukturiertes Code-Review für einen Pull Request",
arguments: [
{
name: "pr_number",
description: "Nummer des Pull Requests",
required: true
},
{
name: "focus",
description: "Worauf soll der Review fokussiert sein?",
required: false
}
]
}
]
}));
Wie Prompts genutzt werden
Im Gegensatz zu Tools werden Prompts vom Nutzer ausgewählt, nicht vom LLM. In Claude Desktop findest du sie zum Beispiel über das /-Menü:
Nutzer: /code-review pr_number=42 focus=security
-> Der Server liefert ein vorbereitetes Prompt-Template:
"Fuehre ein Code-Review für PR #42 durch.
Fokus: Security
Prüfe auf:
- SQL Injection
- XSS-Schwachstellen
- Unsichere Abhaengigkeiten
- Fehlende Input-Validierung"
Verstehen
Unterschied zwischen Tools und Resources
| Aspekt | Tools | Resources |
|---|---|---|
| Zweck | Aktionen ausführen | Daten bereitstellen |
| Seiteneffekte | Ja (verändern Zustand) | Nein (nur lesen) |
| Auslöser | LLM entscheidet | LLM oder Nutzer |
| Analogie | POST/PUT/DELETE | GET |
Die drei Primitives im Zusammenspiel
Ein einzelner MCP-Server kombiniert oft alle drei Primitives. Hier ein Beispiel für einen GitHub-MCP-Server:
| Primitive | Beispiele |
|---|---|
| Tools | create_issue, merge_pr, create_branch |
| Resources | repo://owner/name/README.md, pr://123/diff |
| Prompts | code-review, release-notes, bug-triage |
Ein MCP-Server bietet Zugriff auf den aktuellen Sprint-Status in Jira. Ist das ein Tool oder eine Resource?
Anwenden
Vervollständige die MCP-Tool-Definition:
Ordne die Beispiele dem richtigen MCP-Primitive zu:
Reflektieren
Tools, Resources und Prompts bilden die drei Primitives von MCP: Aktionen ausführen, Daten lesen und Templates bereitstellen. Zusammen decken sie alle Interaktionsformen ab, die ein KI-Agent mit externen Systemen braucht. Im nächsten Abschnitt baust du deinen eigenen MCP-Server.