CommunityCodierung & Entwicklunggithub.com

mcp-apps-builder

**Zwingend erforderlich für alle MCP-Server-Arbeiten** – Best Practices und Muster des mcp-use-Frameworks.

Was ist mcp-apps-builder?

Diese Fertigkeit (Skill) dient als zentrale Navigationshilfe und Referenz für die Entwicklung von MCP-Servern mit dem mcp-use-Framework. Sie ist zwingend erforderlich, bevor irgendwelche Änderungen an MCP-Servern vorgenommen werden – sei es das Erstellen neuer Server, das Hinzufügen oder Aktualisieren von Tools, Ressourcen, Prompts oder Widgets, das Debuggen von Fehlern oder die Code-Überprüfung. Der Skill strukturiert die Arbeit in klare Pfade: Grundlagen (Konzepte, Architektur, Quickstart, Deployment), Authentifizierung (OAuth, WorkOS, Supabase, Custom), Server-Backend (Tools, Ressourcen, Prompts, Response-Helfer) und visuelle Widgets (Basics, State, Interaktivität, UI-Guidelines, Advanced). Er enthält kritische Architekturentscheidungen, Sicherheitsmuster und häufige Fehler, und verweist auf detaillierte Referenzdateien, die vor der Implementierung gelesen werden müssen. Der Skill unterstützt die Plattformen Claude Code, Cursor und Codex und stellt sicher, dass alle MCP-Entwicklungen den Best Practices des mcp-use-Frameworks folgen.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Shubhamsaboo/awesome-llm-apps/tree/main/generative_ui_agents/ai-mcp-app-builder/apps/mcp-use-server/.agent/skills/mcp-apps-builder

Installed? Explore more Codierung & Entwicklung skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

WICHTIG: So verwenden Sie diese Fertigkeit

Diese Datei dient NUR als NAVIGATIONSLEITFADEN. Bevor Sie MCP-Server-Funktionen implementieren, MÜSSEN Sie:

  1. Diese Übersicht lesen, um zu verstehen, welche Referenzdateien relevant sind.
  2. IMMER die spezifische(n) Referenzdatei(en) für die von Ihnen implementierten Funktionen lesen.
  3. Die detaillierten Muster aus diesen Dateien auf Ihre Implementierung anwenden.

Verlassen Sie sich NICHT ausschließlich auf die Kurzreferenz-Beispiele in dieser Datei – sie sind nur minimale Beispiele. Die Referenzdateien enthalten kritische Best Practices, Sicherheitsaspekte und fortgeschrittene Muster.


Best Practices für MCP-Server

Umfassender Leitfaden für die Entwicklung produktionsreifer MCP-Server mit Tools, Ressourcen, Prompts und Widgets unter Verwendung von mcp-use.

⚠️ ZUERST: Neues Projekt oder bestehendes Projekt?

Bevor Sie etwas anderes tun, stellen Sie fest, ob Sie sich in einem bestehenden mcp-use-Projekt befinden.

Erkennung: Überprüfen Sie den Arbeitsbereich auf eine package.json, die "mcp-use" als Abhängigkeit aufführt, ODER eine .ts-Datei, die "mcp-use/server" importiert.

├─ mcp-use-Projekt GEFUNDEN → Nicht gerüsten. Sie sind bereits in einem Projekt.
│  └─ Springen Sie zu "Schnellnavigation" unten, um Funktionen hinzuzufügen.
│
├─ KEIN mcp-use-Projekt (leeres Verzeichnis, nicht verwandtes Projekt oder Neuanfang)
│  └─ Zuerst mit npx create-mcp-use-app gerüsten, dann Funktionen hinzufügen.
│     Siehe "Ein neues Projekt gerüsten" unten.
│
└─ In einem NICHT VERWANDTEN Projekt (z. B. Next.js-App) und der Benutzer möchte einen MCP-Server
   └─ Fragen Sie den Benutzer, wo er erstellt werden soll, und gerüsten Sie dann in diesem Verzeichnis.
      Nicht innerhalb eines bestehenden, nicht verwandten Projektstamms gerüsten.

Erstellen Sie NIEMALS manuell MCPServer-Boilerplate, package.json oder eine Projektstruktur von Hand. Die CLI richtet TypeScript-Konfiguration, Entwicklungs-Skripte, Inspector-Integration, Hot Reload und Widget-Kompilierung ein, die manuell schwer zu reproduzieren sind.


Ein neues Projekt gerüsten

npx create-mcp-use-app mein-server
cd mein-server
npm run dev

Vollständige Details zum Gerüstbau und CLI-Flags finden Sie unter quickstart.md.


Schnellnavigation

Wählen Sie Ihren Pfad basierend auf dem, was Sie bauen:

🚀 Grundlagen

Wann: Diese IMMER zuerst lesen, wenn Sie in einer neuen Konversation mit der MCP-Arbeit beginnen. Später zur Klärung von Architektur/Konzepten darauf zurückgreifen.

  1. concepts.md – MCP-Primitive (Tool, Resource, Prompt, Widget) und wann was verwendet wird
  2. architecture.md – Serverstruktur (Hono-basiert), Middleware-System, server.use() vs. server.app
  3. quickstart.md – Gerüstbau, Einrichtung und erstes Tool-Beispiel
  4. deployment.md – Bereitstellung in der Manufact Cloud, Self-Hosting, Docker, Verwaltung von Bereitstellungen

Laden Sie diese, bevor Sie in die Abschnitte zu Tools/Ressourcen/Widgets eintauchen.


🔐 Authentifizierung hinzufügen?

Wann: Schützen Ihres Servers mit OAuth (WorkOS, Supabase oder benutzerdefiniert)

  • overview.md

    • Wann: Erstmaliges Hinzufügen von Auth, Verständnis von ctx.auth oder Auswahl eines Anbieters
    • Deckt ab: oauth-Konfiguration, Benutzerkontext-Form, Anbietervergleich, häufige Fehler
  • workos.md

    • Wann: Verwendung von WorkOS AuthKit zur Authentifizierung
    • Deckt ab: Einrichtung, Umgebungsvariablen, DCR vs. vorregistriert, Rollen/Berechtigungen, WorkOS-API-Aufrufe
  • supabase.md

    • Wann: Verwendung von Supabase zur Authentifizierung
    • Deckt ab: Einrichtung, Umgebungsvariablen, HS256 vs. ES256, RLS-bewusste API-Aufrufe
  • custom.md

    • Wann: Verwendung eines anderen Identitätsanbieters (GitHub, Okta, Azure AD, Google usw.)
    • Deckt ab: Benutzerdefinierte Überprüfung, Benutzerinformationsabruf, Anbieterbeispiele

🔧 Server-Backend bauen (Kein UI)?

Wann: Implementieren von MCP-Funktionen (Aktionen, Daten, Vorlagen). Lesen Sie die spezifische Datei für das von Ihnen erstellte Primitive.

  • tools.md

    • Wann: Erstellen von Backend-Aktionen, die die KI aufrufen kann (E-Mail senden, Daten abrufen, Benutzer erstellen)
    • Deckt ab: Tool-Definition, Schemata, Annotationen, Kontext, Fehlerbehandlung
  • resources.md

    • Wann: Bereitstellen von schreibgeschützten Daten, die Clients abrufen können (Konfiguration, Benutzerprofile, Dokumentation)
    • Deckt ab: Statische Ressourcen, dynamische Ressourcen, parametrisierte Ressourcenvorlagen, URI-Vervollständigung
  • prompts.md

    • Wann: Erstellen von wiederverwendbaren Nachrichtenvorlagen für KI-Interaktionen (Code-Review, Zusammenfassung)
    • Deckt ab: Prompt-Definition, Parametrisierung, Argumentvervollständigung, Best Practices für Prompts
  • response-helpers.md

    • Wann: Formatieren von Antworten von Tools/Ressourcen (Text, JSON, Markdown, Bilder, Fehler)
    • Deckt ab: text(), object(), markdown(), image(), error(), mix()

🎨 Visuelle Widgets bauen (Interaktives UI)?

Wann: Erstellen von React-basierten visuellen Oberflächen zum Durchsuchen, Vergleichen oder Auswählen von Daten

  • basics.md

    • Wann: Erstellen Ihres ersten Widgets oder Hinzufügen einer Benutzeroberfläche zu einem vorhandenen Tool
    • Deckt ab: Widget-Einrichtung, useWidget()-Hook, isPending-Prüfungen, Props-Handhabung
  • state.md

    • Wann: Verwalten des UI-Zustands (Auswahlen, Filter, Registerkarten) innerhalb von Widgets
    • Deckt ab: useState, setState, Zustandspersistenz, wann Tool- vs. Widget-Zustand verwendet wird
  • interactivity.md

    • Wann: Hinzufügen von Schaltflächen, Formularen oder Aufrufen von Tools aus Widgets heraus
    • Deckt ab: useCallTool(), Formularverarbeitung, Aktionsschaltflächen, optimistische Aktualisierungen
  • ui-guidelines.md

    • Wann: Gestalten von Widgets zur Unterstützung von Themes, responsiven Layouts oder Barrierefreiheit
    • Deckt ab: useWidgetTheme(), Hell-/Dunkelmodus, autoSize, Layoutmuster, CSS-Best Practices
  • advanced.md

    • Wann: Erstellen komplexer Widgets mit asynchronen Daten, Fehlergrenzen oder Leistungsoptimierungen
    • Deckt ab: Ladezustände, Fehlerbehandlung, Memoization, Code-Splitting

📚 Benötigen Sie vollständige Beispiele?

Wann: Sie möchten vollständige Implementierungen häufiger Anwendungsfälle sehen

  • common-patterns.md
    • End-to-End-Beispiele: Wetter-App, Aufgabenliste, Rezeptbrowser
    • Zeigt: Server-Code + Widget-Code + Best Practices im Kontext

Entscheidungsbaum

Was brauchen Sie?

├─ Neues Projekt von Grund auf
│  └─> quickstart.md (Gerüstbau + Einrichtung)
│
├─ OAuth / Benutzerauthentifizierung
│  └─> authentication/overview.md → anbieterspezifischer Leitfaden
│
├─ Einfache Backend-Aktion (kein UI)
│  └─> Tool verwenden: server/tools.md
│
├─ Schreibgeschützte Daten für Clients
│  └─> Ressource verwenden: server/resources.md
│
├─ Wiederverwendbare Prompt-Vorlage
│  └─> Prompt verwenden: server/prompts.md
│
├─ Visuelles/interaktives UI
│  └─> Widget verwenden: widgets/basics.md
│
└─ In Produktion bereitstellen
   └─> deployment.md (Cloud-Deploy, Self-Hosting, Docker)

Kernprinzipien

  1. Tools für Aktionen – Backend-Operationen mit Eingabe/Ausgabe
  2. Ressourcen für Daten – Schreibgeschützte Daten, die Clients abrufen können
  3. Prompts für Vorlagen – Wiederverwendbare Nachrichtenvorlagen
  4. Widgets für UI – Visuelle Oberflächen, wenn hilfreich
  5. Zuerst mit Mock-Daten – Schnell prototypisieren, APIs später anbinden

❌ Häufige Fehler

Vermeiden Sie diese Anti-Patterns, die in Produktions-MCP-Servern gefunden wurden:

Tool-Definition

  • ❌ Zurückgeben von rohen Objekten anstatt Verwendung von Response-Helfern
    • ✅ Verwenden Sie die Helfer text(), object(), widget(), error()
  • ❌ Überspringen von Zod-Schema .describe() für jedes Feld
    • ✅ Fügen Sie Beschreibungen zu allen Schemafeldern hinzu, für ein besseres KI-Verständnis
  • ❌ Keine Eingabevalidierung oder -bereinigung
    • ✅ Validieren Sie Eingaben mit Zod, bereinigen Sie benutzerbereitgestellte Daten
  • ❌ Werfen von Fehlern anstatt Verwendung des error()-Helfers
    • ✅ Verwenden Sie error("Nachricht") für elegante Fehlerantworten

Widget-Entwicklung

  • ❌ Zugriff auf props ohne Prüfung von isPending
    • ✅ Prüfen Sie immer if (isPending) return <Loading/>
  • ❌ Widget verwaltet Serverzustand (Filter, Auswahlen)
    • ✅ Widgets verwalten ihren eigenen UI-Zustand mit useState
  • ❌ Fehlender McpUseProvider-Wrapper oder autoSize
    • ✅ Umschließen Sie die Root-Komponente: <McpUseProvider autoSize>
  • ❌ Inline-Stile ohne Theme-Bewusstsein
    • ✅ Verwenden Sie useWidgetTheme() für Hell-/Dunkelmodus-Unterstützung

Sicherheit & Produktion

  • ❌ Hartcodierte API-Schlüssel oder Geheimnisse im Code
    • ✅ Verwenden Sie process.env.API_KEY, dokumentieren Sie in .env.example
  • ❌ Keine Fehlerbehandlung in Tool-Handlern
    • ✅ In try/catch einschließen, bei Fehler error() zurückgeben
  • ❌ Teure Operationen ohne Caching
    • ✅ API-Aufrufe, Berechnungen mit TTL cachen
  • ❌ Fehlende CORS-Konfiguration
    • ✅ CORS für Produktionsbereitstellungen konfigurieren

🔒 Goldene Regeln

Meinungsstarke architektonische Richtlinien:

1. Ein Tool = Eine Fähigkeit

Teilen Sie breite Aktionen in fokussierte Tools auf:

  • ❌ benutzer-verwalten (zu vage)
  • ✅ benutzer-erstellen, benutzer-löschen, benutzer-auflisten

2. Vollständige Daten im Voraus zurückgeben

Tool-Aufrufe sind teuer. Vermeiden Sie Lazy-Loading:

  • ❌ produkte-auflisten + produkt-details-abrufen (2 Aufrufe)
  • ✅ produkte-auflisten gibt vollständige Daten inklusive Details zurück

3. Widgets verwalten ihren eigenen Zustand

UI-Zustand lebt im Widget, nicht in separaten Tools:

  • ❌ element-auswählen-Tool, filter-setzen-Tool
  • ✅ Widget verwaltet mit useState oder setState

4. exposeAsTool standardmäßig auf false

Widgets werden standardmäßig nur als Ressourcen registriert. Verwenden Sie ein benutzerdefiniertes Tool (empfohlen) oder setzen Sie exposeAsTool: true, um ein Widget für das Modell verfügbar zu machen:

// ✅ ALLE 4 SCHRITTE ERFORDERLICH für korrekte Typinferenz:

// Schritt 1: Schema separat definieren
const propsSchema = z.object({
  titel: z.string(),
  elemente: z.array(z.string()),
});

// Schritt 2: Schema-Variable in Metadaten referenzieren
export const widgetMetadata: WidgetMetadata = {
  beschreibung: "...",
  props: propsSchema, // ← NICHT inline z.object()
  exposeAsTool: false,
};

// Schritt 3: Props-Typ aus Schema-Variable ableiten
type Props = z.infer<typeof propsSchema>;

// Schritt 4: Typisierte Props mit useWidget verwenden
export default function MeinWidget() {
  const { props, isPending } = useWidget<Props>(); // ← <Props> hinzufügen
  // ...
}

⚠️ Häufiger Fehler: Nur die Schritte 1-2 ausführen, aber 3-4 überspringen (Typensicherheit geht verloren)

5. Nur an Grenzen validieren

  • Vertrauen Sie internem Code und Framework-Garantien
  • Validieren Sie Benutzereingaben, externe API-Antworten
  • Fügen Sie keine Fehlerbehandlung für Szenarien hinzu, die nicht eintreten können

Kurzreferenz

Minimaler Server

import { MCPServer, text } from "mcp-use/server";
import { z } from "zod";

const server = new MCPServer({
  name: "mein-server",
  title: "Mein Server",
  version: "1.0.0",
});

server.tool(
  {
    name: "begrüßen",
    description: "Einen Benutzer begrüßen",
    schema: z.object({ name: z.string().describe("Name des Benutzers") }),
  },
  async ({ name }) => text("Hallo " + name + "!"),
);

server.listen();

Response-Helfer

HelperVerwenden, wennBeispiel
text()Einfache String-Antworttext("Erfolg!")
object()Strukturierte Datenobject({ status: "ok" })
markdown()Formatierter Textmarkdown("# Titel\nInhalt")
widget()Visuelles UIwidget({ props: {...}, output: text(...) })
mix()Mehrere Inhaltemix(text("Hi"), image(url))
error()Fehlerantwortenerror("Fehler beim Abrufen der Daten")
resource()Ressourcenreferenzen einbettenresource("docs://guide", "text/markdown")

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

academic-researcher

Academic research assistant for literature reviews, paper analysis, and scholarly writing. Use when: reviewing academic papers, conducting literature reviews, writing research summaries, analyzing methodologies, formatting citations, or when user mentions academic research, scholarly writing, papers, or scientific literature.

chatgpt-app-builder

DEPRECATED: This skill has been replaced by `mcp-app-builder`. Check if `mcp-app-builder` is available in the skills folder. If not, install it: `npx skills install mcp-use/mcp-use --skill mcp-app-builder` Use `mcp-app-builder` instead of this skill. Build ChatGPT apps with interactive widgets using mcp-use and OpenAI Apps SDK. Use when creating ChatGPT apps, building MCP servers with widgets, defining React widgets, working with Apps SDK, or when user mentions ChatGPT widgets, mcp-use widgets, or Apps SDK development.

code-reviewer

Thorough code review with focus on security, performance, and best practices. Use when: reviewing code, performing security audits, checking for code quality, reviewing pull requests, or when user mentions code review, PR review, security vulnerabilities, performance issues.

content-creator

Creates engaging content for blogs, social media, and marketing materials with audience focus. Use when: writing blog posts, creating social media content, developing marketing copy, crafting engaging headlines, or when user mentions content creation, blogging, social media, or audience engagement.

content-writer

Writes marketing copy for landing pages, emails, and social media posts. Use when creating promotional content, sales copy, or brand messaging.

data-analyst

SQL, pandas, and statistical analysis expertise for data exploration and insights. Use when: analyzing data, writing SQL queries, using pandas, performing statistical analysis, or when user mentions data analysis, SQL, pandas, statistics, or needs help exploring datasets.

debugger

Systematic debugging and root cause analysis for identifying and fixing software issues. Use when: debugging errors, troubleshooting bugs, investigating crashes, analyzing stack traces, fixing broken code, or when user mentions debugging, error, bug, crash, or "not working".

decision-helper

Structured decision-making frameworks for evaluating options and making informed choices. Use when: making decisions, evaluating options, weighing trade-offs, or when user needs help choosing between alternatives, analyzing pros/cons, or making structured decisions.

deep-research

Comprehensive research assistant that synthesizes information from multiple sources with citations. Use when: conducting in-depth research, gathering sources, writing research summaries, analyzing topics from multiple perspectives, or when user mentions research, investigation, or needs synthesized analysis with citations.

editor

Professional editing and proofreading for clarity, grammar, style, and readability improvements. Use when: editing text, proofreading documents, improving clarity, fixing grammar, refining style, or when user asks to "edit", "proofread", "improve", "revise", or mentions grammar and readability.

email-drafter

Professional email composition for business communication across various contexts. Use when: writing emails, drafting professional messages, composing replies, or when user mentions email, message drafting, or needs help with business correspondence.

fact-checker

Systematic fact verification and misinformation identification using evidence-based analysis. Use when: verifying claims, checking facts, identifying misinformation, evaluating source credibility, or when user asks to "fact check", "verify", "is this true", or mentions claims that need validation.

fullstack-developer

Modern web development expertise covering React, Node.js, databases, and full-stack architecture. Use when: building web applications, developing APIs, creating frontends, setting up databases, deploying web apps, or when user mentions React, Next.js, Express, REST API, GraphQL, MongoDB, PostgreSQL, or full-stack development.

mcp-builder

DEPRECATED: This skill has been replaced by `mcp-app-builder`. Check if `mcp-app-builder` is available in the skills folder. If not, install it: `npx skills install mcp-use/mcp-use --skill mcp-app-builder` Use `mcp-app-builder` instead of this skill. Build Model Context Protocol (MCP) servers with mcp-use framework. Use when creating MCP servers, defining tools/resources/prompts, working with mcp-use, bootstrapping MCP projects, or when user mentions MCP development, tools, resources, or prompts.

meeting-notes

Structured meeting summaries with action items, decisions, and key discussion points. Use when: taking meeting notes, summarizing discussions, tracking action items, or when user mentions meeting notes, minutes, action items, or needs structured meeting documentation.

project-planner

Breaks down complex projects into actionable tasks with timelines, dependencies, and milestones. Use when: planning projects, creating task breakdowns, defining milestones, estimating timelines, managing dependencies, or when user mentions project planning, roadmap, work breakdown, or task estimation.

python-expert

Senior Python developer expertise for writing clean, efficient, and well-documented code. Use when: writing Python code, optimizing Python scripts, reviewing Python code for best practices, debugging Python issues, implementing type hints, or when user mentions Python, PEP 8, or needs help with Python data structures and algorithms.

sprint-planner

Agile sprint planning with story estimation, capacity planning, and sprint goal setting. Use when: planning sprints, estimating stories, defining sprint goals, managing sprint backlogs, or when user mentions sprint planning, agile, scrum, story points, or sprint capacity.

strategy-advisor

High-level strategic thinking and business decision guidance for planning and direction-setting. Use when: making strategic decisions, evaluating business options, setting direction, analyzing trade-offs, or when user mentions strategy, business planning, competitive analysis, or long-term planning.

technical-writer

Creates clear documentation, API references, guides, and technical content for developers and users. Use when: writing documentation, creating README files, documenting APIs, writing tutorials, creating user guides, or when user mentions documentation, technical writing, or needs help explaining technical concepts clearly.

Verwandte Skills