MCP-Datenbankintegrationen

Einführung in das Model Context Protocol (MCP)

James Chapman

AI Curriculum Manager, DataCamp

Warum eine Datenbank zum Timezone-Server hinzufügen?

 

  • Abfragepower: filtern, suchen und sortieren ohne kompletten Datensatz zu laden
  • Skalierung: schnelle Suchen mit Datenbank-Indizes

Datenbankverbindung

Einführung in das Model Context Protocol (MCP)

Warum eine Datenbank zum Timezone-Server hinzufügen?

 

  • Abfragepower: filtern, suchen und sortieren ohne kompletten Datensatz zu laden
  • Skalierung: schnelle Suchen mit DB-Indizes
  • Nebenläufigkeit: mehrere Tool-Aufrufe oder Clients greifen sicher auf die DB zu
  • Produktionsreif: Backups, Replikation und eine Single Source of Truth

Datenbankvorteile

Einführung in das Model Context Protocol (MCP)

Datenzugriff: Tools vs. Ressourcen

Tools-Symbol

  • Dynamisch, stark nutzereingabeabhängig, Schreiboperationen
  • Beispiele: Data Analytics und Operations

Ressourcen-Symbol

  • Read-only, statische Daten, Referenzinfos
  • Beispiele: Guidelines, Doku, Policies
Einführung in das Model Context Protocol (MCP)

Lebenszyklus einer Verbindung

Datenbankverbindungen

Einführung in das Model Context Protocol (MCP)

Datenbankressource: timezone_server.py

from mcp.server.fastmcp import FastMCP
import sqlite3

mcp = FastMCP("Timezone Converter")

# Create connection at startup; reuse in handlers
conn = sqlite3.connect("timezones.db")
conn.row_factory = sqlite3.Row

@mcp.resource("db://timezones") def get_locations() -> str: try: cursor = conn.execute("SELECT timezone FROM locations") rows = cursor.fetchall() return "\n".join(r["timezone"] for r in rows) except sqlite3.Error as e: return f"Error: {e}"
Einführung in das Model Context Protocol (MCP)

Datenbanksuchtool: timezone_server.py

@mcp.tool()
def lookup_locations(prefix: str) -> str:
    """Find timezones that contain the given prefix."""
    try:
        cursor = conn.execute(
            "SELECT timezone FROM locations WHERE timezone LIKE ? LIMIT 50", (f"%{prefix}%",))
        rows = cursor.fetchall()
        return "\n".join(r["timezone"] for r in rows)
    except sqlite3.Error as e: return f"Error: {e}"

if __name__ == "__main__": try: mcp.run(transport="stdio") finally: conn.close()
Einführung in das Model Context Protocol (MCP)

Sicherheit und Produktionspraxis

 

  • Parametrisierte (?) Abfragen: Niemals Nutzer- oder LLM-Eingaben in SQL string-formatieren
    • Prompt Injection → bösartige Codeeinschleusung über Prompts
SELECT timezone FROM locations WHERE timezone LIKE ? LIMIT 50
  • Bevorzuge Read-only und eng begrenzten DB-Zugriff für den MCP-Server
  • Limits setzen: max. Zeilen und Timeouts
Einführung in das Model Context Protocol (MCP)

Lass uns üben!

Einführung in das Model Context Protocol (MCP)

Preparing Video For Download...