UNPKG

@benborla29/mcp-server-mysql

Version:

MCP server for interacting with MySQL databases based on Node

51 lines (50 loc) 2.18 kB
import * as dotenv from "dotenv"; import { parseSchemaPermissions } from "../utils/index.js"; export const MCP_VERSION = "2.0.2"; dotenv.config(); if (process.env.NODE_ENV === "test" && !process.env.MYSQL_DB) { process.env.MYSQL_DB = "mcp_test_db"; } export const ALLOW_INSERT_OPERATION = process.env.ALLOW_INSERT_OPERATION === "true"; export const ALLOW_UPDATE_OPERATION = process.env.ALLOW_UPDATE_OPERATION === "true"; export const ALLOW_DELETE_OPERATION = process.env.ALLOW_DELETE_OPERATION === "true"; export const ALLOW_DDL_OPERATION = process.env.ALLOW_DDL_OPERATION === "true"; export const SCHEMA_INSERT_PERMISSIONS = parseSchemaPermissions(process.env.SCHEMA_INSERT_PERMISSIONS); export const SCHEMA_UPDATE_PERMISSIONS = parseSchemaPermissions(process.env.SCHEMA_UPDATE_PERMISSIONS); export const SCHEMA_DELETE_PERMISSIONS = parseSchemaPermissions(process.env.SCHEMA_DELETE_PERMISSIONS); export const SCHEMA_DDL_PERMISSIONS = parseSchemaPermissions(process.env.SCHEMA_DDL_PERMISSIONS); export const isMultiDbMode = !process.env.MYSQL_DB || process.env.MYSQL_DB.trim() === ""; export const mcpConfig = { server: { name: "@benborla29/mcp-server-mysql", version: MCP_VERSION, connectionTypes: ["stdio"], }, mysql: { ...(process.env.MYSQL_SOCKET_PATH ? { socketPath: process.env.MYSQL_SOCKET_PATH, } : { host: process.env.MYSQL_HOST || "127.0.0.1", port: Number(process.env.MYSQL_PORT || "3306"), }), user: process.env.MYSQL_USER || "root", password: process.env.MYSQL_PASS === undefined ? "" : process.env.MYSQL_PASS, database: process.env.MYSQL_DB || undefined, connectionLimit: 10, authPlugins: { mysql_clear_password: () => () => Buffer.from(process.env.MYSQL_PASS || "root"), }, ...(process.env.MYSQL_SSL === "true" ? { ssl: { rejectUnauthorized: process.env.MYSQL_SSL_REJECT_UNAUTHORIZED === "true", }, } : {}), }, paths: { schema: "schema", }, };