@imrieul/mysql-mcp-server 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.es.md +109 -0
- package/README.fr.md +109 -0
- package/README.ja.md +109 -0
- package/README.ko.md +109 -0
- package/README.md +109 -0
- package/README.pt.md +109 -0
- package/README.ru.md +109 -0
- package/README.zh.md +109 -0
- package/dist/index.js +686 -0
- package/dist/index.js.map +1 -0
- package/package.json +66 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 imrieul
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.es.md
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# @imrieul/mysql-mcp-server
|
|
2
|
+
|
|
3
|
+
[English](./README.md) | [한국어](./README.ko.md) | [日本語](./README.ja.md) | [中文](./README.zh.md) | [Português](./README.pt.md) | [Français](./README.fr.md) | [Русский](./README.ru.md)
|
|
4
|
+
|
|
5
|
+
Un servidor [MCP](https://modelcontextprotocol.io/) simple para MySQL.
|
|
6
|
+
|
|
7
|
+
## Características
|
|
8
|
+
|
|
9
|
+
- **Optimizado para LLM** — formato compacto de columnas/filas, LIMIT automático, sugerencias de error con acciones sugeridas
|
|
10
|
+
- **Esquema en bloque** — `describe_all_tables` devuelve todo el esquema de la base de datos en una sola llamada
|
|
11
|
+
- **Modo de solo lectura** — verificación de prefijo a nivel de aplicación + `SET SESSION TRANSACTION READ ONLY` a nivel de base de datos
|
|
12
|
+
- **Tiempo de espera de consultas** — tiempo de espera basado en `Promise.race()` con limpieza de conexión garantizada
|
|
13
|
+
- **Soporte SSL** — una variable de entorno para habilitar conexiones cifradas
|
|
14
|
+
- **Minimalista** — 3 dependencias, sin configuración requerida
|
|
15
|
+
|
|
16
|
+
## Inicio Rápido
|
|
17
|
+
|
|
18
|
+
Añade a tu configuración MCP (`.mcp.json` o `claude_desktop_config.json`):
|
|
19
|
+
|
|
20
|
+
```json
|
|
21
|
+
{
|
|
22
|
+
"mcpServers": {
|
|
23
|
+
"mysql": {
|
|
24
|
+
"command": "npx",
|
|
25
|
+
"args": ["-y", "@imrieul/mysql-mcp-server"],
|
|
26
|
+
"env": {
|
|
27
|
+
"MYSQL_HOST": "localhost",
|
|
28
|
+
"MYSQL_PORT": "3306",
|
|
29
|
+
"MYSQL_USER": "root",
|
|
30
|
+
"MYSQL_PASSWORD": "your-password",
|
|
31
|
+
"MYSQL_DATABASE": "your-database"
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
O con una cadena de conexión:
|
|
39
|
+
|
|
40
|
+
```json
|
|
41
|
+
{
|
|
42
|
+
"mcpServers": {
|
|
43
|
+
"mysql": {
|
|
44
|
+
"command": "npx",
|
|
45
|
+
"args": ["-y", "@imrieul/mysql-mcp-server", "mysql://root:password@localhost:3306/mydb"]
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Modo de solo lectura con SSL
|
|
52
|
+
|
|
53
|
+
```json
|
|
54
|
+
{
|
|
55
|
+
"mcpServers": {
|
|
56
|
+
"mysql": {
|
|
57
|
+
"command": "npx",
|
|
58
|
+
"args": ["-y", "@imrieul/mysql-mcp-server", "--readonly"],
|
|
59
|
+
"env": {
|
|
60
|
+
"MYSQL_HOST": "db.example.com",
|
|
61
|
+
"MYSQL_USER": "readonly_user",
|
|
62
|
+
"MYSQL_PASSWORD": "password",
|
|
63
|
+
"MYSQL_DATABASE": "production",
|
|
64
|
+
"MYSQL_SSL": "true",
|
|
65
|
+
"MYSQL_QUERY_TIMEOUT": "10000"
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Herramientas
|
|
73
|
+
|
|
74
|
+
| Tool | Descripción | Modo de solo lectura |
|
|
75
|
+
|------|-------------|----------------------|
|
|
76
|
+
| `query` | Ejecutar SELECT, SHOW, DESCRIBE, EXPLAIN | Permitido |
|
|
77
|
+
| `execute` | Ejecutar INSERT, UPDATE, DELETE, DDL | Bloqueado |
|
|
78
|
+
| `list_databases` | Listar todas las bases de datos | Permitido |
|
|
79
|
+
| `list_tables` | Listar tablas en una base de datos | Permitido |
|
|
80
|
+
| `describe_table` | Mostrar esquema de tabla | Permitido |
|
|
81
|
+
| `describe_all_tables` | Mostrar todos los esquemas de tabla a la vez | Permitido |
|
|
82
|
+
|
|
83
|
+
## Configuración
|
|
84
|
+
|
|
85
|
+
### Variables de entorno
|
|
86
|
+
|
|
87
|
+
| Variable | Requerida | Por defecto | Descripción |
|
|
88
|
+
|----------|-----------|-------------|-------------|
|
|
89
|
+
| `MYSQL_HOST` | Sí | — | Host de MySQL |
|
|
90
|
+
| `MYSQL_USER` | Sí | — | Usuario de MySQL |
|
|
91
|
+
| `MYSQL_PASSWORD` | Sí | — | Contraseña de MySQL |
|
|
92
|
+
| `MYSQL_PORT` | No | `3306` | Puerto de MySQL |
|
|
93
|
+
| `MYSQL_DATABASE` | No | — | Base de datos por defecto |
|
|
94
|
+
| `MYSQL_READONLY` | No | `false` | Modo de solo lectura |
|
|
95
|
+
| `MYSQL_MAX_ROWS` | No | `100` | LIMIT automático para consultas SELECT |
|
|
96
|
+
| `MYSQL_QUERY_TIMEOUT` | No | `30000` | Tiempo de espera de consulta en ms (0 para deshabilitar) |
|
|
97
|
+
| `MYSQL_SSL` | No | `false` | Habilitar conexión SSL |
|
|
98
|
+
|
|
99
|
+
### Cadena de conexión
|
|
100
|
+
|
|
101
|
+
```
|
|
102
|
+
mysql://user:password@host:port/database
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Se pasa como el primer argumento CLI. Tiene prioridad sobre las variables de entorno.
|
|
106
|
+
|
|
107
|
+
## Licencia
|
|
108
|
+
|
|
109
|
+
MIT
|
package/README.fr.md
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# @imrieul/mysql-mcp-server
|
|
2
|
+
|
|
3
|
+
[English](./README.md) | [한국어](./README.ko.md) | [日本語](./README.ja.md) | [中文](./README.zh.md) | [Español](./README.es.md) | [Português](./README.pt.md) | [Русский](./README.ru.md)
|
|
4
|
+
|
|
5
|
+
Un serveur [MCP](https://modelcontextprotocol.io/) MySQL simple.
|
|
6
|
+
|
|
7
|
+
## Fonctionnalités
|
|
8
|
+
|
|
9
|
+
- **Compatible LLM** — format colonnes/lignes compact, LIMIT automatique, suggestions d'actions suite aux erreurs
|
|
10
|
+
- **Schéma en masse** — `describe_all_tables` retourne le schéma complet de la base en un seul appel
|
|
11
|
+
- **Mode lecture seule** — vérification au niveau applicatif + `SET SESSION TRANSACTION READ ONLY` au niveau base de données
|
|
12
|
+
- **Timeout des requêtes** — timeout basé sur `Promise.race()` avec nettoyage garanti des connexions
|
|
13
|
+
- **Support SSL** — une seule variable d'environnement pour activer les connexions chiffrées
|
|
14
|
+
- **Minimal** — 3 dépendances, aucune configuration requise
|
|
15
|
+
|
|
16
|
+
## Démarrage rapide
|
|
17
|
+
|
|
18
|
+
Ajoutez à votre configuration MCP (`.mcp.json` ou `claude_desktop_config.json`) :
|
|
19
|
+
|
|
20
|
+
```json
|
|
21
|
+
{
|
|
22
|
+
"mcpServers": {
|
|
23
|
+
"mysql": {
|
|
24
|
+
"command": "npx",
|
|
25
|
+
"args": ["-y", "@imrieul/mysql-mcp-server"],
|
|
26
|
+
"env": {
|
|
27
|
+
"MYSQL_HOST": "localhost",
|
|
28
|
+
"MYSQL_PORT": "3306",
|
|
29
|
+
"MYSQL_USER": "root",
|
|
30
|
+
"MYSQL_PASSWORD": "your-password",
|
|
31
|
+
"MYSQL_DATABASE": "your-database"
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Ou avec une chaîne de connexion :
|
|
39
|
+
|
|
40
|
+
```json
|
|
41
|
+
{
|
|
42
|
+
"mcpServers": {
|
|
43
|
+
"mysql": {
|
|
44
|
+
"command": "npx",
|
|
45
|
+
"args": ["-y", "@imrieul/mysql-mcp-server", "mysql://root:password@localhost:3306/mydb"]
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Mode lecture seule avec SSL
|
|
52
|
+
|
|
53
|
+
```json
|
|
54
|
+
{
|
|
55
|
+
"mcpServers": {
|
|
56
|
+
"mysql": {
|
|
57
|
+
"command": "npx",
|
|
58
|
+
"args": ["-y", "@imrieul/mysql-mcp-server", "--readonly"],
|
|
59
|
+
"env": {
|
|
60
|
+
"MYSQL_HOST": "db.example.com",
|
|
61
|
+
"MYSQL_USER": "readonly_user",
|
|
62
|
+
"MYSQL_PASSWORD": "password",
|
|
63
|
+
"MYSQL_DATABASE": "production",
|
|
64
|
+
"MYSQL_SSL": "true",
|
|
65
|
+
"MYSQL_QUERY_TIMEOUT": "10000"
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Outils
|
|
73
|
+
|
|
74
|
+
| Outil | Description | Mode lecture seule |
|
|
75
|
+
|------|-------------|----------------|
|
|
76
|
+
| `query` | Exécuter SELECT, SHOW, DESCRIBE, EXPLAIN | Autorisé |
|
|
77
|
+
| `execute` | Exécuter INSERT, UPDATE, DELETE, DDL | Bloqué |
|
|
78
|
+
| `list_databases` | Lister toutes les bases de données | Autorisé |
|
|
79
|
+
| `list_tables` | Lister les tables d'une base de données | Autorisé |
|
|
80
|
+
| `describe_table` | Afficher le schéma d'une table | Autorisé |
|
|
81
|
+
| `describe_all_tables` | Afficher tous les schémas de tables en une fois | Autorisé |
|
|
82
|
+
|
|
83
|
+
## Configuration
|
|
84
|
+
|
|
85
|
+
### Variables d'environnement
|
|
86
|
+
|
|
87
|
+
| Variable | Requis | Défaut | Description |
|
|
88
|
+
|----------|----------|---------|-------------|
|
|
89
|
+
| `MYSQL_HOST` | Oui | — | Hôte MySQL |
|
|
90
|
+
| `MYSQL_USER` | Oui | — | Utilisateur MySQL |
|
|
91
|
+
| `MYSQL_PASSWORD` | Oui | — | Mot de passe MySQL |
|
|
92
|
+
| `MYSQL_PORT` | Non | `3306` | Port MySQL |
|
|
93
|
+
| `MYSQL_DATABASE` | Non | — | Base de données par défaut |
|
|
94
|
+
| `MYSQL_READONLY` | Non | `false` | Mode lecture seule |
|
|
95
|
+
| `MYSQL_MAX_ROWS` | Non | `100` | LIMIT automatique pour les requêtes SELECT |
|
|
96
|
+
| `MYSQL_QUERY_TIMEOUT` | Non | `30000` | Timeout des requêtes en ms (0 pour désactiver) |
|
|
97
|
+
| `MYSQL_SSL` | Non | `false` | Activer la connexion SSL |
|
|
98
|
+
|
|
99
|
+
### Chaîne de connexion
|
|
100
|
+
|
|
101
|
+
```
|
|
102
|
+
mysql://user:password@host:port/database
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Passée comme premier argument CLI. Prioritaire sur les variables d'environnement.
|
|
106
|
+
|
|
107
|
+
## Licence
|
|
108
|
+
|
|
109
|
+
MIT
|
package/README.ja.md
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# @imrieul/mysql-mcp-server
|
|
2
|
+
|
|
3
|
+
[English](./README.md) | [한국어](./README.ko.md) | [中文](./README.zh.md) | [Español](./README.es.md) | [Português](./README.pt.md) | [Français](./README.fr.md) | [Русский](./README.ru.md)
|
|
4
|
+
|
|
5
|
+
シンプルなMySQL [MCP](https://modelcontextprotocol.io/)サーバーです。
|
|
6
|
+
|
|
7
|
+
## 特徴
|
|
8
|
+
|
|
9
|
+
- **LLM最適化** — コンパクトなカラム/行形式、自動LIMIT、次のアクション提案を含むエラーヒント
|
|
10
|
+
- **一括スキーマ取得** — `describe_all_tables`で全データベーススキーマを一度に取得
|
|
11
|
+
- **読み取り専用モード** — アプリケーションレベルのプレフィックスチェック + データベースレベルの`SET SESSION TRANSACTION READ ONLY`
|
|
12
|
+
- **クエリタイムアウト** — `Promise.race()`ベースのタイムアウトと確実なコネクションクリーンアップ
|
|
13
|
+
- **SSL対応** — 環境変数1つで暗号化接続を有効化
|
|
14
|
+
- **ミニマル** — 依存関係3つ、設定不要
|
|
15
|
+
|
|
16
|
+
## クイックスタート
|
|
17
|
+
|
|
18
|
+
MCPの設定ファイル(`.mcp.json`または`claude_desktop_config.json`)に追加してください。
|
|
19
|
+
|
|
20
|
+
```json
|
|
21
|
+
{
|
|
22
|
+
"mcpServers": {
|
|
23
|
+
"mysql": {
|
|
24
|
+
"command": "npx",
|
|
25
|
+
"args": ["-y", "@imrieul/mysql-mcp-server"],
|
|
26
|
+
"env": {
|
|
27
|
+
"MYSQL_HOST": "localhost",
|
|
28
|
+
"MYSQL_PORT": "3306",
|
|
29
|
+
"MYSQL_USER": "root",
|
|
30
|
+
"MYSQL_PASSWORD": "your-password",
|
|
31
|
+
"MYSQL_DATABASE": "your-database"
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
接続文字列を使用する場合:
|
|
39
|
+
|
|
40
|
+
```json
|
|
41
|
+
{
|
|
42
|
+
"mcpServers": {
|
|
43
|
+
"mysql": {
|
|
44
|
+
"command": "npx",
|
|
45
|
+
"args": ["-y", "@imrieul/mysql-mcp-server", "mysql://root:password@localhost:3306/mydb"]
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### SSLを使用した読み取り専用モード
|
|
52
|
+
|
|
53
|
+
```json
|
|
54
|
+
{
|
|
55
|
+
"mcpServers": {
|
|
56
|
+
"mysql": {
|
|
57
|
+
"command": "npx",
|
|
58
|
+
"args": ["-y", "@imrieul/mysql-mcp-server", "--readonly"],
|
|
59
|
+
"env": {
|
|
60
|
+
"MYSQL_HOST": "db.example.com",
|
|
61
|
+
"MYSQL_USER": "readonly_user",
|
|
62
|
+
"MYSQL_PASSWORD": "password",
|
|
63
|
+
"MYSQL_DATABASE": "production",
|
|
64
|
+
"MYSQL_SSL": "true",
|
|
65
|
+
"MYSQL_QUERY_TIMEOUT": "10000"
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## ツール
|
|
73
|
+
|
|
74
|
+
| Tool | Description | Read-only mode |
|
|
75
|
+
|------|-------------|----------------|
|
|
76
|
+
| `query` | SELECT, SHOW, DESCRIBE, EXPLAINの実行 | 許可 |
|
|
77
|
+
| `execute` | INSERT, UPDATE, DELETE, DDLの実行 | ブロック |
|
|
78
|
+
| `list_databases` | 全データベースの一覧表示 | 許可 |
|
|
79
|
+
| `list_tables` | データベース内のテーブル一覧表示 | 許可 |
|
|
80
|
+
| `describe_table` | テーブルスキーマの表示 | 許可 |
|
|
81
|
+
| `describe_all_tables` | 全テーブルスキーマの一括表示 | 許可 |
|
|
82
|
+
|
|
83
|
+
## 設定
|
|
84
|
+
|
|
85
|
+
### 環境変数
|
|
86
|
+
|
|
87
|
+
| Variable | Required | Default | Description |
|
|
88
|
+
|----------|----------|---------|-------------|
|
|
89
|
+
| `MYSQL_HOST` | はい | — | MySQLホスト |
|
|
90
|
+
| `MYSQL_USER` | はい | — | MySQLユーザー |
|
|
91
|
+
| `MYSQL_PASSWORD` | はい | — | MySQLパスワード |
|
|
92
|
+
| `MYSQL_PORT` | いいえ | `3306` | MySQLポート |
|
|
93
|
+
| `MYSQL_DATABASE` | いいえ | — | デフォルトデータベース |
|
|
94
|
+
| `MYSQL_READONLY` | いいえ | `false` | 読み取り専用モード |
|
|
95
|
+
| `MYSQL_MAX_ROWS` | いいえ | `100` | SELECTクエリの自動LIMIT |
|
|
96
|
+
| `MYSQL_QUERY_TIMEOUT` | いいえ | `30000` | クエリタイムアウト(ミリ秒、0で無効化) |
|
|
97
|
+
| `MYSQL_SSL` | いいえ | `false` | SSL接続を有効化 |
|
|
98
|
+
|
|
99
|
+
### 接続文字列
|
|
100
|
+
|
|
101
|
+
```
|
|
102
|
+
mysql://user:password@host:port/database
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
最初のCLI引数として渡されます。環境変数より優先されます。
|
|
106
|
+
|
|
107
|
+
## ライセンス
|
|
108
|
+
|
|
109
|
+
MIT
|
package/README.ko.md
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# @imrieul/mysql-mcp-server
|
|
2
|
+
|
|
3
|
+
[English](./README.md) | [日本語](./README.ja.md) | [中文](./README.zh.md) | [Español](./README.es.md) | [Português](./README.pt.md) | [Français](./README.fr.md) | [Русский](./README.ru.md)
|
|
4
|
+
|
|
5
|
+
간단한 MySQL [MCP](https://modelcontextprotocol.io/) 서버입니다.
|
|
6
|
+
|
|
7
|
+
## 특징
|
|
8
|
+
|
|
9
|
+
- **LLM 친화적** — 압축된 컬럼/행 형식, 자동 LIMIT, 다음 작업 제안이 포함된 오류 힌트
|
|
10
|
+
- **일괄 스키마 조회** — `describe_all_tables`로 전체 DB 스키마를 한 번에 조회
|
|
11
|
+
- **읽기 전용 모드** — 애플리케이션 레벨 접두사 검사 + DB 레벨 `SET SESSION TRANSACTION READ ONLY`
|
|
12
|
+
- **쿼리 타임아웃** — `Promise.race()` 기반 타임아웃 및 연결 정리 보장
|
|
13
|
+
- **SSL 지원** — 환경 변수 하나로 암호화된 연결 활성화
|
|
14
|
+
- **미니멀** — 3개의 의존성, 설정 불필요
|
|
15
|
+
|
|
16
|
+
## 빠른 시작
|
|
17
|
+
|
|
18
|
+
MCP 설정 파일(`.mcp.json` 또는 `claude_desktop_config.json`)에 추가하세요:
|
|
19
|
+
|
|
20
|
+
```json
|
|
21
|
+
{
|
|
22
|
+
"mcpServers": {
|
|
23
|
+
"mysql": {
|
|
24
|
+
"command": "npx",
|
|
25
|
+
"args": ["-y", "@imrieul/mysql-mcp-server"],
|
|
26
|
+
"env": {
|
|
27
|
+
"MYSQL_HOST": "localhost",
|
|
28
|
+
"MYSQL_PORT": "3306",
|
|
29
|
+
"MYSQL_USER": "root",
|
|
30
|
+
"MYSQL_PASSWORD": "your-password",
|
|
31
|
+
"MYSQL_DATABASE": "your-database"
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
또는 연결 문자열 사용:
|
|
39
|
+
|
|
40
|
+
```json
|
|
41
|
+
{
|
|
42
|
+
"mcpServers": {
|
|
43
|
+
"mysql": {
|
|
44
|
+
"command": "npx",
|
|
45
|
+
"args": ["-y", "@imrieul/mysql-mcp-server", "mysql://root:password@localhost:3306/mydb"]
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### SSL을 사용하는 읽기 전용 모드
|
|
52
|
+
|
|
53
|
+
```json
|
|
54
|
+
{
|
|
55
|
+
"mcpServers": {
|
|
56
|
+
"mysql": {
|
|
57
|
+
"command": "npx",
|
|
58
|
+
"args": ["-y", "@imrieul/mysql-mcp-server", "--readonly"],
|
|
59
|
+
"env": {
|
|
60
|
+
"MYSQL_HOST": "db.example.com",
|
|
61
|
+
"MYSQL_USER": "readonly_user",
|
|
62
|
+
"MYSQL_PASSWORD": "password",
|
|
63
|
+
"MYSQL_DATABASE": "production",
|
|
64
|
+
"MYSQL_SSL": "true",
|
|
65
|
+
"MYSQL_QUERY_TIMEOUT": "10000"
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## 도구
|
|
73
|
+
|
|
74
|
+
| Tool | 설명 | 읽기 전용 모드 |
|
|
75
|
+
|------|------|---------------|
|
|
76
|
+
| `query` | SELECT, SHOW, DESCRIBE, EXPLAIN 실행 | 허용 |
|
|
77
|
+
| `execute` | INSERT, UPDATE, DELETE, DDL 실행 | 차단 |
|
|
78
|
+
| `list_databases` | 모든 데이터베이스 목록 조회 | 허용 |
|
|
79
|
+
| `list_tables` | 데이터베이스의 테이블 목록 조회 | 허용 |
|
|
80
|
+
| `describe_table` | 테이블 스키마 조회 | 허용 |
|
|
81
|
+
| `describe_all_tables` | 모든 테이블 스키마를 한 번에 조회 | 허용 |
|
|
82
|
+
|
|
83
|
+
## 설정
|
|
84
|
+
|
|
85
|
+
### 환경 변수
|
|
86
|
+
|
|
87
|
+
| 변수 | 필수 | 기본값 | 설명 |
|
|
88
|
+
|------|------|--------|------|
|
|
89
|
+
| `MYSQL_HOST` | Yes | — | MySQL 호스트 |
|
|
90
|
+
| `MYSQL_USER` | Yes | — | MySQL 사용자 |
|
|
91
|
+
| `MYSQL_PASSWORD` | Yes | — | MySQL 비밀번호 |
|
|
92
|
+
| `MYSQL_PORT` | No | `3306` | MySQL 포트 |
|
|
93
|
+
| `MYSQL_DATABASE` | No | — | 기본 데이터베이스 |
|
|
94
|
+
| `MYSQL_READONLY` | No | `false` | 읽기 전용 모드 |
|
|
95
|
+
| `MYSQL_MAX_ROWS` | No | `100` | SELECT 쿼리의 자동 LIMIT |
|
|
96
|
+
| `MYSQL_QUERY_TIMEOUT` | No | `30000` | 쿼리 타임아웃 (밀리초, 0으로 비활성화) |
|
|
97
|
+
| `MYSQL_SSL` | No | `false` | SSL 연결 활성화 |
|
|
98
|
+
|
|
99
|
+
### 연결 문자열
|
|
100
|
+
|
|
101
|
+
```
|
|
102
|
+
mysql://user:password@host:port/database
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
첫 번째 CLI 인수로 전달됩니다. 환경 변수보다 우선합니다.
|
|
106
|
+
|
|
107
|
+
## 라이선스
|
|
108
|
+
|
|
109
|
+
MIT
|
package/README.md
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# @imrieul/mysql-mcp-server
|
|
2
|
+
|
|
3
|
+
[한국어](./README.ko.md) | [日本語](./README.ja.md) | [中文](./README.zh.md) | [Español](./README.es.md) | [Português](./README.pt.md) | [Français](./README.fr.md) | [Русский](./README.ru.md)
|
|
4
|
+
|
|
5
|
+
A simple MySQL [MCP](https://modelcontextprotocol.io/) server.
|
|
6
|
+
|
|
7
|
+
## Features
|
|
8
|
+
|
|
9
|
+
- **LLM-friendly** — compact column/row format, auto LIMIT, error hints with next-action suggestions
|
|
10
|
+
- **Bulk schema** — `describe_all_tables` returns entire DB schema in one call
|
|
11
|
+
- **Read-only mode** — app-level prefix check + DB-level `SET SESSION TRANSACTION READ ONLY`
|
|
12
|
+
- **Query timeout** — `Promise.race()` based timeout with guaranteed connection cleanup
|
|
13
|
+
- **SSL support** — one env var to enable encrypted connections
|
|
14
|
+
- **Minimal** — 3 dependencies, zero config required
|
|
15
|
+
|
|
16
|
+
## Quick Start
|
|
17
|
+
|
|
18
|
+
Add to your MCP config (`.mcp.json` or `claude_desktop_config.json`):
|
|
19
|
+
|
|
20
|
+
```json
|
|
21
|
+
{
|
|
22
|
+
"mcpServers": {
|
|
23
|
+
"mysql": {
|
|
24
|
+
"command": "npx",
|
|
25
|
+
"args": ["-y", "@imrieul/mysql-mcp-server"],
|
|
26
|
+
"env": {
|
|
27
|
+
"MYSQL_HOST": "localhost",
|
|
28
|
+
"MYSQL_PORT": "3306",
|
|
29
|
+
"MYSQL_USER": "root",
|
|
30
|
+
"MYSQL_PASSWORD": "your-password",
|
|
31
|
+
"MYSQL_DATABASE": "your-database"
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Or with a connection string:
|
|
39
|
+
|
|
40
|
+
```json
|
|
41
|
+
{
|
|
42
|
+
"mcpServers": {
|
|
43
|
+
"mysql": {
|
|
44
|
+
"command": "npx",
|
|
45
|
+
"args": ["-y", "@imrieul/mysql-mcp-server", "mysql://root:password@localhost:3306/mydb"]
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Read-only mode with SSL
|
|
52
|
+
|
|
53
|
+
```json
|
|
54
|
+
{
|
|
55
|
+
"mcpServers": {
|
|
56
|
+
"mysql": {
|
|
57
|
+
"command": "npx",
|
|
58
|
+
"args": ["-y", "@imrieul/mysql-mcp-server", "--readonly"],
|
|
59
|
+
"env": {
|
|
60
|
+
"MYSQL_HOST": "db.example.com",
|
|
61
|
+
"MYSQL_USER": "readonly_user",
|
|
62
|
+
"MYSQL_PASSWORD": "password",
|
|
63
|
+
"MYSQL_DATABASE": "production",
|
|
64
|
+
"MYSQL_SSL": "true",
|
|
65
|
+
"MYSQL_QUERY_TIMEOUT": "10000"
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Tools
|
|
73
|
+
|
|
74
|
+
| Tool | Description | Read-only mode |
|
|
75
|
+
|------|-------------|----------------|
|
|
76
|
+
| `query` | Execute SELECT, SHOW, DESCRIBE, EXPLAIN | Allowed |
|
|
77
|
+
| `execute` | Execute INSERT, UPDATE, DELETE, DDL | Blocked |
|
|
78
|
+
| `list_databases` | List all databases | Allowed |
|
|
79
|
+
| `list_tables` | List tables in a database | Allowed |
|
|
80
|
+
| `describe_table` | Show table schema | Allowed |
|
|
81
|
+
| `describe_all_tables` | Show all table schemas at once | Allowed |
|
|
82
|
+
|
|
83
|
+
## Configuration
|
|
84
|
+
|
|
85
|
+
### Environment variables
|
|
86
|
+
|
|
87
|
+
| Variable | Required | Default | Description |
|
|
88
|
+
|----------|----------|---------|-------------|
|
|
89
|
+
| `MYSQL_HOST` | Yes | — | MySQL host |
|
|
90
|
+
| `MYSQL_USER` | Yes | — | MySQL user |
|
|
91
|
+
| `MYSQL_PASSWORD` | Yes | — | MySQL password |
|
|
92
|
+
| `MYSQL_PORT` | No | `3306` | MySQL port |
|
|
93
|
+
| `MYSQL_DATABASE` | No | — | Default database |
|
|
94
|
+
| `MYSQL_READONLY` | No | `false` | Read-only mode |
|
|
95
|
+
| `MYSQL_MAX_ROWS` | No | `100` | Auto LIMIT for SELECT queries |
|
|
96
|
+
| `MYSQL_QUERY_TIMEOUT` | No | `30000` | Query timeout in ms (0 to disable) |
|
|
97
|
+
| `MYSQL_SSL` | No | `false` | Enable SSL connection |
|
|
98
|
+
|
|
99
|
+
### Connection string
|
|
100
|
+
|
|
101
|
+
```
|
|
102
|
+
mysql://user:password@host:port/database
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Passed as the first CLI argument. Takes priority over environment variables.
|
|
106
|
+
|
|
107
|
+
## License
|
|
108
|
+
|
|
109
|
+
MIT
|
package/README.pt.md
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# @imrieul/mysql-mcp-server
|
|
2
|
+
|
|
3
|
+
[English](./README.md) | [한국어](./README.ko.md) | [日本語](./README.ja.md) | [中文](./README.zh.md) | [Español](./README.es.md) | [Français](./README.fr.md) | [Русский](./README.ru.md)
|
|
4
|
+
|
|
5
|
+
Um servidor [MCP](https://modelcontextprotocol.io/) simples para MySQL.
|
|
6
|
+
|
|
7
|
+
## Recursos
|
|
8
|
+
|
|
9
|
+
- **Otimizado para LLM** — formato compacto de colunas/linhas, LIMIT automático, dicas de erro com sugestões de próximas ações
|
|
10
|
+
- **Schema em lote** — `describe_all_tables` retorna o schema completo do banco em uma única chamada
|
|
11
|
+
- **Modo somente leitura** — verificação de prefixo no nível da aplicação + `SET SESSION TRANSACTION READ ONLY` no nível do banco
|
|
12
|
+
- **Timeout de consulta** — timeout baseado em `Promise.race()` com limpeza garantida da conexão
|
|
13
|
+
- **Suporte a SSL** — uma variável de ambiente para habilitar conexões criptografadas
|
|
14
|
+
- **Minimalista** — 3 dependências, zero configuração necessária
|
|
15
|
+
|
|
16
|
+
## Início Rápido
|
|
17
|
+
|
|
18
|
+
Adicione à sua configuração MCP (`.mcp.json` ou `claude_desktop_config.json`):
|
|
19
|
+
|
|
20
|
+
```json
|
|
21
|
+
{
|
|
22
|
+
"mcpServers": {
|
|
23
|
+
"mysql": {
|
|
24
|
+
"command": "npx",
|
|
25
|
+
"args": ["-y", "@imrieul/mysql-mcp-server"],
|
|
26
|
+
"env": {
|
|
27
|
+
"MYSQL_HOST": "localhost",
|
|
28
|
+
"MYSQL_PORT": "3306",
|
|
29
|
+
"MYSQL_USER": "root",
|
|
30
|
+
"MYSQL_PASSWORD": "your-password",
|
|
31
|
+
"MYSQL_DATABASE": "your-database"
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Ou com uma string de conexão:
|
|
39
|
+
|
|
40
|
+
```json
|
|
41
|
+
{
|
|
42
|
+
"mcpServers": {
|
|
43
|
+
"mysql": {
|
|
44
|
+
"command": "npx",
|
|
45
|
+
"args": ["-y", "@imrieul/mysql-mcp-server", "mysql://root:password@localhost:3306/mydb"]
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Modo somente leitura com SSL
|
|
52
|
+
|
|
53
|
+
```json
|
|
54
|
+
{
|
|
55
|
+
"mcpServers": {
|
|
56
|
+
"mysql": {
|
|
57
|
+
"command": "npx",
|
|
58
|
+
"args": ["-y", "@imrieul/mysql-mcp-server", "--readonly"],
|
|
59
|
+
"env": {
|
|
60
|
+
"MYSQL_HOST": "db.example.com",
|
|
61
|
+
"MYSQL_USER": "readonly_user",
|
|
62
|
+
"MYSQL_PASSWORD": "password",
|
|
63
|
+
"MYSQL_DATABASE": "production",
|
|
64
|
+
"MYSQL_SSL": "true",
|
|
65
|
+
"MYSQL_QUERY_TIMEOUT": "10000"
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Ferramentas
|
|
73
|
+
|
|
74
|
+
| Ferramenta | Descrição | Modo somente leitura |
|
|
75
|
+
|------|-------------|----------------|
|
|
76
|
+
| `query` | Executar SELECT, SHOW, DESCRIBE, EXPLAIN | Permitido |
|
|
77
|
+
| `execute` | Executar INSERT, UPDATE, DELETE, DDL | Bloqueado |
|
|
78
|
+
| `list_databases` | Listar todos os bancos de dados | Permitido |
|
|
79
|
+
| `list_tables` | Listar tabelas em um banco de dados | Permitido |
|
|
80
|
+
| `describe_table` | Exibir schema da tabela | Permitido |
|
|
81
|
+
| `describe_all_tables` | Exibir schemas de todas as tabelas de uma vez | Permitido |
|
|
82
|
+
|
|
83
|
+
## Configuração
|
|
84
|
+
|
|
85
|
+
### Variáveis de ambiente
|
|
86
|
+
|
|
87
|
+
| Variável | Obrigatória | Padrão | Descrição |
|
|
88
|
+
|----------|----------|---------|-------------|
|
|
89
|
+
| `MYSQL_HOST` | Sim | — | Host do MySQL |
|
|
90
|
+
| `MYSQL_USER` | Sim | — | Usuário do MySQL |
|
|
91
|
+
| `MYSQL_PASSWORD` | Sim | — | Senha do MySQL |
|
|
92
|
+
| `MYSQL_PORT` | Não | `3306` | Porta do MySQL |
|
|
93
|
+
| `MYSQL_DATABASE` | Não | — | Banco de dados padrão |
|
|
94
|
+
| `MYSQL_READONLY` | Não | `false` | Modo somente leitura |
|
|
95
|
+
| `MYSQL_MAX_ROWS` | Não | `100` | LIMIT automático para consultas SELECT |
|
|
96
|
+
| `MYSQL_QUERY_TIMEOUT` | Não | `30000` | Timeout de consulta em ms (0 para desabilitar) |
|
|
97
|
+
| `MYSQL_SSL` | Não | `false` | Habilitar conexão SSL |
|
|
98
|
+
|
|
99
|
+
### String de conexão
|
|
100
|
+
|
|
101
|
+
```
|
|
102
|
+
mysql://user:password@host:port/database
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Passada como primeiro argumento CLI. Tem prioridade sobre as variáveis de ambiente.
|
|
106
|
+
|
|
107
|
+
## Licença
|
|
108
|
+
|
|
109
|
+
MIT
|