Local MySQL Read-only MCP Server
by YaangHailong
README.md
# Local MySQL Read-only MCP Server
This project provides a small stdio MCP server for reading local MySQL data.
It is designed to run with:
```powershell
D:\anaconda\envs\torch\python.exe
```
The server implements a minimal MCP JSON-RPC stdio layer directly because the
official Python MCP SDK requires a newer Python than the current `torch`
environment.
## Install Dependency
Recommended:
```powershell
conda install -n torch -c conda-forge pymysql
```
Fallback:
```powershell
D:\anaconda\envs\torch\python.exe -m pip install PyMySQL -i https://pypi.tuna.tsinghua.edu.cn/simple
```
If both commands fail because of local SSL or proxy settings, install `PyMySQL`
manually into the `torch` conda environment and then run the tests below.
## Configure MySQL
Copy the example file and fill in local credentials:
```powershell
Copy-Item mysql_mcp_config.example.json mysql_mcp_config.json
```
`mysql_mcp_config.json` is ignored by git. You can also point to another config
file with:
```powershell
$env:MYSQL_MCP_CONFIG = "D:\path\to\mysql_mcp_config.json"
```
Use a MySQL user with read-only permissions whenever possible. The MCP server
only exposes read tools, but database permissions should still enforce the same
rule.
## MCP Client Configuration
Example stdio configuration:
```json
{
"mcpServers": {
"local-mysql-readonly": {
"command": "D:\\anaconda\\envs\\torch\\python.exe",
"args": ["D:\\桌面\\aienglish\\server.py"],
"env": {
"MYSQL_MCP_CONFIG": "D:\\桌面\\aienglish\\mysql_mcp_config.json"
}
}
}
}
```
## Tools
- `list_databases`: list visible databases, excluding system schemas by default.
- `list_tables`: list tables and views in one database.
- `describe_table`: return column and index metadata.
- `read_rows`: read rows using structured filters, ordering, limit, and offset.
`read_rows` does not accept raw SQL. Database, table, and column names are
validated against MySQL metadata, and values are sent as query parameters.
Allowed filter operators:
```text
=, !=, <, <=, >, >=, LIKE, IN, IS NULL, IS NOT NULL
```
## Test
```powershell
D:\anaconda\envs\torch\python.exe -m unittest
```
After `mysql_mcp_config.json` is configured and `PyMySQL` is installed, validate
manually with your MCP client by calling:
1. `list_databases`
2. `list_tables`
3. `describe_table`
4. `read_rows` with `limit` set to `5`
This server cannot be deployed
Maintenance
ActivityStale
ResponsivenessNo issues