{"id":"dpflucas-mysql-mcp-server","name":"mysql-mcp-server","homepage":null,"repo_url":"https://github.com/dpflucas/mysql-mcp-server","category":"infrastructure","subcategories":[],"tags":["mcp","mysql","database","read-only","sql","tooling","agents"],"what_it_does":"Provides an MCP server that offers read-only exploration and querying of MySQL databases: listing databases, listing tables, describing table schemas, and executing read-only SQL (SELECT/SHOW/DESCRIBE/EXPLAIN) with safeguards like timeouts, row limits, and query validation.","use_cases":["Allowing LLM/agent users to explore MySQL schemas (databases/tables/columns)","Running safe, read-only analytical queries with guardrails","Automating DBA/analyst workflows like schema inspection and sampling rows"],"not_for":["Executing data-modifying statements (INSERT/UPDATE/DELETE/DDL)","Performing large, high-cardinality queries without considering row limits/timeouts","Handling highly sensitive environments without careful database user permissions"],"best_when":"You want agent-driven read-only database browsing and sampling using an MCP-capable client, with a dedicated MySQL user that has only least-privilege SELECT/metadata access.","avoid_when":"You cannot guarantee least-privilege MySQL credentials or you need strict assurances beyond basic query allowlisting/timeouts/limits.","alternatives":["Use direct MySQL access with database views/RO accounts (no MCP)","Use a generic SQL MCP server with stronger/explicit policy controls","Use an ETL/analytics tool (e.g., read replicas + BI) for exploration instead of live queries"],"af_score":61.5,"security_score":55.8,"reliability_score":26.2,"package_type":"mcp_server","discovery_source":["github"],"priority":"high","status":"evaluated","version_evaluated":null,"last_evaluated":"2026-03-30T15:18:14.664028+00:00","interface":{"has_rest_api":false,"has_graphql":false,"has_grpc":false,"has_mcp_server":true,"mcp_server_url":null,"has_sdk":false,"sdk_languages":[],"openapi_spec_url":null,"webhooks":false},"auth":{"methods":["MySQL username/password via environment variables (MYSQL_USER, MYSQL_PASSWORD)"],"oauth":false,"scopes":false,"notes":"Authentication is delegated to MySQL credentials configured via env vars. No OAuth/scoped auth layer is described at the MCP layer."},"pricing":{"model":null,"free_tier_exists":false,"free_tier_limits":null,"paid_tiers":[],"requires_credit_card":false,"estimated_workload_costs":null,"notes":"No pricing information provided in the supplied content."},"requirements":{"requires_signup":false,"requires_credit_card":false,"domain_verification":false,"data_residency":[],"compliance":[],"min_contract":null},"agent_readiness":{"af_score":61.5,"security_score":55.8,"reliability_score":26.2,"mcp_server_quality":85.0,"documentation_accuracy":80.0,"error_message_quality":0.0,"error_message_notes":null,"auth_complexity":80.0,"rate_limit_clarity":20.0,"tls_enforcement":70.0,"auth_strength":55.0,"scope_granularity":40.0,"dependency_hygiene":40.0,"secret_handling":70.0,"security_notes":"Security claims are mostly at the application/query level (read-only allowlisting, query validation, timeouts, row limits). TLS enforcement, exact query validation robustness, and secret logging hygiene are not explicitly evidenced in the provided content. Best practice is to use a least-privilege MySQL user restricted to SELECT/metadata and to ensure the MySQL client uses TLS as configured.","uptime_documented":0.0,"version_stability":40.0,"breaking_changes_history":30.0,"error_recovery":35.0,"idempotency_support":"false","idempotency_notes":"Most operations are read-only; idempotency is effectively expected, but explicit guarantees and retry/idempotency behavior are not documented.","pagination_style":"none","retry_guidance_documented":false,"known_agent_gotchas":["Agents may attempt disallowed SQL; responses/errors may depend on the internal query validation implementation.","Row limits/timeouts may truncate results; agents should be prepared to refine queries.","Schema/table names may require correct database selection (default database may be used if database argument omitted)."]}}