MCP Veritabanı Entegrasyonları

Model Context Protocol (MCP) Giriş

James Chapman

AI Curriculum Manager, DataCamp

Neden Zaman Dilimi Sunucusuna Veritabanı Eklenir?

 

  • Sorgu gücü: tüm veri kümesini yüklemeden filtrele, ara, sırala
  • Ölçek: veritabanı indeksleri ile hızlı aramalar

veritabanı_bağlantısı.png

Model Context Protocol (MCP) Giriş

Neden Zaman Dilimi Sunucusuna Veritabanı Eklenir?

 

  • Sorgu gücü: tüm veri kümesini yüklemeden filtrele, ara, sırala
  • Ölçek: veritabanı indeksleri ile hızlı aramalar
  • Eşzamanlılık: birden çok araç çağrısı/istemci veritabanına güvenle erişir
  • Üretime hazır: yedekler, çoğaltma, tek doğru kaynak

veritabanı_artıları.png

Model Context Protocol (MCP) Giriş

Veri Erişimi: Araçlar vs. Kaynaklar

araçlar_simgesi.jpg

  • Dinamik, yoğun kullanıcı girdisi, yazma işlemleri
  • Örnekler: Veri analitiği ve operasyonlar

kaynaklar_simgesi.jpg

  • Salt-okunur, statik veri, başvuru bilgisi
  • Örnekler: Kılavuzlar, dokümanlar, politikalar
Model Context Protocol (MCP) Giriş

Bağlantı Yaşam Döngüsü

veritabanı_bağlantıları.png

Model Context Protocol (MCP) Giriş

Veritabanı Kaynağı: 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}"
Model Context Protocol (MCP) Giriş

Veritabanı Arama Aracı: 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()
Model Context Protocol (MCP) Giriş

Güvenlik ve Üretim Alışkanlıkları

 

  • Parametreli (?) sorgular: kullanıcı veya LLM girdisini asla SQL'e dize biçiminde yerleştirmeyin
    • İstem enjeksiyonu: istemler yoluyla kötü amaçlı kod enjeksiyonu
SELECT timezone FROM locations WHERE timezone LIKE ? LIMIT 50
  • MCP sunucusu için salt-okunur ve dar kapsamlı veritabanı erişimi tercih edin
  • Sınırlar uygulayın: maksimum satır ve zaman aşımları
Model Context Protocol (MCP) Giriş

Hadi pratik yapalım!

Model Context Protocol (MCP) Giriş

Preparing Video For Download...