Lektion 4 von 6·10 Min Lesezeit

Resources & Prompts

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

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.

Statische Resources

server.resource(
  "docs://api-reference",
  "API-Dokumentation für das Produkt",
  async () => ({
    contents: [{
      uri: "docs://api-reference",
      text: apiDocumentation,
      mimeType: "text/markdown"
    }]
  })
);

Dynamische Resources

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"
      }]
    };
  }
);

Resource-Typen

TypURI-SchemaBeispiel
Dateienfile://file:///docs/readme.md
Datenbankdb://db://users/123
APIapi://api://weather/berlin
Configconfig://config://app/settings
CustomEigenes Schemacrm://contacts/active

Prompts

Prompts sind vordefinierte Interaktionsmuster, die der Server bereitstellt. Der Client kann sie anfordern und dem Nutzer anbieten.

Prompt definieren

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")
      }
    }]
  })
);

Prompts auflisten und nutzen

// 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"
  }
});

Sampling

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.

Context Management

Effizientes Context Loading

// 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);
}

Context Window beachten

  • Resources verbrauchen Tokens im Context Window
  • Nur relevante Resources laden, nicht alle
  • Zusammenfassungen statt vollständiger Dokumente bei großen Resources

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.