MCP bietet neben Tools zwei weitere Capabilities: Resources (Daten bereitstellen) und Prompts (vordefinierte Interaktionsmuster). Zusammen bilden sie ein vollständiges Ökosystem für AI-Modell-Integration.
Resources sind Daten, die ein MCP Server dem Client zur Verfügung stellt. Im Gegensatz zu Tools, die aktiv aufgerufen werden, sind Resources passiv — sie stellen Kontext bereit.
server.resource(
"docs://api-reference",
"API-Dokumentation für das Produkt",
async () => ({
contents: [{
uri: "docs://api-reference",
text: apiDocumentation,
mimeType: "text/markdown"
}]
})
);
server.resource(
"data://sales/{period}",
"Verkaufsdaten für einen Zeitraum",
async (uri) => {
const period = uri.pathname.split("/").pop();
const data = await db.query(`SELECT * FROM sales WHERE period = ?`, [period]);
return {
contents: [{
uri: uri.href,
text: JSON.stringify(data),
mimeType: "application/json"
}]
};
}
);
| Typ | URI-Schema | Beispiel |
|---|---|---|
| Dateien | file:// | file:///docs/readme.md |
| Datenbank | db:// | db://users/123 |
| API | api:// | api://weather/berlin |
| Config | config:// | config://app/settings |
| Custom | Eigenes Schema | crm://contacts/active |
Prompts sind vordefinierte Interaktionsmuster, die der Server bereitstellt. Der Client kann sie anfordern und dem Nutzer anbieten.
server.prompt(
"code_review",
"Code Review mit Best Practices durchführen",
{
code: z.string().describe("Der zu reviewende Code"),
language: z.string().describe("Programmiersprache"),
focus: z.enum(["security", "performance", "readability"]).optional()
},
async ({ code, language, focus }) => ({
messages: [{
role: "user",
content: {
type: "text",
text: [
`Führe ein Code Review für folgenden ${language}-Code durch.`,
focus ? `Fokussiere besonders auf: ${focus}` : "",
`\n\n\`\`\`${language}\n${code}\n\`\`\``,
"\nBewerte: Korrektheit, Best Practices, potenzielle Bugs, Verbesserungsvorschläge."
].join("\n")
}
}]
})
);
// Client-Seite
const { prompts } = await client.listPrompts();
// Prompt anfordern
const result = await client.getPrompt({
name: "code_review",
arguments: {
code: "function add(a, b) { return a + b }",
language: "javascript",
focus: "readability"
}
});
MCP unterstützt Sampling — der Server kann das AI-Modell über den Client anfragen:
Server → Client: "Analysiere diese Daten"
Client → AI-Modell → Client → Server: "Ergebnis der Analyse"
Dies ermöglicht serverseitige Workflows, die das AI-Modell als Reasoning-Engine nutzen.
// Nur relevante Resources laden
const resources = await client.listResources();
const relevant = resources.filter(r =>
r.uri.includes(currentTopic)
);
for (const resource of relevant) {
const content = await client.readResource(resource.uri);
context.push(content);
}
Praxis-Tipp: Resources eignen sich hervorragend für Dokumentation, Konfiguration und Referenzdaten. Prompts standardisieren wiederkehrende Interaktionsmuster. Nutzen Sie beides, um Ihren MCP Server über reine Tool-Integration hinaus wertvoll zu machen.