{
  "name": "io.github.benborla/mcp-server-mysql",
  "description": "A community-maintained MCP that connects an AI agent to a MySQL or MariaDB database. Exposes schema inspection, table listing, and SELECT execution behind a read-only safety flag. Designed to be the safe default for any agent-driven MySQL conversation — when you want to draft queries, debug schemas, or pull rows for analysis without giving the model write power.",
  "status": "active",
  "version": "latest",
  "_meta": {
    "com.top-mcps/lastVerified": "2026-05-27",
    "com.top-mcps/score": {
      "value": 79,
      "rubricVersion": "2026-04",
      "lastComputed": "2026-06-02T13:16:41.641Z",
      "methodology": "https://top-mcps.com/about/methodology"
    },
    "com.top-mcps/stats": {
      "fetchedAt": "2026-06-02T11:55:52.271Z",
      "githubStars": 1724,
      "lastCommitAt": "2026-03-10T15:55:33Z",
      "npmWeeklyDownloads": 7507
    }
  },
  "repository": {
    "url": "https://github.com/benborla/mcp-server-mysql",
    "source": "github"
  },
  "author": {
    "name": "Community"
  },
  "packages": [
    {
      "registryType": "npm",
      "registryBaseUrl": "https://registry.npmjs.org",
      "identifier": "@benborla29/mcp-server-mysql",
      "version": "latest",
      "transport": {
        "type": "stdio"
      },
      "environmentVariables": [
        {
          "name": "MYSQL_HOST",
          "description": "MYSQL_HOST — required credential for MySQL.",
          "isRequired": true,
          "isSecret": true
        },
        {
          "name": "MYSQL_PORT",
          "description": "MYSQL_PORT — required credential for MySQL.",
          "isRequired": true,
          "isSecret": true
        },
        {
          "name": "MYSQL_USER",
          "description": "MYSQL_USER — required credential for MySQL.",
          "isRequired": true,
          "isSecret": true
        },
        {
          "name": "MYSQL_PASS",
          "description": "MYSQL_PASS — required credential for MySQL.",
          "isRequired": true,
          "isSecret": true
        },
        {
          "name": "MYSQL_DB",
          "description": "MYSQL_DB — required credential for MySQL.",
          "isRequired": true,
          "isSecret": true
        }
      ]
    }
  ],
  "capabilities": {
    "tools": [
      {
        "name": "list_tables",
        "description": "List tables in a database.",
        "sideEffect": "read"
      },
      {
        "name": "describe_table",
        "description": "Return columns, types, indexes, and constraints for a table.",
        "sideEffect": "read",
        "args": [
          {
            "name": "table",
            "type": "string",
            "required": true
          }
        ]
      },
      {
        "name": "query",
        "description": "Run a SELECT and return rows. SELECT-only.",
        "sideEffect": "read",
        "args": [
          {
            "name": "sql",
            "type": "string",
            "required": true
          }
        ]
      }
    ],
    "security": {
      "scope": "read-only",
      "sandbox": "Connects to a MySQL/MariaDB server using credentials in env vars. No write tools exposed. Combine with a read-only database user and a tight statement timeout.",
      "gotchas": [
        "Read-only is tool-level, not role-level — always pair with a read-only DB user.",
        "Connection strings end up in client config; store credentials in the OS keychain where the client supports it.",
        "Without a statement timeout, an LLM can wedge the server with a bad join."
      ]
    }
  },
  "_links": {
    "html": "https://top-mcps.com/mcp/mysql",
    "markdown": "https://top-mcps.com/mcp/mysql.md",
    "methodology": "https://top-mcps.com/about/methodology"
  }
}
