Przejdź do głównej zawartości

Połączenia z bazami danych przez MCP

Włącz swojemu asystentowi AI rozumienie schematów baz danych, generowanie zapytań i budowanie aplikacji świadomych danych poprzez bezpośrednie połączenie z bazami danych przez MCP.

Tradycyjne programowanie baz danych wiąże się z ciągłym przełączaniem kontekstu między:

  • Dokumentacją schematu, która często jest nieaktualna
  • Narzędziami zapytań oddzielonymi od edytora kodu
  • Ręcznym tłumaczeniem między wymaganiami biznesowymi a SQL
  • Powtarzalnym boilerplate dla operacji CRUD

Z serwerami MCP baz danych, Twój AI zyskuje:

  • Żywą introspekcję schematów dla dokładnych referencji tabel i kolumn
  • Generowanie zapytań oparte na wymaganiach w języku naturalnym
  • Generowanie kodu świadomego danych, które pasuje do Twojej rzeczywistej bazy danych
  • Skrypty migracji z pełnym kontekstem aktualnej struktury

Funkcje

  • Inspekcja i dokumentacja schematu
  • Generowanie i optymalizacja zapytań
  • Tworzenie skryptów migracji
  • Rekomendacje indeksów
  • Wsparcie analizy wydajności
{
"mcpServers": {
"postgres": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-postgres",
"postgresql://user:password@localhost:5432/dbname"
]
}
}
}

Funkcje

  • Pełna introspekcja schematu
  • Analiza procedur składowanych
  • Obsługa zestawów znaków
  • Zapytania świadome replikacji
{
"mcpServers": {
"mysql": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-mysql",
"mysql://user:password@localhost:3306/database"
]
}
}
}

Funkcje

  • Lokalne bazy danych oparte na plikach
  • Zerowa konfiguracja
  • Idealne do rozwoju/testowania
  • Wsparcie wyszukiwania pełnotekstowego
{
"mcpServers": {
"sqlite": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-sqlite",
"/path/to/database.db"
]
}
}
}

Funkcje

  • Analiza schematu NoSQL
  • Generowanie pipeline agregacji
  • Optymalizacja indeksów
  • Statystyki kolekcji
Okno terminala
# Przykład serwera społeczności
claude mcp add mongodb -- npx -y mongodb-mcp-server \
"mongodb://localhost:27017/mydb"

MCP Azure firmy Microsoft zawiera wsparcie dla SQL Database:

Okno terminala
# Używając serwera Azure MCP
claude mcp add azure-sql -- npx -y @azure/mcp server start --namespace sql

Funkcje:

  • Wsparcie instancji zarządzanych
  • Uwierzytelnianie Azure AD
  • Świadomość puli elastycznych
  • Wbudowane najlepsze praktyki bezpieczeństwa

Zapytania w języku naturalnym do zrozumienia Twojej bazy danych:

"Pokaż mi wszystkie tabele w bazie danych"
"Jakie kolumny ma tabela users?"
"Wylistuj wszystkie relacje kluczy obcych"
"Które tabele odwołują się do tabeli products?"
"Pokaż mi indeksy na tabeli orders"

Przekształć wymagania w zoptymalizowane SQL:

"Napisz zapytanie, aby znaleźć wszystkich użytkowników, którzy dokonali zakupów w ciągu ostatnich 30 dni"
"Utwórz raport pokazujący miesięczne przychody według kategorii produktów"
"Znajdź duplikaty adresów email w tabeli customers"
"Wygeneruj zapytanie dla top 10 najlepiej sprzedających się produktów z poziomami zapasów"

Przykład wygenerowanego zapytania:

-- Top klienci według całkowitej wartości zakupów w ostatnim kwartale
WITH customer_purchases AS (
SELECT
c.customer_id,
c.first_name,
c.last_name,
c.email,
SUM(o.total_amount) as total_spent,
COUNT(DISTINCT o.order_id) as order_count,
AVG(o.total_amount) as avg_order_value
FROM customers c
JOIN orders o ON c.customer_id = o.customer_id
WHERE o.created_at >= DATE_TRUNC('quarter', CURRENT_DATE - INTERVAL '3 months')
AND o.status = 'completed'
GROUP BY c.customer_id, c.first_name, c.last_name, c.email
)
SELECT
customer_id,
first_name || ' ' || last_name as full_name,
email,
total_spent,
order_count,
ROUND(avg_order_value, 2) as avg_order_value
FROM customer_purchases
ORDER BY total_spent DESC
LIMIT 10;

Generuj modele i zapytania, które pasują do Twojej rzeczywistej bazy danych:

"Utwórz interfejs TypeScript dla tabeli products"
"Wygeneruj modele Prisma dla wszystkich tabel"
"Utwórz implementację wzorca repository dla tabeli users"
"Zbuduj modele SQLAlchemy pasujące do mojego schematu bazy danych"

Przykład wyniku:

// Wygenerowane z rzeczywistego schematu bazy danych
interface Product {
id: number;
name: string;
description: string | null;
price: number;
category_id: number;
sku: string;
inventory_count: number;
is_active: boolean;
created_at: Date;
updated_at: Date;
}
class ProductRepository {
async findById(id: number): Promise<Product | null> {
const result = await db.query(
'SELECT * FROM products WHERE id = $1',
[id]
);
return result.rows[0] || null;
}
async findByCategory(categoryId: number): Promise<Product[]> {
const result = await db.query(
'SELECT * FROM products WHERE category_id = $1 AND is_active = true',
[categoryId]
);
return result.rows;
}
async updateInventory(id: number, count: number): Promise<void> {
await db.query(
'UPDATE products SET inventory_count = $1, updated_at = NOW() WHERE id = $2',
[count, id]
);
}
}

Twórz skrypty migracji z pełnym kontekstem:

"Wygeneruj migrację, aby dodać kolumnę status do tabeli orders z wartościami enum"
"Utwórz migrację, aby dodać wyszukiwanie pełnotekstowe do tabeli products"
"Zbuduj migrację, aby utworzyć tabelę łącznikową dla relacji wiele-do-wielu między users i roles"

Podczas pracy z wieloma bazami danych:

"Porównaj schemat baz danych staging i production"
"Znajdź tabele, które istnieją w development, ale nie w production"
"Wygeneruj skrypt do synchronizacji uprawnień użytkowników między bazami danych"

Wykorzystaj AI do dostrajania bazy danych:

"Przeanalizuj powolne zapytania i zasugeruj indeksy"
"Przejrzyj tabelę orders i zarekomenduj strategie partycjonowania"
"Zidentyfikuj brakujące indeksy kluczy obcych"
"Zasugeruj optymalizacje zapytań dla tego złożonego join"

Buduj reguły walidacji ze schematu:

"Wygeneruj reguły walidacji dla wszystkich kolumn w tabeli users"
"Utwórz skrypt do znajdowania problemów z integralnością danych"
"Zbuduj sprawdzenia ograniczeń dla systemu inwentaryzacji"
  1. Używaj poświadczeń tylko do odczytu

    -- Utwórz użytkownika tylko do odczytu dla MCP
    CREATE USER mcp_reader WITH PASSWORD 'secure_password';
    GRANT CONNECT ON DATABASE myapp TO mcp_reader;
    GRANT USAGE ON SCHEMA public TO mcp_reader;
    GRANT SELECT ON ALL TABLES IN SCHEMA public TO mcp_reader;
  2. Zmienne środowiskowe

    Okno terminala
    # .env.local (dodaj do .gitignore)
    DATABASE_URL=postgresql://mcp_reader:pass@localhost:5432/myapp
    # Użyj w konfiguracji
    claude mcp add db -e DATABASE_URL=$DATABASE_URL -- \
    npx -y @modelcontextprotocol/server-postgres
  3. Ograniczenia sieciowe

    • Używaj tuneli SSH dla zdalnych baz danych
    • Implementuj whitelist IP
    • Używaj VPN dla dostępu produkcyjnego

Obsługa wrażliwych danych

  • Unikaj danych produkcyjnych w development
  • Używaj maskowania danych dla PII
  • Implementuj bezpieczeństwo na poziomie wierszy
  • Audituj logi zapytań MCP

Skonfiguruj minimalne uprawnienia:

-- Przykład PostgreSQL: Udziel dostępu do konkretnych tabel
GRANT SELECT ON users, products, orders TO mcp_reader;
-- Przykład MySQL: Ogranicz do konkretnych operacji
GRANT SELECT, SHOW VIEW ON myapp.* TO 'mcp_reader'@'localhost';
-- Dodaj timeout zapytania dla bezpieczeństwa
ALTER USER mcp_reader SET statement_timeout = '30s';
ProblemRozwiązanie
Odmowa połączeniaSprawdź czy baza danych działa i akceptuje połączenia
Błąd uwierzytelnianiaSprawdź poświadczenia i uprawnienia użytkownika
Błędy timeoutUpewnij się o łączności sieciowej i regułach firewall
”Brak dostępnych narzędzi”Potwierdź że serwer MCP uruchomił się pomyślnie
Błędy SSL/TLSSkonfiguruj tryb SSL w stringu połączenia
Okno terminala
# Testuj łączność z bazą danych
psql "postgresql://user:pass@localhost:5432/db" -c "SELECT 1"
# Sprawdź logi serwera MCP
claude mcp list
claude --mcp-debug
  1. Pooling połączeń

    • Serwery MCP zazwyczaj utrzymują pojedyncze połączenie
    • Dla operacji o wysokiej częstotliwości rozważ buforowanie
  2. Limity zapytań

    • Implementuj timeouty dla długotrwałych zapytań
    • Używaj klauzul LIMIT w generowanych zapytaniach
    • Rozważ read replicas dla analityki
  3. Zarządzanie oknem kontekstu

    • Duże zestawy wyników mogą wypełnić kontekst AI
    • Żądaj podsumowań zamiast pełnych danych
    • Używaj agregacji gdzie to możliwe
  1. Zacznij od bazy development

    • Używaj Dockera dla spójnych środowisk
    • Zasiej reprezentatywnymi danymi
    • Testuj zapytania MCP bezpiecznie
  2. Przejdź do staging

    • Odzwierciedl schemat produkcji
    • Używaj zanonimizowanych danych
    • Waliduj wygenerowane zapytania
  3. Rozważania produkcyjne

    • Tylko dostęp do odczytu
    • Ścieżka audytu dla zapytań
    • Okna dostępu oparte na czasie

Dziel się konfiguracjami MCP baz danych bezpiecznie:

// .mcp.json (committed do repo)
{
"mcpServers": {
"app-db": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres"],
"env": {
"DATABASE_URL": "${DATABASE_URL}" // Rozwiązane ze środowiska
}
}
}
}

Połącz MCP bazy danych z dokumentacją:

"Wygeneruj kompleksową dokumentację dla tabeli users włączając relacje"
"Utwórz słownik danych dla wszystkich tabel"
"Dokumentuj logikę biznesową zaimplementowaną w ograniczeniach bazodanowych"
"Zbuduj opis diagramu ERD dla systemu przetwarzania zamówień"

Ekosystem MCP baz danych nadal się rozwija:

  • Wyjaśnianie zapytań z wglądami w wydajność
  • Automatyczne indeksowanie rekomendacji
  • Śledzenie lineage danych między systemami
  • Procedury składowane w języku naturalnym
  • Wsparcie federacji międzybazodanowej