Postgres geliştirme ve operasyonları için kapsamlı MCP sunucusu; performans analizi, ayarlama ve sağlık kontrolleri için araçlar içerir.
Claude Desktop config.json'a ekle
{
"mcpServers": {
"crystaldba-postgres-mcp": {
"command": "python",
"args": [
"-m",
"postgres_mcp"
]
}
}
} Kaynak kodu al ve yerel olarak çalıştır
git clone https://github.com/crystaldba/postgres-mcp.git ~/.mcp/postgres-mcp
cd ~/.mcp/postgres-mcp Postgres MCP Pro, tüm geliştirme süreci boyunca sizleri ve AI ajanlarınızı desteklemek için inşa edilmiş açık kaynak bir Model Context Protocol (MCP) sunucusudur—ilk kodlamadan, test ve deployment aşamasından geçerek, production ayarlaması ve bakımı aşamasına kadar.
Postgres MCP Pro, bir veritabanı bağlantısını basitçe sarmaktan çok daha fazlasını yapar.
Özellikler şunları içerir:
Postgres MCP Pro, farklı ortamlarda esneklik için Standard Input/Output (stdio) ve Server-Sent Events (SSE) taşımaları destekler.
Postgres MCP Pro'yu neden inşa ettiğimiz hakkında ek bilgi için başlangıç blog yazımıza bakın.
Kullanılamaz Durumdan Işık Hızına
Ne yaptık:
Aşağıdaki videoyu izleyin veya oyun detayını okuyun.
https://github.com/user-attachments/assets/24e05745-65e9-4998-b877-a368f1eadc13
Başlamadan önce aşağıdakileri sağlayın:
psql veya pgAdmin gibi bir GUI aracı kullanarak erişim kimlik bilgilerinizin geçerli olduğunu doğrulayabilirsiniz.
Docker veya Python kullanma seçimi sizin. Genel olarak Docker'ı öneriyoruz çünkü Python kullanıcıları daha fazla ortama özgü sorunlarla karşılaşabilir. Ancak, genellikle sizin en alışık olduğunuz yöntemi kullanmak mantıklıdır.
Postgres MCP Pro'yu yüklemek için aşağıdaki yöntemlerden birini seçin:
Postgres MCP Pro MCP sunucusu Docker görüntüsünü çekin. Bu görüntü tüm gerekli bağımlılıkları içerir ve Postgres MCP Pro'yu çeşitli ortamlarda çalıştırmanın güvenilir bir yolunu sağlar.
docker pull crystaldba/postgres-mcp
pipx yüklüyse, Postgres MCP Pro'yu şu şekilde yükleyebilirsiniz:
pipx install postgres-mcp
Aksi halde, Postgres MCP Pro'yu uv ile yükleyin:
uv pip install postgres-mcp
uv yüklemeniz gerekiyorsa, uv kurulum talimatlarını görün.
Postgres MCP Pro'yu Claude Desktop ile yapılandırmak için tam talimatlar sağlıyoruz. Birçok MCP istemcisinin benzer yapılandırma dosyaları vardır, bu adımları seçtiğiniz istemciyle çalışacak şekilde uyarlayabilirsiniz.
Postgres MCP Pro'yu eklemek için Claude Desktop yapılandırma dosyasını düzenlemeniz gerekecektir. Bu dosyanın konumu işletim sisteminize bağlıdır:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%/Claude/claude_desktop_config.jsonClaude Desktop'taki Settings menü öğesini kullanarak yapılandırma dosyasını da bulabilirsiniz.
Şimdi yapılandırma dosyasının mcpServers bölümünü düzenleyeceksiniz.
{
"mcpServers": {
"postgres": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"DATABASE_URI",
"crystaldba/postgres-mcp",
"--access-mode=unrestricted"
],
"env": {
"DATABASE_URI": "postgresql://username:password@localhost:5432/dbname"
}
}
}
}
Postgres MCP Pro Docker görüntüsü, localhost host adresini konteyner içinden çalışacak şekilde otomatik olarak yeniden eşler.
host.docker.internal kullanır otomatik olarak172.17.0.1 veya uygun host adresini otomatik olarak kullanıruvx Kullanıyorsanız{
"mcpServers": {
"postgres": {
"command": "uvx",
"args": [
"postgres-mcp",
"--access-mode=unrestricted"
],
"env": {
"DATABASE_URI": "postgresql://username:password@localhost:5432/dbname"
}
}
}
}
pipx Kullanıyorsanız{
"mcpServers": {
"postgres": {
"command": "postgres-mcp",
"args": [
"--access-mode=unrestricted"
],
"env": {
"DATABASE_URI": "postgresql://username:password@localhost:5432/dbname"
}
}
}
}
uv Kullanıyorsanız{
"mcpServers": {
"postgres": {
"command": "uv",
"args": [
"run",
"postgres-mcp",
"--access-mode=unrestricted"
],
"env": {
"DATABASE_URI": "postgresql://username:password@localhost:5432/dbname"
}
}
}
}
postgresql://... yerine Postgres veritabanı bağlantısı URI'nizi girin.
Postgres MCP Pro, AI ajanının veritabanında gerçekleştirebileceği işlemleri kontrol etmek için birden çok erişim modu destekler:
Kısıtlı modu kullanmak için yukarıdaki yapılandırma örneklerinde --access-mode=unrestricted yerine --access-mode=restricted yazın.
Birçok MCP istemcisinin Claude Desktop'a benzer yapılandırma dosyaları vardır ve yukarıdaki örnekleri seçtiğiniz istemciyle çalışacak şekilde uyarlayabilirsiniz.
Command Palette'ten Cursor Settings'e gidebilir, ardından MCP sekmesini açabilirsiniz.Command Palette'ten Open Windsurf Settings Page'e gidebilirsiniz.goose configure komutunu çalıştırın, ardından Add Extension seçin.Connect more tools öğesine tıklayın, + Add new MCP öğesine tıklayın, ardından yeni yapılandırmayı ekleyin.Postgres MCP Pro, SSE taşımasını destekler; bu, birden çok MCP istemcisinin bir sunucuyu (muhtemelen uzak bir sunucu) paylaşmasına olanak tanır.
SSE taşımasını kullanmak için sunucuyu --transport=sse seçeneğiyle başlatmanız gerekir.
Örneğin, Docker ile çalıştırma:
docker run -p 8000:8000 \
-e DATABASE_URI=postgresql://username:password@localhost:5432/dbname \
crystaldba/postgres-mcp --access-mode=unrestricted --transport=sse
Ardından MCP istemci yapılandırmanızı MCP sunucusunu çağırmak üzere güncelleyin.
Örneğin, Cursor'un mcp.json veya Cline'nin cline_mcp_settings.json dosyasında şunu yazabilirsiniz:
{
"mcpServers": {
"postgres": {
"type": "sse",
"url": "http://localhost:8000/sse"
}
}
}
Windsurf için mcp_config.json dosyasındaki biçim biraz farklıdır:
{
"mcpServers": {
"postgres": {
"type": "sse",
"serverUrl": "http://localhost:8000/sse"
}
}
}
Index ayarlaması ve kapsamlı performans analizi etkinleştirmek için veritabanınıza pg_stat_statements ve hypopg uzantılarını yüklemeniz gerekir.
pg_stat_statements uzantısı, Postgres MCP Pro'nun sorgu yürütme istatistiklerini analiz etmesine olanak tanır.
Örneğin, bu, hangi sorguların yavaş çalıştığını veya önemli kaynakları tükettiğini anlamasını sağlar.hypopg uzantısı, Postgres MCP Pro'nun index'ler eklendikten sonra Postgres sorgu planlayıcısının davranışını simüle etmesine olanak tanır.Postgres veritabanınız bir bulut sağlayıcısı yönetilen hizmetinde çalışıyorsa, pg_stat_statements ve hypopg uzantıları sistemde zaten kullanılabilir olmalıdır.
Bu durumda, yeterli ayrıcalıklara sahip bir rol kullanarak sadece CREATE EXTENSION komutlarını çalıştırabilirsiniz:
CREATE EXTENSION IF NOT EXISTS pg_stat_statements;
CREATE EXTENSION IF NOT EXISTS hypopg;
Kendi Postgres kurulumunuzu yönetiyorsanız, ek çalışma gerekebilir.
pg_stat_statements uzantısını yüklemeden önce, bunun Postgres yapılandırma dosyasının shared_preload_libraries kısmında listelendiğinden emin olmalısınız.
hypopg uzantısı, Postgres ile her zaman gelmediği için ek sistem düzeyinde kurulum (örneğin, paket yöneticiniz aracılığıyla) gerektirebilir.
Sorun:
Veritabanımın sağlığını kontrol edin ve sorunları belirleyin.
Sorun:
Veritabanımın en yavaş sorguları nelerdir? Ve bunları nasıl hızlandırabilirim?
Sorun:
Uygulamamız yavaş. Onu nasıl daha hızlı yapabilirim?
Sorun:
Veritabanı iş yükümü analiz edin ve performansı iyileştirmek için index'ler öneriniz.
Sorun:
Bu sorguyu optimize etmeme yardımcı olun: SELECT * FROM orders JOIN customers ON orders.customer_id = customers.id WHERE orders.created_at > '2023-01-01';
MCP standardı, çeşitli uç nokta türlerini tanımlar: Tools, Resources, Prompts ve diğerleri.
Postgres MCP Pro işlevselliği yalnızca MCP tools aracılığıyla sağlar. Bunu seçtik çünkü MCP istemci ekosistemi MCP tools için yaygın desteğe sahiptir. Bu, Reference Postgres MCP Server dahil diğer Postgres MCP sunucularının MCP resources kullanarak şema bilgisini ortaya çıkaran yaklaşımından farklıdır.
Postgres MCP Pro Tools'ları:
| Tool Adı | Açıklama |
|---|---|
list_schemas |
PostgreSQL örneğinde bulunan tüm veritabanı şemalarını listeler. |
list_objects |
Belirtilen şema içinde veritabanı nesnelerini (tablolar, görünümler, diziler, uzantılar) listeler. |
get_object_details |
Belirli bir veritabanı nesnesi hakkında bilgi sağlar; örneğin, bir tablonun sütunları, kısıtlamaları ve index'leri. |
execute_sql |
SQL deyimlerini veritabanında yürütür, kısıtlı modda bağlandığında salt okunur sınırlamalarıyla. |
explain_query |
Postgres'in bir SQL sorgusunu nasıl işleyeceğini açıklayan bir yürütme planını alır ve sorgu planlayıcısının maliyet modelini ortaya çıkarır. Index'ler eklendikten sonra davranışı simüle etmek için varsayımsal index'lerle çağrılabilir. |
get_top_queries |
pg_stat_statements verilerini kullanarak toplam yürütme süresine dayalı en yavaş SQL sorgularını raporlar. |
analyze_workload_indexes |
Veritabanı iş yükünü analiz ederek kaynak yoğun sorguları tanımlar, sonra bunlar için optimal index'leri önerir. |
analyze_query_indexes |
Belirli SQL sorguları listesini (en fazla 10) analiz eder ve bunlar için optimal index'leri önerir. |
analyze_db_health |
Şunları içeren kapsamlı sistem sağlığı kontrolleri gerçekleştirir: buffer cache hit oranları, bağlantı sağlığı, kısıtlama doğrulaması, index sağlığı (yinelenen/kullanılmayan/geçersiz), sequence sınırları ve vakum sağlığı. |
Postgres MCP Sunucuları
DBA Araçları (ticari teklifleri dahil)
Postgres Araçları
Postgres MCP Pro diğer Postgres MCP sunucularından nasıl farklı? Bir yapay zeka ajanının Postgres veritabanında sorgu çalıştırmasına izin veren birçok MCP sunucusu vardır. Postgres MCP Pro bunu da yapar, ancak aynı zamanda Postgres veritabanının performansını anlamak ve iyileştirmek için araçlar ekler. Örneğin, Microsoft SQL Server'ın Database Tuning Advisor'ının Anytime Algoritmasının otomatik index ayarlaması için sürümünü uygular; bu modern endüstriyel güçte bir algoritmadır.
| Postgres MCP Pro | Diğer Postgres MCP Sunucuları |
|---|---|
| ✅ Deterministik veritabanı sistem sağlığı kontrolleri | ❌ Tekrarlanamayan LLM tarafından oluşturulan sistem sağlığı sorguları |
| ✅ İlkeli indexleme arama stratejileri | ❌ Indexleme iyileştirmeleri hakkında Gen-AI tahminleri |
| ✅ En iyi sorunları bulmak için iş yükü analizi | ❌ Tutarsız sorun analizi |
| ✅ Performans iyileştirmelerini simüle eder | ❌ Kendiniz deneyin ve çalışıp çalışmadığını görün |
Postgres MCP Pro, deterministik araçlar ve klasik optimizasyon algoritmaları ekleyerek üretken yapay zekayı tamamlar. Kombinasyon hem güvenilir hem de esnek.
LLM mantık yürütebiliyorken, SQL oluşturabiliyorken vb. MCP araçlarına neden ihtiyaç duyuluyor? LLM'ler, belirsizlik, mantık veya doğal dil içeren görevler için priceless'tır. Prosedürel kod ile karşılaştırıldığında, ancak yavaş, pahalı, rastgele olabilir ve bazen güvenilmez sonuçlar üretebilir. Veritabanı ayarlaması söz konusu olduğunda, çalışması kanıtlanmış onyıllar boyunca geliştirilen iyi kurulmuş algoritmalarımız vardır. Postgres MCP Pro, LLM'leri klasik optimizasyon algoritmaları ve diğer prosedürel araçlarla eşleştirerek her ikisinin en iyi yönlerini birleştirmenize olanak tanır.
Postgres MCP Pro nasıl test edilir? Test, Postgres MCP Pro'nun güvenilir ve doğru olmasını sağlamak için kritiktir. Postgres MCP Pro'ya meydan okumak ve çeşitli senaryolarda performans göstermesini sağlamak için tasarlanmış yapay zeka tarafından oluşturulan antagonistik iş yükleri hakkında bir test paketini geliştiriyoruz.
Hangi Postgres sürümleri destekleniyor? Şu anda test ettiğimiz sürümler Postgres 15, 16 ve 17'dir. Postgres 13 ile 17 arasındaki sürümleri desteklemeyi planlıyoruz.
Bu projeyi kim oluşturdu? Bu proje Crystal DBA tarafından oluşturulup yönetilmektedir.
TBD
Siz ve ihtiyaçlarınız, inşa ettiğimiz şeyler için kritik bir itici güçtür. Issue veya pull request açarak görmek istediğiniz şeyleri bize anlatın. Ayrıca Discord üzerinden bize ulaşabilirsiniz.
Bu bölüm, Postgres MCP Pro tasarımını etkileyen teknik hususlarının üst düzey bir özeti içerir.
Geliştiriciler, eksik index'lerin en yaygın veritabanı performans sorunlarından biri olduğunu bilirler. Index'ler, Postgres'in bir sorguyu yürütmek için gereken verileri hızlı bir şekilde bulmasına olanak tanıyan erişim yöntemleri sağlar. Tablolar küçük olduğunda, index'ler çok az fark yaratır, ancak veri boyutu büyüdükçe, tablo taraması ile index araması arasındaki algoritmik karmaşıklık farkı önemli hale gelir (tipik olarak O(n) vs O(log n), birden çok tabl
Veritabanları için kolay, hızlı ve güvenli araçlar sağlayan açık kaynak MCP sunucusu.
Baserow veritabanı entegrasyonu ile tablo arama, listeleme ve satır oluşturma, okuma, güncelleme ve silme işlemlerini gerçekleştirebilirsiniz.
Supabase'in resmi MCP sunucusu, AI asistanlarını doğrudan Supabase projenize bağlayarak tablo yönetimi, config getirme ve veri sorgulama gibi işlemleri gerçekleştirmelerine olanak tanır.
NodeJS'de MySQL veritabanı entegrasyonu, yapılandırılabilir erişim kontrolleri ve schema incelemesi özellikleri ile sağlanır.
A Qdrant MCP server
MySQL veritabanı entegrasyonu, yapılandırılabilir erişim kontrolleri, schema incelemesi ve kapsamlı güvenlik yönergeleri ile gelir.