MySQL Bridge
Provides read-only access to MySQL databases, enabling listing tables and views, reading schema metadata, and executing SELECT, SHOW, DESCRIBE, EXPLAIN, or WITH queries without ever performing writes.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MySQL BridgeWhat tables are in the database and what does the users table look like?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MySQL Bridge
MySQL Bridge is a read-only MySQL MCP plugin for Claude Code and a submission-ready MCP package for ChatGPT’s Plugins Directory.
Claude Code
Install directly from this repository’s marketplace:
claude plugin marketplace add stoicsatvik/mysql-bridge-mcp
claude plugin install mysql-bridge@mysql-bridge-marketplaceClaude Code then asks for a host, port, database, and a dedicated read-only MySQL account. The password is marked sensitive in the plugin manifest. The package includes its bundled server artifact, so users do not need to install project dependencies.
Related MCP server: MCP MySQL Server
Security model
list_tableslists available tables and views.describe_tablereads schema metadata.queryonly accepts oneSELECT,SHOW,DESCRIBE,EXPLAIN, orWITHstatement.The server never executes writes, even if the connected database account is over-permissioned.
ChatGPT Plugins Directory
chatgpt-app-submission.json provides the required app information, tool annotations, and five positive plus three negative review tests. ChatGPT public listing requires a production Streamable HTTP MCP endpoint with OAuth 2.1, a verified publisher, public privacy/terms/support URLs, and OpenAI approval. The current bundled server is a Claude Code local stdio plugin; it is intentionally not submitted as a fake public ChatGPT endpoint.
See official submission notes for the exact remaining requirements.
Develop
npm install
npm run check
npm run build
npm run build:pluginAvailable Tools
3 toolsdescribe_tableARead-only
Use this when you need the columns, types, keys, and defaults for one MySQL table.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, covering safety. The description adds value by specifying exactly what the tool returns (columns, types, keys, defaults), providing behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is front-loaded with the use case and contains no extraneous information. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema exists, so return values are already documented. The description covers the tool's purpose and parameter meaning sufficiently for a simple read-only operation. Nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no description for the 'table' parameter (0% coverage). The description clarifies that it refers to a MySQL table name, which is helpful, but it doesn't specify naming conventions or whether it expects a qualified name (e.g., schema.table). Minimal but adequate for a single obvious parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action—retrieving columns, types, keys, and defaults—for a MySQL table. It clearly distinguishes itself from sibling tools list_tables (which lists tables) and query (which runs SQL) by specifying schema inspection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides an explicit 'use when' condition: when you need schema details for one MySQL table. It doesn't mention alternatives or when not to use it, but the context is clear enough for an agent to select it over list_tables or query.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tablesARead-only
Use this when you need to list tables and views in the configured MySQL database.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds no extra behavioral context such as output format, pagination, or system-table exclusion. It is adequate but does not exceed the annotation information.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with zero waste. It states the tool's purpose and condition in a clear, minimal form.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, parameterless, read-only listing tool with an output schema present, the description fully covers what the agent needs to know. No return-value explanation is required because the output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description cannot add parameter details. According to the baseline rule, 0 params earns a baseline of 4; no additional explanation is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'list' and the resource 'tables and views in the configured MySQL database.' It distinguishes itself from siblings 'describe_table' (which describes a single table) and 'query' (which runs arbitrary SQL) by specifying a listing operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says 'Use this when you need to list tables and views,' providing a clear condition for use. However, it does not mention alternatives or when not to use it, so it could be more explicit about routing away from siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
queryARead-only
Use this when you need to run one read-only MySQL query. It accepts SELECT, SHOW, DESCRIBE, EXPLAIN, and WITH statements only.
| Name | Required | Description | Default |
|---|---|---|---|
| sql | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false, and the description confirms by specifying only read-only statements. It adds the SQL length limit (12000 chars) and the constraint that only one query is executed, which are behavioral details not in annotations. No contradiction found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the primary purpose (run a read-only query) and lists the accepted statement types at the end. Every word is necessary and there is no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter) and the presence of an output schema, the description covers the essential aspects: what the tool does, the accepted statement types, and the read-only constraint. It lacks explicit mention of how to use the output or edge cases, but those are likely in the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has only one parameter (sql) with no description, so schema coverage is 0%. The description does not explain what the parameter should contain beyond 'SQL query', but the tool name and statement types imply it. This is a minimal but acceptable level of compensation; a stronger description would specify the exact format or examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear purpose: run one read-only MySQL query, listing accepted statement types. It distinguishes from siblings by focusing on arbitrary SQL execution versus listing tables or describing a specific table, though it doesn't explicitly compare to them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly indicates when to use this tool (when needing a read-only query) and specifies accepted statement types, providing implicit guidance on when not to use it (e.g., for DDL or DML). However, it doesn't explicitly mention alternatives like list_tables or describe_table for simpler needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
v0.2.0- First observed
describe_table - First observed
list_tables - First observed
query
TDQS
Scored across 3 tools
Each tool serves a clearly distinct purpose: listing tables, describing a table's schema, and executing arbitrary read-only queries. There is no overlap or ambiguity, so an agent can easily select the right tool for the task.
Two tools follow the verb_noun pattern (list_tables, describe_table), while 'query' is a bare verb. This is a minor deviation, but the naming remains predictable and readable, and the overall style is consistent (snake_case).
Three tools is a small but reasonable footprint for a read-only database bridge. They cover the core operations (listing, describing, and querying) without unnecessary bloat, though a slightly larger set could be justified.
For a read-only MySQL bridge, the surface covers the essential workflows: discovering available tables, understanding schema, and running arbitrary queries. A potential gap is lack of transaction or metadata utilities, but these are not expected for a simple bridge.
Maintenance
Related MCP Connectors
Safe, read-only Postgres and MySQL access for AI agents. Audit log + column-level controls.
Generate, fix, explain and run read-only SQL on PostgreSQL, MySQL and SQL Server
Query 40 databases from Claude, ChatGPT, or Cursor — on any device. Read-only, encrypted, audited.
- dataOAuthco.thinair
PostgreSQL, MySQL, and SQL Server in one session. 26 read-only MCP tools for AI agents.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables read-only access to MySQL databases through natural language queries. Provides automatic table schema discovery and executes SELECT, SHOW, DESCRIBE, and EXPLAIN statements within secure read-only transactions.MIT
- AlicenseNot gradedqualityDmaintenanceProvides read-only access to MySQL databases, enabling schema inspection, table listing, and execution of SELECT queries through the Model Context Protocol.362 npmMIT
- FlicenseNot gradedqualityDmaintenanceEnables safe interaction with MySQL databases through SELECT queries, table structure inspection, and database schema exploration. Provides read-only access to query data and examine database metadata.1-
- AlicenseAqualityDmaintenanceEnables read-only MySQL database access, allowing listing databases, tables, describing schemas, and executing SELECT/SHOW/DESCRIBE/EXPLAIN queries.712 npm4MIT