Workshop
Workshop MCP

Dieses Projekt wurde während des Workshops der Veranstaltung The Developers Life Weekend in Umuarama - PR (online) entwickelt.
Über den Workshop
Repository mit Schritt-für-Schritt-Anleitung, Quellcode und Übungen zum Bauen Ihres ersten Servers, der auf dem Model Context Protocol (MCP) basiert.
Während des Workshops wurden vorgestellt:
Die Client-Server-Architektur des MCP-Protokolls;
Die Erstellung und Bereitstellung von Tools (tools) für LLMs;
Die Verwaltung von Ressourcen (resources) und dynamischen Prompts;
Die Verbindung des Servers zu echten KI-Clients.
Das Hauptprojekt wurde mit Python und FastMCP erstellt. Es stellt Tools und Ressourcen zur Abfrage der Wettervorhersage bereit und demonstriert eine Operation, die vor dem Senden von Einladungen eine Bestätigung verlangt.
Related MCP server: Weather MCP Server
Voraussetzungen
Python 3.14 oder höher;
uv installiert;
Eine Anwendung, die in Auth0 konfiguriert ist;
Internetzugang, um
https://wttr.inabzufragen;Ein kompatibler MCP-Client, wie OpenCode oder MCP Inspector.
Das Projekt verwendet uv.lock, um die Versionen der Abhängigkeiten reproduzierbar zu halten.
Installation
Klonen Sie das Repository und wechseln Sie in den Projektordner:
git clone https://github.com/marcelomarkus/tdlw-workshop-mcp.git
cd tdlw-workshop-mcpSynchronisieren Sie die Abhängigkeiten. Der Befehl erstellt oder aktualisiert die virtuelle Umgebung .venv automatisch:
uv syncÜberprüfen Sie die ausgewählte Python-Version:
python --version
uv python findAuth0-Konfiguration
Der Hauptserver verwendet Auth0Provider und benötigt diese Umgebungsvariablen:
Variable | Beschreibung |
| Domäne der Auth0-Instanz |
| Anwendungs-ID |
| Anwendungsgeheimnis |
| Identifikator der in Auth0 konfigurierten API |
Erstellen Sie die lokale Konfigurationsdatei aus der Vorlage:
cp .env_example .envFüllen Sie die .env mit echten Werten aus:
AUTH_DOMAIN=https://seu-dominio.auth0.com
CLIENT_ID=seu-client-id
CLIENT_SECRET=seu-client-secret
AUDIENCE=https://sua-apiDie Datei .env wird von Python nicht automatisch geladen. Exportieren Sie die Variablen, bevor Sie den Server starten:
set -a
source .env
set +aOder definieren Sie sie direkt im selben Aufruf:
AUTH_DOMAIN="https://seu-dominio.auth0.com" \
CLIENT_ID="seu-client-id" \
CLIENT_SECRET="seu-client-secret" \
AUDIENCE="https://sua-api" \
uv run main.pyTeilen Sie niemals das CLIENT_SECRET und nehmen Sie es nicht in Commits auf.
Server ausführen
Mit den geladenen Variablen starten Sie den Hauptserver:
uv run main.pyDer MCP-Endpunkt ist verfügbar unter:
http://127.0.0.1:8000/mcpHalten Sie den Prozess am Laufen, während der MCP-Client verbunden ist. Zum Beenden drücken Sie Ctrl+C.
MCP Inspector ausführen
Der MCP Inspector bietet eine Weboberfläche zum Testen von Tools, Ressourcen und Prompts.
Starten Sie in einem ersten Terminal den Server:
set -a
source .env
set +a
uv run main.pyFühren Sie in einem anderen Terminal den Inspector aus:
npx @modelcontextprotocol/inspectorÖffnen Sie http://localhost:6274 im Browser und konfigurieren Sie:
Feld | Wert |
Transport |
|
URL |
|
Klicken Sie auf Connect und testen Sie die verfügbaren Tools und Ressourcen. Die Auth0-Variablen müssen in der Umgebung des Serverprozesses vorhanden sein.
Verbinden über OpenCode
Die Datei opencode.json verweist bereits auf den lokalen Endpunkt:
{
"mcp": {
"Workshop": {
"type": "remote",
"url": "http://127.0.0.1:8000/mcp"
}
}
}Öffnen Sie OpenCode in diesem Projekt, während der Server läuft.
Verfügbare Funktionen
Tools
Tempo(cidade): fragt das aktuelle Wetter einer Stadt ab;Temperatura(cidade): fragt die aktuelle Temperatur einer Stadt ab;Enviar_Convites(quantidade): fordert eine Bestätigung an und simuliert das Senden, wobei der Fortschritt jedes Elements gemeldet wird.
Die Wetterabfragen verwenden wttr.in/<cidade>?format=%t.
Ressourcen
workshop://oque-o-mcp-nao-e: Einführungstext über MCP;previsao://{cidade}: Vorhersage für eine in der URI angegebene Stadt.
Prompt
exemplo_prompt(pergunta): leitet die Auswahl zwischen den Wetter-Tools an.
Projektstruktur
.
├── main.py # Servidor MCP principal
├── mcp_com_api.py # Servidor MCP gerado a partir da API Petstore
├── exercises/ # Exercícios progressivos do workshop
│ ├── 01-mcp-server/
│ ├── 02-resources/
│ ├── 03-tools/
│ ├── 04-prompts/
│ ├── 05-Context/
│ ├── 06-auth/
│ └── 07-mcp-api/
├── slide/ # Material de apoio
│ └── TDLW-Umuarama.pdf
├── opencode.json # Configuração do OpenCode
├── pyproject.toml # Metadados e dependências
├── uv.lock # Versões resolvidas
└── .env_example # Modelo das variáveis do Auth0Entwicklung
Sie können das Projekt über den Debug-Modus von VS Code oder über uv ausführen:
uv run main.pyUm die Syntax der Module zu überprüfen:
python -m compileall main.py mcp_com_api.py exercisesFehlerbehebung
ModuleNotFoundError
Führen Sie uv sync aus und starten Sie das Programm mit uv run main.py, um das globale Python zu vermeiden, wenn die Abhängigkeiten nur in .venv installiert sind.
Authentifizierungsfehler
Überprüfen Sie, ob die vier Auth0-Variablen in derselben Umgebung wie der Server exportiert wurden und ob die Domäne das erwartete Protokoll enthält.
Fehler bei der Wetterabfrage
Testen Sie die Konnektivität mit:
curl "https://wttr.in/Sao%20Paulo?format=%t"Port 8000 belegt
Geben Sie den Port frei oder passen Sie den Port im Server und in der opencode.json an, wobei Sie auf beiden Seiten dieselbe Adresse beibehalten.
Dokumentation und Referenzen
This server cannot be deployed
Maintenance
Related MCP Connectors
Get current weather for any city and create images from your prompts. Streamline planning, reports…
US weather & geo for AI agents: forecasts, alerts, earthquakes, elevation, geocoding. No keys.
US weather & geo for AI agents: forecasts, alerts, earthquakes, elevation, geocoding. No keys.
Real-world data for agents: air quality, geocoding, quakes, holidays, web search
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to fetch current weather conditions and forecasts for any city using the Open-Meteo API. Provides temperature, precipitation, and hourly forecast data through natural language queries.-
- AlicenseNot gradedqualityDmaintenanceEnables LLMs to retrieve 24-hour weather forecasts and city information through natural language queries using city names or coordinates.MIT
- FlicenseAqualityDmaintenanceProvides weather information and time utilities for AI assistants, enabling them to fetch current weather for any city and get the current timestamp.238 npm-
- AlicenseNot gradedqualityDmaintenanceEnables LLMs to fetch real-time weather data for any city and perform basic arithmetic operations like addition.MIT