Databases Python ★ 246

wenb1n-dev/mysql_mcp_server_pro

SSE ve STDIO desteği ile MySQL'in CRUD işlevlerinin ötesine geçen, veritabanı istisnalarını analiz eden ve rol tabanlı izinler yönetebilen bir araç; geliştiricilerin özelleştirme ile kolayca genişletebileceği mimariye sahip.

Claude Desktop config.json'a ekle

{
  "mcpServers": {
    "wenb1n-dev-mysql-mcp-server-pro": {
      "command": "python",
      "args": [
        "-m",
        "mysql_mcp_server_pro"
      ]
    }
  }
}

简体中文 English MseeP.ai Security Assessment Badge MCPHub

mcp_mysql_server_pro

Giriş

mcp_mysql_server_pro sadece MySQL CRUD işlemleri hakkında değil, aynı zamanda veritabanı anomali analizi yeteneklerini de içerir ve geliştiricilerin özel araçlarla kolayca genişletmesini sağlar.

  • Tüm Model Context Protocol (MCP) aktarım modlarını destekler (STDIO, SSE, Streamable Http)
  • OAuth2.0 desteği
  • ";" ile ayrılmış çoklu SQL yürütmeyi destekler
  • Tablo açıklamalarına dayalı olarak veritabanı tablo adlarını ve alanlarını sorgulama desteği
  • SQL yürütme planı analizi desteği
  • Çince alan adından pinyin dönüştürme desteği
  • Tablo kilidi analizi desteği
  • Veritabanı sağlık durumu analizi desteği
  • Üç rol ile izin kontrolü desteği: readonly, writer ve admin
    "readonly": ["SELECT", "SHOW", "DESCRIBE", "EXPLAIN"],  # Yalnızca okuma izinleri
    "writer": ["SELECT", "SHOW", "DESCRIBE", "EXPLAIN", "INSERT", "UPDATE", "DELETE"],  # Okuma-yazma izinleri
    "admin": ["SELECT", "SHOW", "DESCRIBE", "EXPLAIN", "INSERT", "UPDATE", "DELETE", 
             "CREATE", "ALTER", "DROP", "TRUNCATE"]  # Yönetici izinleri
    
  • Prompt şablonu çağırma desteği

Araç Listesi

Araç Adı Açıklama
execute_sql İzin yapılandırmasına dayalı olarak ["SELECT", "SHOW", "DESCRIBE", "EXPLAIN", "INSERT", "UPDATE", "DELETE", "CREATE", "ALTER", "DROP", "TRUNCATE"] komutlarını yürütebilen SQL yürütme aracı
get_chinese_initials Çince alan adlarını pinyin baş harflerine dönüştür
get_db_health_running MySQL sağlık durumunu analiz et (bağlantı durumu, işlem durumu, çalışma durumu, kilit durumu algılama)
get_table_desc Tablo adlarına dayalı olarak veritabanında tablo yapılarını ara, çok tablo sorgusunu destekler
get_table_index Tablo adlarına dayalı olarak veritabanında tablo dizinlerini ara, çok tablo sorgusunu destekler
get_table_lock Mevcut MySQL sunucusunda satır düzeyinde kilitler veya tablo düzeyinde kilitler olup olmadığını kontrol et
get_table_name Tablo açıklamalarına ve açıklamalarına dayalı olarak veritabanında tablo adlarını ara
get_db_health_index_usage Şu anda bağlı olan mysql veritabanının dizin kullanımını al, gereksiz dizin durumlarını, zayıf performans gösteren dizin durumlarını ve sorgu süresi 30 saniyeden fazla olan ilk 5 kullanılmayan dizin durumlarını içerir
optimize_sql Profesyonel SQL performans optimizasyonu aracı, MySQL yürütme planlarına, tablo yapı bilgisine, tablo veri hacmine ve tablo dizinlerine dayalı olarak uzman optimizasyon önerileri sağlar.
use_prompt_queryTableData mcp'deki araçların bir zincir çağrısını oluşturmak için yerleşik istemler kullan (yaygın olarak kullanılan sabit bir araç değildir, etkinleştirmek için kodu değiştirmeniz gerekir, ayrıntılar için bu sınıfa bakın)

Prompt Listesi

Prompt Adı Açıklama
analyzing-mysql-prompt Bu, MySQL ile ilgili sorunları analiz etmek için bir prompttur
query-table-data-prompt Bu, araçları kullanarak tablo verilerini sorgulamak için bir prompttur. Açıklama boşsa, MySQL veritabanı sorgu yardımcısı olarak başlatılacaktır

Kullanım Talimatları

Kurulum ve Yapılandırma

  1. Paketi Yükle
pip install mysql_mcp_server_pro
  1. Ortam Değişkenlerini Yapılandır Aşağıdaki içeriğe sahip bir .env dosyası oluştur:
# MySQL Veritabanı Yapılandırması
MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_USER=your_username
MYSQL_PASSWORD=your_password
MYSQL_DATABASE=your_database
# İsteğe bağlı, varsayılan 'readonly'dir. Kullanılabilir değerler: readonly, writer, admin
MYSQL_ROLE=readonly
  1. Hizmeti Çalıştır
# SSE modu
mysql_mcp_server_pro --mode sse --envfile /path/to/.env

## Streamable Http modu (varsayılan)
mysql_mcp_server_pro --envfile /path/to/.env

# Streamable Http oauth Kimlik Doğrulaması
mysql_mcp_server_pro --oauth true

  1. mcp client

"uv kullanarak hizmeti başlatın" başlıklı bölüme bakın ^_^

Not:

  • .env dosyası, komutu çalıştırdığınız dizine yerleştirilmeli veya yol belirtmek için --envfile parametresi kullanılmalıdır
  • Bu değişkenleri doğrudan ortamınızda da ayarlayabilirsiniz
  • Veritabanı yapılandırmasının doğru olduğundan ve bağlanabildiğinden emin olun

uvx ile Çalıştırma, Client Yapılandırması

  • Bu yöntem, kaynak kodu indirmeye gerek kalmadan doğrudan MCP destekleyen istemcilerde kullanılabilir. Örneğin, Tongyi Qianwen eklentisi, trae editörü vb.
{
	"mcpServers": {
		"mysql": {
			"command": "uvx",
			"args": [
				"--from",
				"mysql_mcp_server_pro",
				"mysql_mcp_server_pro",
				"--mode",
				"stdio"
			],
			"env": {
				"MYSQL_HOST": "192.168.x.xxx",
				"MYSQL_PORT": "3306",
				"MYSQL_USER": "root",
				"MYSQL_PASSWORD": "root",
				"MYSQL_DATABASE": "a_llm",
				"MYSQL_ROLE": "admin"
			}
		}
	}
}

Streamable Http Modu ile Yerel Geliştirme

  • Hizmeti başlatmak için uv kullan

MCP istemci araçlarına aşağıdaki içeriği ekle, örneğin cursor, cline, vb.

mcp json aşağıdaki gibidir:

{
  "mcpServers": {
    "mysql_mcp_server_pro": {
      "name": "mysql_mcp_server_pro",
      "type": "streamableHttp",
      "description": "",
      "isActive": true,
      "url": "http://localhost:3000/mcp/"
    }
  }
}

.env dosyası içeriğini değiştirerek veritabanı bağlantı bilgilerini güncelle:

# MySQL Veritabanı Yapılandırması
MYSQL_HOST=192.168.xxx.xxx
MYSQL_PORT=3306
MYSQL_USER=root
MYSQL_PASSWORD=root
MYSQL_DATABASE=a_llm
MYSQL_ROLE=admin

Başlatma komutları:

# Bağımlılıkları indir
uv sync

# Başlat
uv run -m mysql_mcp_server_pro.server

# Özel env dosyası konumu
uv run -m mysql_mcp_server_pro.server --envfile /path/to/.env

# OAuth Kimlik Doğrulaması
uv run -m mysql_mcp_server_pro.server --oauth true

SSE Modu ile Yerel Geliştirme

  • Hizmeti başlatmak için uv kullan

MCP istemci araçlarına aşağıdaki içeriği ekle, örneğin cursor, cline, vb.

mcp json aşağıdaki gibidir:

{
  "mcpServers": {
    "mysql_mcp_server_pro": {
      "name": "mysql_mcp_server_pro",
      "description": "",
      "isActive": true,
      "url": "http://localhost:9000/sse"
    }
  }
}

.env dosyası içeriğini değiştirerek veritabanı bağlantı bilgilerini güncelle:

# MySQL Veritabanı Yapılandırması
MYSQL_HOST=192.168.xxx.xxx
MYSQL_PORT=3306
MYSQL_USER=root
MYSQL_PASSWORD=root
MYSQL_DATABASE=a_llm
MYSQL_ROLE=admin

Başlatma komutları:

# Bağımlılıkları indir
uv sync

# Başlat
uv run -m mysql_mcp_server_pro.server --mode sse

# Özel env dosyası konumu
uv run -m mysql_mcp_server_pro.server --mode sse --envfile /path/to/.env

STDIO Modu ile Yerel Geliştirme

MCP istemci araçlarına aşağıdaki içeriği ekle, örneğin cursor, cline, vb.

mcp json aşağıdaki gibidir:

{
  "mcpServers": {
      "operateMysql": {
        "isActive": true,
        "name": "operateMysql",
        "command": "uv",
        "args": [
          "--directory",
          "/Volumes/mysql_mcp_server_pro/src/mysql_mcp_server_pro",    # Bunu proje yolunuzla değiştir
          "run",
          "-m",
          "mysql_mcp_server_pro.server",
          "--mode",
          "stdio"
        ],
        "env": {
          "MYSQL_HOST": "localhost",
          "MYSQL_PORT": "3306",
          "MYSQL_USER": "root", 
          "MYSQL_PASSWORD": "123456",
          "MYSQL_DATABASE": "a_llm",
          "MYSQL_ROLE": "admin"
       }
    }
  }
} 

Özel Araç Uzantıları

  1. handles paketine yeni bir araç sınıfı ekle, BaseHandler'dan miras al ve get_tool_description ve run_tool yöntemlerini uygula

  2. Sunucuda kullanılabilir hale getirmek için yeni aracı init.py'ye aktar

OAuth2.0 Kimlik Doğrulaması

  1. Kimlik doğrulama hizmetini başlat. Varsayılan olarak, yerleşik OAuth 2.0 parola modu kimlik doğrulamasını kullanır. Env dosyasında kendi kimlik doğrulama hizmeti adresini değiştirebilirsin.
uv run -m mysql_mcp_server_pro.server --oauth true
  1. http://localhost:3000/login adresinde kimlik doğrulama hizmetini ziyaret et. Varsayılan kullanıcı adı ve şifre env dosyasında yapılandırılır. image

  2. Token'ı kopyala ve istek başlıklarına ekle, örneğin: image

{
  "mcpServers": {
    "mysql_mcp_server_pro": {
      "name": "mysql_mcp_server_pro",
      "type": "streamableHttp",
      "description": "",
      "isActive": true,
      "url": "http://localhost:3000/mcp/",
      "headers": {
        "authorization": "bearer TOKEN_VALUE"
      }
    }
  }
}

Örnekler

  1. Yeni bir tablo oluştur ve veri ekle, prompt formatı aşağıdaki gibi:
# Görev
   Aşağıdaki yapıya sahip bir organizasyon yapısı tablosu oluştur: departman adı, departman numarası, üst departman, geçerli mi.
# Gereksinimler
 - Tablo adı: department
 - Ortak alanlar dizin gerekir
 - Her alanın yorumları olmalı, tablonun yorumları olmalı
 - Oluşturulduktan sonra 5 gerçek veri kaydı oluştur

image image

  1. Tablo açıklamalarına dayalı olarak veri sorgulanır, prompt aşağıdaki gibi:
Departman organizasyon yapısı tablosunda 'Executive Office' adlı Departman adına sahip verileri ara

image

  1. Yavaş SQL'i analiz et, prompt aşağıdaki gibi:
select * from t_jcsjzx_hjkq_cd_xsz_sk xsz
left join t_jcsjzx_hjkq_jcd jcd on jcd.cddm = xsz.cddm 
Mevcut dizin durumuna dayalı olarak yürütme planını gözden geçir ve markdown formatında optimizasyon önerileri sağla, tablo dizin durumunu, yürütme ayrıntılarını ve optimizasyon önerilerini içer
  1. SQL kilitlenme sorunlarını analiz et, prompt aşağıdaki gibi:
update t_admin_rms_zzjg set sfyx = '0' where xh = '1' takılmış, lütfen nedeni analiz et

image

  1. Sağlık durumu promptunu analiz et aşağıdaki gibi
MySQL'in mevcut sağlık durumunu kontrol et

image

Benzer MCP sunucuları

Daha fazla: Databases →