Skip to main content
Glama
mysql.py1.86 kB
import mysql.connector from .base import BaseDB from mcp_databases.security import validate_sql_security, SQLSecurityError class MySQLDB(BaseDB): def _connect(self): return mysql.connector.connect( host=self.conn_params['server'], database=self.conn_params['database'], user=self.conn_params['user'], password=self.conn_params['password'] ) def execute_query(self, query: str): # VALIDAÇÃO DE SEGURANÇA OBRIGATÓRIA - CAMADA DE PROTEÇÃO NO BANCO try: validate_sql_security(query, allow_modifications=False) except SQLSecurityError as e: raise SQLSecurityError(f"MySQL: Execução bloqueada por segurança - {str(e)}") conn = self._connect() cursor = conn.cursor(dictionary=True) cursor.execute(query) rows = cursor.fetchall() conn.close() return rows def insert_record(self, table: str, data: dict): cols = ",".join(data.keys()) vals = ",".join(["%s"] * len(data)) query = f"INSERT INTO {table} ({cols}) VALUES ({vals})" conn = self._connect() cursor = conn.cursor() cursor.execute(query, tuple(data.values())) conn.commit() conn.close() def list_tables(self): conn = self._connect() cursor = conn.cursor() cursor.execute("SHOW TABLES") tables = [row[0] for row in cursor.fetchall()] conn.close() return tables def get_schema(self): conn = self._connect() cursor = conn.cursor() cursor.execute("SELECT table_name, column_name, data_type FROM information_schema.columns WHERE table_schema = DATABASE()") rows = cursor.fetchall() conn.close() return "\n".join([f"{r[0]}.{r[1]} ({r[2]})" for r in rows])

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/fean-developer/mcp-databases'

If you have feedback or need assistance with the MCP directory API, please join our Discord server