Skip to main content
Glama
gistrec

mcp-mysql-client

MySQL MCP

npm CI License: MIT

MySQL MCP は、AI アプリケーションを 1 つの MySQL または MariaDB データベースに接続します。構造を確認したり、自然言語でデータに質問したり、遅いクエリを調査したり、そして自分で許可した場合にはデータを変更したりできます。

サーバーは 1 つのデータベースにバインドされています。データベースは構成で指定され、どのツールも別のデータベースにアクセスできません。デフォルトでは読み取り専用です。

  • 6 つのツール。 接続と権限、テーブル一覧、テーブル構造、読み取りクエリ、クエリプラン、変更クエリ。

  • クエリの種類はサーバーが決定します。 SQL は接続前に解析されます。書き込み権限が有効でも、読み取りツールでの DELETE は拒否されます。

  • 読み取りは書き込みできません。 読み取りクエリは START TRANSACTION READ ONLY 内で実行されます。SQL 解析を回避しようとしても、MySQL 自体が書き込みを拒否します。

  • 応答がコンテキストをあふれさせません。 行はストリームで読み取られ、すべてをダウンロードするのではなく制限で打ち切られます。応答には正直な truncated フラグが含まれます。

  • 権限は外部からのみ。 INSERT、UPDATE、DELETE は環境変数で有効になり、再起動が必要です。ダイアログから取得することはできません。DDL は常に使用できません。

データを読み取るだけのクエリから始めましょう。

データベースの構造を表示して、先週追加されたレコードの数を数えてください。


クイックスタート

Claude Code:

claude mcp add mysql-myapp \
  -e MYSQL_HOST=db.example.com \
  -e MYSQL_USER=myapp_ro \
  -e MYSQL_PASS='пароль' \
  -e MYSQL_DB=myapp \
  -e MYSQL_SSL=true \
  -- npx -y mcp-mysql-client

または .mcp.json / claude_desktop_config.json 内:

{
  "mcpServers": {
    "mysql-myapp": {
      "command": "npx",
      "args": ["-y", "mcp-mysql-client"],
      "env": {
        "MYSQL_HOST": "db.example.com",
        "MYSQL_PORT": "3306",
        "MYSQL_USER": "myapp_ro",
        "MYSQL_PASS": "пароль",
        "MYSQL_DB": "myapp",
        "MYSQL_SSL": "true"
      }
    }
  }
}

1 つのサーバーは 1 つのデータベースに接続します。複数のデータベースが必要な場合は、それぞれの資格情報を追加してください。これにより権限が分離され、テストデータベースに接続されたサーバーは本番データベースを物理的に認識できません。

Related MCP server: mysql-mcp

実行できること

クエリ

サーバーの動作

「このデータベースには何がある?」

list_tables — テーブル、サイズ、行数の見積もり

「orders テーブルの構造は?」

describe_table — 列、インデックス、双方向の外部キー

「7月の注文数と合計金額は?」

query — 集計付き SELECT

「このクエリが遅いのはなぜ?」

explain — プラン、インデックス、行数の見積もり

「誰として接続していて、何ができる?」

server_info — データベース、ユーザー、GRANT、サーバー制限

「キャンセルされた注文にステータスを設定して」

execute — ALLOW_UPDATE_OPERATION=true の場合のみ

変更できること

デフォルトでは何も変更できません。サーバーは読み取り専用モードで起動します。書き込みは操作ごとに有効にします。

"ALLOW_INSERT_OPERATION": "true",
"ALLOW_UPDATE_OPERATION": "true",
"ALLOW_DELETE_OPERATION": "false"

それでも不可能なこと:

  • DDL — CREATE、ALTER、DROP、TRUNCATE、RENAME — いかなる設定でも不可。

  • データベースの変更、SET、CALL、PREPARE、LOAD DATA、ロック、GRANT など、次のクエリの意味を変えたり、未検証のテキストを実行したりするもの。

  • SELECT ... INTO OUTFILE — データベースサーバーへのファイル書き込み。

  • WHERE 句のない UPDATE および DELETE — 呼び出しで allow_full_table=true の明示的な確認が必要。

  • 1 回の呼び出しでの複数ステートメント — 実行されるのは正確に 1 つのみ。

MySQL の権限は、これに加えて別の制限です。ALLOW_UPDATE_OPERATION を許可しても、GRANT UPDATE を持たないユーザーには何も追加されません。実践的な方法は、root ではなく、最小限の権限を持つ専用ユーザーを使用することです。

環境変数

変数

デフォルト

説明

MYSQL_HOST

127.0.0.1

サーバーのホスト

MYSQL_PORT

3306

ポート

MYSQL_SOCKET_PATH

—

host/port の代わりの Unix ソケット

MYSQL_USER

—

ユーザー (必須)

MYSQL_PASS

—

パスワード (MYSQL_PASSWORD の別名)

MYSQL_PASS_FILE

—

変数の代わりにファイルからパスワードを読み取る

MYSQL_DB

—

データベース (必須、MYSQL_DATABASE の別名)

MYSQL_SSL

false

TLS を要求

MYSQL_SSL_CA

—

ルート証明書へのパス。これだけで TLS が有効になります

MYSQL_SSL_REJECT_UNAUTHORIZED

true

サーバー証明書を検証

ALLOW_INSERT_OPERATION

false

INSERT を許可

ALLOW_UPDATE_OPERATION

false

UPDATE を許可

ALLOW_DELETE_OPERATION

false

DELETE を許可

MYSQL_MAX_ROWS

1000

1 回の応答の最大行数

MYSQL_TIMEOUT_MS

30000

クエリのタイムアウト

MYSQL_CONNECT_TIMEOUT_MS

10000

接続タイムアウト

MYSQL_POOL_SIZE

3

プール内の接続数

MYSQL_MAX_RETRIES

2

接続断とデッドロック時の再試行

MYSQL_READ_ONLY_TX

true

読み取りを読み取り専用トランザクションで実行

ASKADS_TELEMETRY

—

0 で匿名の起動統計を無効化

MCP クライアントの構成では、パスワードは平文で保存されます。MYSQL_PASS_FILE を使用すると、適切な権限を持つファイルにパスワードを保持できます。

@benborla29/mcp-server-mysql からの移行

変数名は同じなので、起動コマンドのパッケージを置き換えるだけです。

-  "args": ["-y", "@benborla29/mcp-server-mysql"]
+  "args": ["-y", "mcp-mysql-client"]

動作の変更点:

  • MYSQL_DB は必須です。サーバーは常に 1 つのデータベースにバインドされます。

  • 応答は MYSQL_MAX_ROWS に制限され、truncated とマークされます。

  • 書き込み権限が有効でも DDL は使用できません。

  • WHERE 句のない UPDATE/DELETE は呼び出しでの確認が必要です。

  • ツールセットが異なります: query、execute、explain、list_tables、describe_table、server_info。

診断

まず server_info を確認します。サーバーが何に接続されているか、MySQL ユーザーが持つ権限、有効な制限が表示されます。

症状

原因

errno 1045

MYSQL_USER / MYSQL_PASS が正しくない

errno 1044

ユーザーは存在するが、データベースの権限がない

errno 1142

操作またはテーブルに対する GRANT が不足している — ALLOW_* では解決しない

errno 3159

サーバーが TLS を要求: MYSQL_SSL=true

ECONNREFUSED / ETIMEDOUT

ホスト、ポート、ファイアウォール、または VPN がオフ

ER_NOT_SUPPORTED_AUTH_MODE

caching_sha2_password には TLS が必要

サーバーが接続できない

構成エラーはダイアログに直接表示されます。サーバーは資格情報なしでも起動し、何が不足しているかを説明します。

技術ドキュメント

  • ツール — パラメータと応答

  • 開発 — ビルド、テスト、ライブチェック

  • 公開 — npm と MCP レジストリへのリリース

  • CLAUDE.md — AI エージェント向けリポジトリ構成

ライセンス

MIT

Available Tools

6 tools
describe_tableСтруктура таблицыA
Read-onlyIdempotent

Показывает структуру таблицы: столбцы с типами, обнуляемостью, значениями по умолчанию и комментариями, индексы с их составом, внешние ключи наружу и, главное, ссылки на эту таблицу из других (referenced_by) — именно они определяют, безопасно ли удалять строки. Разделы, кроме столбцов, можно отключить, если нужен только их список.

ParametersJSON Schema
NameRequiredDescriptionDefault
tableYesИмя таблицы в подключённой базе данных.
include_indexesNoВключить индексы (по умолчанию да).
include_foreign_keysNoВключить внешние ключи в обе стороны (по умолчанию да).

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the tool read-only, idempotent, and non-destructive, so the description's main job is to add behavioral detail beyond that. It does this by revealing the inclusion of 'referenced_by' and its significance, and by noting that sections other than columns can be disabled. This adds meaningful context about output content and configurability without contradicting the annotations. A slight miss is not mentioning the return format (e.g., structured object vs. text), but given the tool's simplicity, this is minor.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that leads with the primary action ('Shows the structure of a table'), then enumerates details and ends with a practical use case. Every clause contributes information, and there is no fluff. The sentence is long but flows logically, front-loading the core purpose. A slight improvement could be splitting into two sentences for readability, but it remains efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only introspection tool with no output schema, the description adequately explains the output contents (columns, indexes, foreign keys, referenced_by) and their relevance. It also informs about optional sections, which is necessary for parameter usage. Missing details like the exact structure/format of the result and any limits (e.g., max rows shown) are not critical for this tool's use case. Overall, it provides enough for an agent to call and interpret the result correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all three parameters (table, include_indexes, include_foreign_keys) are already documented with types, defaults, and brief explanations. The description's mention that 'sections besides columns can be disabled' only paraphrases the boolean parameters, adding no new semantic meaning. Since the schema carries the full burden, a baseline of 3 is appropriate; the description adds negligible extra value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Shows the structure of a table' and enumerates the exact elements returned (columns, indexes, foreign keys, referenced_by). It distinctly separates this from sibling tools like query/execute, which handle data manipulation, and server_info/list_tables, which cover server- or catalog-level metadata. The specific mention of 'referenced_by' as the key to deletion safety ties the purpose to a concrete decision, making it unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool, especially the scenario of determining whether it's safe to delete rows ('they determine whether it's safe to delete rows'). It also notes that sections can be toggled for lightweight use. However, it does not explicitly name sibling tools to avoid using, though the contrast with query/execute is implicitly established. The guidance is sufficient but not exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

executeВыполнить изменяющий SQL-запросA
Destructive

Выполняет один изменяющий запрос — INSERT, UPDATE, DELETE или REPLACE — и возвращает число затронутых строк. Сейчас сервер разрешает: только чтение. Права выдаются переменными ALLOW_INSERT_OPERATION, ALLOW_UPDATE_OPERATION и ALLOW_DELETE_OPERATION в конфигурации MCP-клиента и требуют перезапуска сервера — из диалога их получить нельзя. DDL (CREATE, ALTER, DROP, TRUNCATE) не поддерживается ни при каких настройках. Запрос выполняется сразу и без транзакции: откатить его отсюда нельзя. UPDATE и DELETE без WHERE и LIMIT требуют явного allow_full_table=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
sqlYesОдин SQL-запрос. Несколько инструкций через ; не выполняются.
paramsNoЗначения для подстановки вместо ? в порядке появления.
allow_full_tableNoПодтверждение для UPDATE или DELETE без WHERE и LIMIT — такой запрос затрагивает всю таблицу.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the tool as destructive and non-read-only, so the description's job is to add behavioral context. It does abundantly: immediate execution without a transaction, no rollback possible, permission gating via environment variables requiring restart, DDL unsupported regardless of config, and full-table protection requiring explicit confirmation. This exceeds what the annotations convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and information-dense, with the core function front-loaded first, followed by permission constraints, DDL exclusion, transactional behavior, and full-table guardrails. Every sentence earns its place and no content is redundant filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutating SQL tool with no output schema, the description is complete: it covers supported statement types, permission requirements, environmental configuration, unsupported DDL, rollback impossibility, full-table confirmation, and the return value (affected-row count). An agent has what it needs to decide whether and how to invoke it safely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already explains sql, params substitution, and allow_full_table confirmation semantics. The description reinforces these points but does not add new parameter-level meaning; its extra value is mostly about execution behavior rather than parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: it executes one mutating SQL query (INSERT, UPDATE, DELETE, or REPLACE) and returns the affected-row count. This clearly separates it from read-oriented siblings like query and explain, even without naming them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives strong when-to-use and when-not-to-use guidance: mutations require configuration flags and a server restart, DDL is never supported, and full-table UPDATE/DELETE need allow_full_table=true. It does not explicitly point to a sibling read tool for SELECT queries, but the 'server allows only reading' caveat makes the intended usage largely inferable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

explainПоказать план выполнения запросаA
Read-onlyIdempotent

Возвращает план выполнения читающего запроса: какие индексы будут использованы и сколько строк сервер рассчитывает просмотреть. Обычный режим ничего не выполняет; analyze=true запускает запрос по-настоящему и показывает фактическое время — на больших таблицах это дорого. Полезно перед тяжёлой выборкой и при диагностике медленных запросов.

ParametersJSON Schema
NameRequiredDescriptionDefault
sqlYesОдин SQL-запрос. Несколько инструкций через ; не выполняются.
formatNoФормат плана: traditional — таблица, json — подробное дерево, tree — читаемое дерево.
paramsNoЗначения для подстановки вместо ? в порядке появления.
analyzeNoВыполнить запрос и показать фактические строки и время (EXPLAIN ANALYZE).

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and idempotentHint, so the description adds valuable extra context: normal mode does nothing, while analyze=true actually executes and can be expensive on large tables. This goes beyond the annotations without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with no redundancy: purpose, key behavioral caveat, and usage context are all front-loaded. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-parameter tool with no output schema, the description is sufficient: it covers purpose, behavior, cost, and when to use. Minor gaps (e.g., exact return format) are covered by the schema, so nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description adds meaningful semantics for the analyze parameter (explains it runs the query and is costly), enriching understanding beyond the schema's simple boolean description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns an execution plan for read queries, specifying what it shows (indexes and row estimates). It distinguishes from siblings implicitly by focusing on planning rather than execution, but does not explicitly name alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides concrete guidance on when to use: before heavy selections and when diagnosing slow queries. No exclusions or alternative tool mentions, but the context is clear enough for an agent to decide between explain and query/execute.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_tablesСписок таблиц базыA
Read-onlyIdempotent

Перечисляет таблицы и представления подключённой базы: движок, кодировку, комментарий, размер данных и индексов в байтах и оценку числа строк. Оценка берётся из статистики InnoDB и может заметно расходиться с реальностью — точное число даёт COUNT(*) через query. С этого инструмента стоит начинать знакомство с незнакомой базой.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

While annotations already declare the operation read-only, idempotent, and non-destructive, the description adds crucial behavioral context: the row count is an estimate from InnoDB statistics and may differ significantly from reality. This is an important caveat beyond what annotations express and helps set expectations for the returned data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences, front-loading the core functionality and then providing the key caveat about row count estimation. It ends with a clear usage recommendation, all without redundancy or unnecessary detail. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has zero parameters and no output schema, the description fully explains what the tool does, what data it returns, and the reliability of that data. It also provides usage guidance, making it complete for an agent to understand when and how to use it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the schema describes an empty object. The description compensates by detailing exactly what data is returned (engine, encoding, comment, sizes, row count estimate), providing the semantic richness that a parameterized tool would normally get from parameter descriptions. This goes beyond the baseline for no-parameter tools.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action (list tables and views) and identifies the returned attributes (engine, encoding, comment, sizes, row count estimate). It distinctively frames itself as the starting point for exploring an unfamiliar database, which sets it apart from sibling tools like describe_table or query.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly advises using this tool first when encountering an unfamiliar database, and it recommends COUNT(*) via the query tool for exact row counts, thereby guiding the agent on when to use this vs an alternative. This is direct and actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

queryВыполнить читающий SQL-запросA
Read-onlyIdempotent

Выполняет один читающий запрос (SELECT, SHOW, DESCRIBE, WITH ... SELECT) и возвращает строки. Изменяющие запросы отклоняются даже при включённых правах на запись — для них есть execute. Запрос идёт внутри read-only транзакции, число строк ограничено MYSQL_MAX_ROWS: если ответ обрезан, поле truncated равно true и это префикс, а не весь результат. Значения подставляйте через ? и params — драйвер экранирует их сам.

ParametersJSON Schema
NameRequiredDescriptionDefault
sqlYesОдин SQL-запрос. Несколько инструкций через ; не выполняются.
limitNoМаксимум строк в ответе. Потолок задан MYSQL_MAX_ROWS и не повышается этим полем.
paramsNoЗначения для подстановки вместо ? в порядке появления.

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, but the description goes beyond by explaining that modifying queries are rejected even with write permissions, queries run in a read-only transaction, rows are limited by MYSQL_MAX_ROWS, and truncated responses are marked with 'truncated: true' as a prefix not the full result. This adds behavioral details not available in annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise (3 sentences) and front-loaded with the primary purpose. Every sentence adds critical information: allowed query types, rejection of write queries, parameter handling, and truncation behavior. No fluff or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple query-execution tool with full schema coverage, no output schema, and rich annotations, the description covers all essential aspects: what queries are allowed, how to pass parameters, limits, and truncation semantics. An agent has everything needed to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, but the description adds valuable meaning beyond the schema: it explains how to use '?' placeholders with 'params', notes the limit is capped by MYSQL_MAX_ROWS, and clarifies that multiple statements separated by ';' are not executed. This is meaningful semantic guidance beyond the raw property descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool executes a read-only SQL query (SELECT, SHOW, DESCRIBE, WITH) and returns rows. It explicitly distinguishes from modifying queries and mentions the sibling 'execute' for those, so an agent can differentiate easily.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use this tool (only for read-only queries) and when not to (modifying queries should use 'execute'). It also provides important usage guidance about parameter substitution and truncation behavior, which helps the agent choose the right tool and call it correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

server_infoСведения о подключении и правахA
Read-onlyIdempotent

Показывает, к какой базе и под каким пользователем подключён сервер, версию MySQL, размер базы, выданные пользователю права (GRANT) и действующие ограничения самого MCP-сервера: разрешённые операции записи, потолок строк в ответе и таймаут запроса. Стоит вызвать первым, если непонятно, почему запрос отклонён: права MySQL и разрешения сервера — это два независимых ограничения.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior. The description adds meaningful behavioral context beyond that: the concrete diagnostic fields returned and the key mental model that two independent constraint layers affect query success.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two focused sentences: the first enumerates exactly what the tool reveals, and the second gives actionable guidance on when to call it. No filler or redundant restatement of the tool name or title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite no output schema, the description fully enumerates the returned information categories (connection identity, MySQL version, database size, grants, server limits) and the intended diagnostic use case. This is complete enough for an agent to select and invoke the tool correctly in context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and schema description coverage is 100%, so the baseline is 4. The description adds no param-specific detail, which is appropriate because no input parameters exist.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as an introspection/diagnostic operation: it shows the connected database, user, MySQL version, database size, grants, and MCP-server restrictions. This distinguishes it from the sibling data-access tools (list_tables, query, execute) by role and scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit situational guidance: 'worth calling first if it is unclear why a query was rejected' and explains that MySQL permissions and server-side restrictions are independent. It lacks named alternatives or explicit when-not-to-use conditions, so it does not fully reach the top criterion.

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.

  1. 6 tool updatesv1.0.0
    • First observeddescribe_table
    • First observedexecute
    • First observedexplain
    • First observedlist_tables
    • First observedquery
    • First observedserver_info

TDQS

A4.4/5.0

Scored across 6 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: server_info covers connection state, list_tables and describe_table cover schema discovery, query executes read-only SQL, explain returns execution plans, and execute handles mutations. The only mild overlap is between query and explain, but their outputs and use cases are sufficiently different that an agent should not select the wrong one.

Naming Consistency3/5

The tool names are all lowercase and readable, but they do not follow one consistent pattern: list_tables and describe_table use verb_noun, explain and execute are bare verbs, while server_info and query are noun-style names. This is a mixed convention rather than a chaotic one, but it still falls short of a uniform naming scheme.

Tool Count5/5

Six tools is a well-scoped set for a MySQL client server. Each tool covers a distinct part of the interaction surface: server diagnostics, table enumeration, schema inspection, read queries, query planning, and write execution, so none feel redundant or missing.

Completeness5/5

The tool set covers the full expected workflow for a MySQL client: understand the environment, discover tables, inspect schema, run read queries, analyze plans, and perform DML writes. DDL and transactions are explicitly excluded by design, so their absence is not an unexpected gap within the server's declared scope.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables AI agents to safely interact with MySQL/MariaDB databases, supporting read-only queries by default with optional write operations and access control.
    8
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI agents to query and manage MySQL databases through a structured MCP interface, supporting SQL execution, table inspection, and database operations.
    9
    8 npm
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A robust MCP server for interacting with MySQL databases through AI agents, providing tools for schema analysis, query execution, and dynamic connection management with read-only security.
    202 npm
    MIT