Skip to main content
Glama
wangguoxi0814

datasource-mcp

README.md
# datasource-mcp

MySQL datasource MCP server for AI clients (Cursor, Claude Desktop, etc.).

> **Database Support:** Currently supports **MySQL only**. Support for PostgreSQL, SQLite, and other databases is planned for future releases.

## Install

```bash
pip install datasource-mcp
```

If the package is not yet available on your PyPI mirror, use the official index:

```bash
pip install datasource-mcp -i https://pypi.org/simple/
```

Or run without installing (requires [uv](https://docs.astral.sh/uv/)):

```bash
uvx datasource-mcp
```

> **Note:** `uvx datasource-mcp` downloads the package and immediately starts the MCP stdio server. It will block the terminal while waiting for a client connection. Configure it in your MCP client instead of running it manually.

## Cursor / MCP Client Config

### Option 1: pip install (local environment)

Run `pip install datasource-mcp` first, then add this to `mcp.json`:

```json
{
  "mcpServers": {
    "datasource-mcp": {
      "command": "datasource-mcp",
      "env": {
        "DB_HOST": "127.0.0.1",
        "DB_PORT": "3306",
        "DB_USER": "root",
        "DB_PASSWORD": "your_password",
        "DB_NAME": "your_database"
      }
    }
  }
}
```

### Option 2: uvx without installing (recommended)

No `pip install` required — `uvx` fetches the package from PyPI and runs it automatically. Requires [uv](https://docs.astral.sh/uv/getting-started/installation/) to be installed.

```json
{
  "mcpServers": {
    "datasource-mcp": {
      "command": "uvx",
      "args": ["datasource-mcp"],
      "env": {
        "DB_HOST": "127.0.0.1",
        "DB_PORT": "3306",
        "DB_USER": "root",
        "DB_PASSWORD": "your_password",
        "DB_NAME": "your_database"
      }
    }
  }
}
```

After updating the config, click **Refresh** in the MCP panel to apply changes.

## Environment Variables

| Variable | Default | Description |
|----------|---------|-------------|
| `DB_HOST` | `127.0.0.1` | MySQL host |
| `DB_PORT` | `3306` | MySQL port |
| `DB_USER` | `root` | MySQL user |
| `DB_PASSWORD` | `root` | MySQL password |
| `DB_NAME` | `aix` | Database name |
| `DB_CONNECT_TIMEOUT` | `5` | Connection timeout (seconds) |

## Tools

### `db_exe`

Execute SQL and return a JSON string:

```json
{"success": true, "row_count": 1, "truncated": false, "rows": [...]}
```

Error response:

```json
{"success": false, "error": "error message"}
```

## Local Development

```bash
uv sync
uv run datasource-mcp
# or
uv run python -m datasource_mcp
```

Requires Python >= 3.11.

TDQS

B3.2/5.0

Scored across 1 tool

Disambiguation5/5

With only one tool, there is no ambiguity in tool selection. The tool's description clearly states it executes SQL and returns JSON.

Naming Consistency4/5

A single tool name, db_exe, follows snake_case and is understandable, but it lacks a clear verb_noun pattern. However, consistency is not an issue with only one tool.

Tool Count2/5

The server has only one tool, which is too few for a datasource MCP server. Its apparent scope would typically require multiple tools for connection management, schema inspection, and querying.

Completeness2/5

The tool surface is severely limited; it only executes SQL. There are no tools to list tables, describe schemas, or manage data sources, causing significant gaps for agents.

Maintenance

ActivityStale
ResponsivenessNo issues