{"id":43299,"library":"mysql-mcp-readonly","title":"MySQL Read-Only MCP Server","description":"A read-only MySQL MCP server for AI agents (Claude, etc.) that provides safe, restricted access to MySQL databases. Version 0.1.2, stable. Supports DDL (schema inspection) but only SELECT queries — INSERT/UPDATE/DELETE are blocked. Released as an npm package, designed for integration with MCP-compatible AI tools. Key differentiator: strict read-only enforcement at the server level, not just SQL parsing.","status":"active","version":"0.1.2","language":"javascript","source_language":"en","source_url":"https://github.com/rilfi/mysql-readonly-mcp","tags":["javascript","mcp","mysql","read-only","ai","claude"],"install":[{"cmd":"npm install mysql-mcp-readonly","lang":"bash","label":"npm"},{"cmd":"yarn add mysql-mcp-readonly","lang":"bash","label":"yarn"},{"cmd":"pnpm add mysql-mcp-readonly","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Required for MCP protocol implementation","package":"@modelcontextprotocol/sdk","optional":false},{"reason":"MySQL database driver for Node.js","package":"mysql2","optional":false}],"imports":[{"note":"The package is not meant to be imported; it's a CLI tool. Server is from MCP SDK.","wrong":"import { Server } from 'mysql-mcp-readonly'","symbol":"Server","correct":"import { Server } from '@modelcontextprotocol/sdk/server/index.js'"},{"note":"Use promise-based API with mysql2 for async/await support.","wrong":"const mysql = require('mysql2')","symbol":"mysql2","correct":"import mysql from 'mysql2/promise'"},{"note":"Explicit path to types module ensures correct import.","wrong":"import { CallToolRequestSchema } from '@modelcontextprotocol/sdk'","symbol":"CallToolRequestSchema","correct":"import { CallToolRequestSchema } from '@modelcontextprotocol/sdk/types.js'"}],"quickstart":{"code":"const mysql_readonly = require('mysql-mcp-readonly');\nconst server = new mysql_readonly.Server({\n  host: process.env.MYSQL_HOST || 'localhost',\n  port: parseInt(process.env.MYSQL_PORT || '3306'),\n  user: process.env.MYSQL_USER || 'root',\n  password: process.env.MYSQL_PASSWORD ?? '',\n  database: process.env.MYSQL_DATABASE || 'test'\n});\nserver.start();\n// Then configure MCP client to connect to the server","lang":"javascript","description":"Shows how to instantiate and start the read-only MySQL MCP server using environment variables for configuration."},"warnings":[{"fix":"Use a separate write-enabled server if write access is needed.","message":"The server only allows SELECT statements; INSERT/UPDATE/DELETE are rejected.","severity":"gotcha","affected_versions":">=0.1.0"},{"fix":"Consider the implications: though read-only for data, schema changes are permitted. Restrict network access accordingly.","message":"DDL queries (e.g., CREATE TABLE, ALTER) are allowed; they are not filtered out.","severity":"gotcha","affected_versions":">=0.1.0"},{"fix":"Pin exact version in production and monitor updates.","message":"Package version 0.1.2; API may change without major version bump before 1.0.","severity":"gotcha","affected_versions":"<1.0.0"},{"fix":"Use a dedicated MySQL user with limited privileges for this server.","message":"No built-in authentication or authorization beyond MySQL credentials.","severity":"gotcha","affected_versions":">=0.1.0"}],"env_vars":null,"search_vec":"'0.1.2':28 'access':23 'agent':16 'ai':15,53,76 'block':40 'claud':17,77 'compat':52 'databas':26 'ddl':31 'design':46 'differenti':56 'enforc':61 'etc':18 'insert/update/delete':38 'inspect':33 'integr':48 'javascript':70 'key':55 'level':65 'mcp':5,12,51,71 'mcp-compat':50 'mysql':1,11,25,72 'npm':44 'packag':45 'pars':69 'provid':20 'queri':37 'read':3,9,59,74 'read-on':2,8,58,73 'releas':41 'restrict':22 'safe':21 'schema':32 'select':36 'server':6,13,64 'sql':68 'stabl':29 'strict':57 'support':30 'tool':54 'version':27","created_at":"2026-06-05T16:59:07.958482+00:00","updated_at":"2026-06-05T16:59:07.958482+00:00","problems":[{"fix":"Run: npm install @modelcontextprotocol/sdk","cause":"Missing peer dependency @modelcontextprotocol/sdk.","error":"Error: Cannot find module '@modelcontextprotocol/sdk'"},{"fix":"Ensure MySQL is running and MYSQL_HOST/MYSQL_PORT environment variables are correct.","cause":"MySQL server not running or wrong host/port.","error":"Error: Connection refused - mysql2"},{"fix":"Check MYSQL_USER and MYSQL_PASSWORD environment variables.","cause":"Invalid MySQL credentials.","error":"Error: ER_ACCESS_DENIED_ERROR: Access denied for user"}],"ecosystem":"npm","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":null,"cli_version":null,"type":"library","homepage":"https://github.com/rilfi/mysql-readonly-mcp#readme","github":"https://github.com/rilfi/mysql-readonly-mcp","docs":null,"changelog":null,"pypi":null,"npm":"mysql-mcp-readonly","openapi_spec":null,"status_page":null,"smithery":null,"categories":["database"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-05","next_check":"2026-09-03","install_tag":null}}