@benborla29/mcp-server-mysql
Version:
MCP server for interacting with MySQL databases based on Node
51 lines (50 loc) • 2.18 kB
JavaScript
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",
},
};