Funkcje
- Inspekcja i dokumentacja schematu
- Generowanie i optymalizacja zapytań
- Tworzenie skryptów migracji
- Rekomendacje indeksów
- Wsparcie analizy wydajności
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:
Z serwerami MCP baz danych, Twój AI zyskuje:
Funkcje
{ "mcpServers": { "postgres": { "command": "npx", "args": [ "-y", "@modelcontextprotocol/server-postgres", "postgresql://user:password@localhost:5432/dbname" ] } }}
# Dodaj serwer PostgreSQLclaude mcp add postgres -- npx -y @modelcontextprotocol/server-postgres \ "postgresql://user:password@localhost:5432/dbname"
# Używając zmiennej środowiskowej dla bezpieczeństwaclaude mcp add postgres -e DATABASE_URL=$DATABASE_URL -- \ npx -y @modelcontextprotocol/server-postgres
Funkcje
{ "mcpServers": { "mysql": { "command": "npx", "args": [ "-y", "@modelcontextprotocol/server-mysql", "mysql://user:password@localhost:3306/database" ] } }}
# Dodaj serwer MySQLclaude mcp add mysql -- npx -y @modelcontextprotocol/server-mysql \ "mysql://user:password@localhost:3306/database"
Funkcje
{ "mcpServers": { "sqlite": { "command": "npx", "args": [ "-y", "@modelcontextprotocol/server-sqlite", "/path/to/database.db" ] } }}
# Dodaj serwer SQLiteclaude mcp add sqlite -- npx -y @modelcontextprotocol/server-sqlite \ "/path/to/database.db"
Funkcje
# Przykład serwera społecznościclaude mcp add mongodb -- npx -y mongodb-mcp-server \ "mongodb://localhost:27017/mydb"
MCP Azure firmy Microsoft zawiera wsparcie dla SQL Database:
# Używając serwera Azure MCPclaude mcp add azure-sql -- npx -y @azure/mcp server start --namespace sql
Funkcje:
Połącz z instancjami RDS przez standardowe MCP baz danych:
# Użyj odpowiedniego MCP bazy danych z punktem końcowym RDSclaude mcp add rds-postgres -- npx -y @modelcontextprotocol/server-postgres \ "postgresql://user:pass@instance.region.rds.amazonaws.com:5432/db"
Bezpośrednie połączenie PostgreSQL z Supabase:
# Połączenie PostgreSQL Supabaseclaude mcp add supabase -- npx -y @modelcontextprotocol/server-postgres \ "postgresql://postgres:[PASSWORD]@[PROJECT].supabase.co:5432/postgres"
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 kwartaleWITH 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_valueFROM customer_purchasesORDER BY total_spent DESCLIMIT 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 danychinterface 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"
Używaj poświadczeń tylko do odczytu
-- Utwórz użytkownika tylko do odczytu dla MCPCREATE 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;
Zmienne środowiskowe
# .env.local (dodaj do .gitignore)DATABASE_URL=postgresql://mcp_reader:pass@localhost:5432/myapp
# Użyj w konfiguracjiclaude mcp add db -e DATABASE_URL=$DATABASE_URL -- \ npx -y @modelcontextprotocol/server-postgres
Ograniczenia sieciowe
Obsługa wrażliwych danych
Skonfiguruj minimalne uprawnienia:
-- Przykład PostgreSQL: Udziel dostępu do konkretnych tabelGRANT SELECT ON users, products, orders TO mcp_reader;
-- Przykład MySQL: Ogranicz do konkretnych operacjiGRANT SELECT, SHOW VIEW ON myapp.* TO 'mcp_reader'@'localhost';
-- Dodaj timeout zapytania dla bezpieczeństwaALTER USER mcp_reader SET statement_timeout = '30s';
Problem | Rozwiązanie |
---|---|
Odmowa połączenia | Sprawdź czy baza danych działa i akceptuje połączenia |
Błąd uwierzytelniania | Sprawdź poświadczenia i uprawnienia użytkownika |
Błędy timeout | Upewnij 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/TLS | Skonfiguruj tryb SSL w stringu połączenia |
# Testuj łączność z bazą danychpsql "postgresql://user:pass@localhost:5432/db" -c "SELECT 1"
# Sprawdź logi serwera MCPclaude mcp listclaude --mcp-debug
-- Sprawdź uprawnienia użytkownikaSELECT table_name, privilege_typeFROM information_schema.table_privilegesWHERE grantee = 'mcp_reader';
-- Testuj dostęp do konkretnych zapytańSET ROLE mcp_reader;SELECT * FROM users LIMIT 1;
Pooling połączeń
Limity zapytań
Zarządzanie oknem kontekstu
Zacznij od bazy development
Przejdź do staging
Rozważania produkcyjne
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: