MCP Server Boilerplate
MCP-Server-Boilerplate
Eine minimale, gut dokumentierte MCP-Server-Implementierung (Model Context Protocol), die als wiederverwendbare Basis für die Erstellung benutzerdefinierter MCP-Server dient.
Was ist MCP?
Das Model Context Protocol (MCP) ist ein standardisiertes Protokoll, das es KI-Assistenten ermöglicht, mit externen Servern zu interagieren. MCP-Server können Folgendes bereitstellen:
Tools: Funktionen, die die KI aufrufen kann, um Aktionen auszuführen
Ressourcen: Statische oder dynamische Daten, die die KI lesen kann
Prompts: Wiederverwendbare Prompt-Vorlagen für konsistente KI-Interaktionen
Related MCP server: MCP Mingdao
Funktionen
Dieses Boilerplate bietet:
Minimale Struktur: Eine saubere Basis, die leicht erweitert werden kann
Umfangreiche Dokumentation: Inline-Kommentare und separate Dokumentationsdateien
Architekturdiagramme: Mermaid-Diagramme, die die Interaktionen der Komponenten zeigen
Skalierungsleitfaden: Best Practices für das Wachstum Ihres Servers
Typ-Hinweise: Vollständige Typ-Annotationen für bessere IDE-Unterstützung
Async/await: Nicht-blockierende E/A für gleichzeitige Operationen
Wiederverwendbare Prompt-Vorlagen
Prompts sind wiederverwendbare Vorlagen, mit denen Sie strukturierte Prompts mit Platzhaltern definieren können. Sie ermöglichen:
Konsistenz: Standardisierte Prompt-Formate über verschiedene KI-Interaktionen hinweg
Parametrisierung: Dynamisches Einfügen von Inhalten durch Argumente
Wiederverwendbarkeit: Einmal definieren, mehrfach mit verschiedenen Eingaben verwenden
Typsicherheit: Definierte Argument-Schemata mit Validierung
Eine Prompt-Vorlage besteht aus:
Name: Eindeutiger Bezeichner für den Prompt
Beschreibung: Was der Prompt bewirkt
Argumente: Optionale Parameter, die bei der Verwendung des Prompts ausgefüllt werden können
Beispiel-Anwendungsfälle:
Code-Review-Vorlagen mit konfigurierbaren Schweregraden
Dokumentationserstellung mit anpassbarem Tonfall
Analyse-Prompts mit variablen Fokusbereichen
Berichterstellung mit verschiedenen Ausgabeformaten
Projektstruktur
windsurf-project-3/
├── mcp_server.py # Main server implementation with extensive comments
├── pyproject.toml # Project configuration for uv
├── ARCHITECTURE.md # Architecture documentation with Mermaid diagrams
├── SCALING_GUIDE.md # Scaling patterns and best practices
├── README.md # This file
├── tools/ # Placeholder for tool modules (create as needed)
├── resources/ # Placeholder for resource modules (create as needed)
├── prompts/ # Placeholder for prompt modules (create as needed)
└── utils/ # Placeholder for utility modules (create as needed)Installation
Dieses Projekt verwendet uv für schnelles Python-Paketmanagement.
Installieren Sie Python 3.10 oder höher
Installieren Sie uv (falls noch nicht geschehen):
curl -LsSf https://astral.sh/uv/install.sh | shInstallieren Sie die Abhängigkeiten:
uv syncSchnellstart
1. Fügen Sie Ihr erstes Tool hinzu
Bearbeiten Sie mcp_server.py und fügen Sie ein Tool in der Funktion list_tools() hinzu:
@app.list_tools()
async def list_tools() -> list[Tool]:
return [
Tool(
name="echo",
description="Echo back the input text",
inputSchema={
"type": "object",
"properties": {
"text": {"type": "string", "description": "Text to echo"}
},
"required": ["text"]
}
)
]2. Implementieren Sie den Tool-Handler
Fügen Sie die Tool-Logik in der Funktion call_tool() hinzu:
@app.call_tool()
async def call_tool(name: str, arguments: Any) -> str:
if name == "echo":
text = arguments.get("text", "")
return f"Echo: {text}"
raise ValueError(f"Unknown tool: {name}")3. Fügen Sie einen Prompt hinzu (optional)
Fügen Sie einen Prompt in der Funktion list_prompts() hinzu:
@app.list_prompts()
async def list_prompts() -> list[Prompt]:
return [
Prompt(
name="example_prompt",
description="An example prompt template",
arguments=[
PromptArgument(
name="topic",
description="The topic to write about",
required=True
)
]
)
]Implementieren Sie dann den Handler in get_prompt():
@app.get_prompt()
async def get_prompt(name: str, arguments: dict[str, str] | None) -> str:
if name == "example_prompt":
topic = arguments.get("topic") if arguments else None
if not topic:
raise ValueError("Argument 'topic' is required")
return f"Write a detailed explanation about {topic}."
raise ValueError(f"Unknown prompt: {name}")3. Starten Sie den Server
uv run python mcp_server.py4. Konfigurieren Sie Ihren MCP-Client
Fügen Sie dies zur Konfiguration Ihres MCP-Clients hinzu:
{
"mcpServers": {
"your-server-name": {
"command": "uv",
"args": ["run", "python", "/path/to/mcp_server.py"]
}
}
}Dokumentation
ARCHITECTURE.md: Detaillierte Architektur-Dokumentation mit Mermaid-Diagrammen, die Folgendes zeigen:
Python-Module und ihre Zwecke
Komponenten-Interaktionen
Anforderungsabläufe (Tool-Aufruf, Ressourcenlesen)
Verwendete Entwurfsmuster
SCALING_GUIDE.md: Best Practices für die Skalierung Ihres Servers:
Modularisierungsmuster
Strategien zur Zustandsverwaltung
Fehlerbehandlungsmuster
Protokollierung und Überwachung
Konfigurationsmanagement
Teststrategien
Leistungsoptimierung
Sicherheitsüberlegungen
Codestruktur
Die Hauptserverdatei (mcp_server.py) ist in Abschnitte unterteilt:
Server-Initialisierung: Erstellen der MCP-Server-Instanz
Tool-Registrierung: Definieren verfügbarer Tools
Tool-Handler: Implementieren der Tool-Ausführungslogik
Ressourcen-Registrierung: Definieren verfügbarer Ressourcen
Ressourcen-Handler: Implementieren der Ressourcen-Leselogik
Einstiegspunkt: Starten des Servers mit stdio-Kommunikation
Jeder Abschnitt enthält umfangreiche Inline-Kommentare, die den Zweck und die Verwendung jeder Komponente erläutern.
Erweiterungspunkte
Tools hinzufügen
Definieren Sie das Tool in
list_tools()mit seinem SchemaImplementieren Sie den Handler in
call_tool()Verschieben Sie bei größeren Projekten den Code in ein separates Modul im Verzeichnis
tools/
Prompts hinzufügen
Definieren Sie den Prompt in
list_prompts()mit seinen ArgumentenImplementieren Sie den Handler in
get_prompt()Verschieben Sie bei größeren Projekten den Code in ein separates Modul im Verzeichnis
prompts/
Ressourcen hinzufügen
Definieren Sie die Ressource in
list_resources()mit ihren MetadatenImplementieren Sie den Handler in
read_resource()Verschieben Sie bei größeren Projekten den Code in ein separates Modul im Verzeichnis
resources/
Dienstprogramme hinzufügen
Extrahieren Sie gemeinsam genutzten Code in das Verzeichnis utils/:
Validierungsfunktionen
Protokollierungs-Helfer
Konfigurationsmanagement
Dienstprogramme zur Fehlerbehandlung
Verwendung als Basis
Dieses Boilerplate ist darauf ausgelegt, kopiert und für neue Projekte modifiziert zu werden:
Kopieren Sie das gesamte Projektverzeichnis
Benennen Sie das Projekt in
pyproject.tomlumAktualisieren Sie den Servernamen in
mcp_server.pyFügen Sie Ihre Tools, Ressourcen und Prompts hinzu
Passen Sie die Dokumentation nach Bedarf an
Verwendete Python-Module
mcp.server.Server: Haupt-MCP-Serverklassemcp.types.Tool: Tool-Typdefinitionmcp.types.Resource: Ressourcen-Typdefinitionmcp.types.Prompt: Prompt-Typdefinitionmcp.types.PromptArgument: Prompt-Argument-Typdefinitionmcp.server.stdio: Stdio-Kommunikationsstreamsasyncio: Async/await für gleichzeitige Operationentyping: Typ-Hinweise für Code-Klarheit
Siehe ARCHITECTURE.md für detaillierte Erklärungen zu jedem Modul.
Entwicklung
Tests ausführen
# Run with pytest (add tests first)
uv run pytestCodestil
Dieses Projekt verwendet Python-Typ-Hinweise und folgt den PEP 8-Konventionen. Erwägen Sie die Verwendung von:
rufffür Lintingmypyfür Typüberprüfung
Abhängigkeiten hinzufügen
uv add <package-name>Fehlerbehebung
Importfehler: Führen Sie
uv syncaus, um Abhängigkeiten zu installierenServer antwortet nicht: Überprüfen Sie die MCP-Client-Konfiguration
Typfehler: Stellen Sie sicher, dass Python 3.10+ installiert ist
uv-Befehl nicht gefunden: Installieren Sie uv von https://github.com/astral-sh/uv
Ressourcen
Lizenz
Dieses Boilerplate wird für Bildungs- und Entwicklungszwecke bereitgestellt. Sie können es gerne für Ihre Projekte verwenden und modifizieren.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA basic MCP server template that provides a foundation for building custom tools, resources, and prompts. Serves as a starting point for developers to create their own MCP server functionality.

MCP Mingdaoofficial
FlicenseNot gradedqualityDmaintenanceA minimal MCP server template demonstrating basic tools, resources, and prompts functionality built with Smithery SDK.- FlicenseNot gradedqualityCmaintenanceA template/starter project for building MCP servers with structured directories for tools, prompts, and resources that are automatically discovered and registered.5
- FlicenseNot gradedqualityDmaintenanceA boilerplate template for developing Model Context Protocol (MCP) servers, providing a structured framework for defining tools, resources, and prompts.
Related MCP Connectors
A MCP server built for developers enabling Git based project management with project and personal…
Augments MCP Server - A comprehensive framework documentation provider for Claude Code
MCP server for generating rough-draft project plans from natural-language prompts.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/GlenTrudgett/mcp_template'
If you have feedback or need assistance with the MCP directory API, please join our Discord server