# schemacrawler-ai

This MCP server lets an AI agent inspect database schemas, including tables, keys, and procedures, and answer SQL questions in plain language.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 12
- Author: schemacrawler
- License: not stated · policy=link-only · description only; the file stays with the author
- Source: https://github.com/schemacrawler/SchemaCrawler-AI
- Updated: 2026-10-22
- HTML: https://affpapa.org/en/nevibecode/mcp/schemacrawler-ai

## What it does

schemacrawler-ai connects a database to an AI agent through MCP. The agent can inspect tables, relationships, and keys, look up stored procedures, and discuss SQL using natural-language requests.

The server runs from the Docker image `schemacrawler/schemacrawler-ai:17.16.0-1`. Its setup passes the MCP transport, database user and password, JDBC URL, and `SCHCRWLR_SERVER` value into the container. The server cannot connect without database credentials and `SCHCRWLR_JDBC_URL`.

Setup commands are provided for Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, and other listed platforms. In Claude Code, the MCP entry uses `claude mcp add` and starts Docker over `stdio`.

## Requirements
- Needs: Docker
- Environment variables: `SCHCRWLR_MCP_SERVER_TRANSPORT`, `SCHCRWLR_DATABASE_USER`, `SCHCRWLR_DATABASE_PASSWORD`, `SCHCRWLR_JDBC_URL`, `SCHCRWLR_SERVER`, `SCHCRWLR_HOST`, `SCHCRWLR_PORT`, `SCHCRWLR_DATABASE`, `SCHCRWLR_DATABASE_ALIAS`, `SCHCRWLR_DATABASE_DESCRIPTION` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add --env SCHCRWLR_MCP_SERVER_TRANSPORT=<SCHCRWLR_MCP_SERVER_TRANSPORT> --env SCHCRWLR_DATABASE_USER=<SCHCRWLR_DATABASE_USER> --env SCHCRWLR_DATABASE_PASSWORD=<SCHCRWLR_DATABASE_PASSWORD> --env SCHCRWLR_JDBC_URL=<SCHCRWLR_JDBC_URL> --env SCHCRWLR_SERVER=<SCHCRWLR_SERVER> --transport stdio schemacrawler-ai -- docker run -i --rm -e SCHCRWLR_MCP_SERVER_TRANSPORT -e SCHCRWLR_DATABASE_USER -e SCHCRWLR_DATABASE_PASSWORD -e SCHCRWLR_JDBC_URL -e SCHCRWLR_SERVER schemacrawler/schemacrawler-ai:17.16.0-1
```
Replace <…> with your own values. 8 more environment variables are in the server README

### Codex

**Platform CLI**
```bash
codex mcp add schemacrawler-ai --env SCHCRWLR_MCP_SERVER_TRANSPORT=<SCHCRWLR_MCP_SERVER_TRANSPORT> --env SCHCRWLR_DATABASE_USER=<SCHCRWLR_DATABASE_USER> --env SCHCRWLR_DATABASE_PASSWORD=<SCHCRWLR_DATABASE_PASSWORD> --env SCHCRWLR_JDBC_URL=<SCHCRWLR_JDBC_URL> --env SCHCRWLR_SERVER=<SCHCRWLR_SERVER> -- docker run -i --rm -e SCHCRWLR_MCP_SERVER_TRANSPORT -e SCHCRWLR_DATABASE_USER -e SCHCRWLR_DATABASE_PASSWORD -e SCHCRWLR_JDBC_URL -e SCHCRWLR_SERVER schemacrawler/schemacrawler-ai:17.16.0-1
```
Replace <…> with your own values. 8 more environment variables are in the server README

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "schemacrawler-ai": {
            "command": "docker",
            "args": [
                "run",
                "-i",
                "--rm",
                "-e",
                "SCHCRWLR_MCP_SERVER_TRANSPORT",
                "-e",
                "SCHCRWLR_DATABASE_USER",
                "-e",
                "SCHCRWLR_DATABASE_PASSWORD",
                "-e",
                "SCHCRWLR_JDBC_URL",
                "-e",
                "SCHCRWLR_SERVER",
                "schemacrawler/schemacrawler-ai:17.16.0-1"
            ],
            "env": {
                "SCHCRWLR_MCP_SERVER_TRANSPORT": "<SCHCRWLR_MCP_SERVER_TRANSPORT>",
                "SCHCRWLR_DATABASE_USER": "<SCHCRWLR_DATABASE_USER>",
                "SCHCRWLR_DATABASE_PASSWORD": "<SCHCRWLR_DATABASE_PASSWORD>",
                "SCHCRWLR_JDBC_URL": "<SCHCRWLR_JDBC_URL>",
                "SCHCRWLR_SERVER": "<SCHCRWLR_SERVER>"
            }
        }
    }
}
```
Replace <…> with your own values. 8 more environment variables are in the server README

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "schemacrawler-ai": {
            "type": "stdio",
            "command": "docker",
            "args": [
                "run",
                "-i",
                "--rm",
                "-e",
                "SCHCRWLR_MCP_SERVER_TRANSPORT",
                "-e",
                "SCHCRWLR_DATABASE_USER",
                "-e",
                "SCHCRWLR_DATABASE_PASSWORD",
                "-e",
                "SCHCRWLR_JDBC_URL",
                "-e",
                "SCHCRWLR_SERVER",
                "schemacrawler/schemacrawler-ai:17.16.0-1"
            ],
            "env": {
                "SCHCRWLR_MCP_SERVER_TRANSPORT": "<SCHCRWLR_MCP_SERVER_TRANSPORT>",
                "SCHCRWLR_DATABASE_USER": "<SCHCRWLR_DATABASE_USER>",
                "SCHCRWLR_DATABASE_PASSWORD": "<SCHCRWLR_DATABASE_PASSWORD>",
                "SCHCRWLR_JDBC_URL": "<SCHCRWLR_JDBC_URL>",
                "SCHCRWLR_SERVER": "<SCHCRWLR_SERVER>"
            }
        }
    }
}
```
Replace <…> with your own values. 8 more environment variables are in the server README

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e SCHCRWLR_MCP_SERVER_TRANSPORT=<SCHCRWLR_MCP_SERVER_TRANSPORT> -e SCHCRWLR_DATABASE_USER=<SCHCRWLR_DATABASE_USER> -e SCHCRWLR_DATABASE_PASSWORD=<SCHCRWLR_DATABASE_PASSWORD> -e SCHCRWLR_JDBC_URL=<SCHCRWLR_JDBC_URL> -e SCHCRWLR_SERVER=<SCHCRWLR_SERVER> schemacrawler-ai docker run -i --rm -e SCHCRWLR_MCP_SERVER_TRANSPORT -e SCHCRWLR_DATABASE_USER -e SCHCRWLR_DATABASE_PASSWORD -e SCHCRWLR_JDBC_URL -e SCHCRWLR_SERVER schemacrawler/schemacrawler-ai:17.16.0-1
```
Replace <…> with your own values. 8 more environment variables are in the server README

## When to use it
- inspect database tables and keys
- look up stored procedures by asking the agent
- get SQL guidance from the schema
- query database structure in natural language

## Example prompts
- Show the tables and keys in the connected database.
- Find stored procedures related to orders.
- Suggest the SQL query I need for this task using the database schema.

## Similar
- [REA](https://affpapa.org/en/nevibecode/mcp/rea.md) — MCP server · ★ 392262
- [GitHub](https://affpapa.org/en/nevibecode/mcp/github.md) — MCP server · ★ 33989
- [World Monitor](https://affpapa.org/en/nevibecode/mcp/world-monitor.md) — MCP server · ★ 89609
- [Netdata](https://affpapa.org/en/nevibecode/mcp/netdata.md) — MCP server · ★ 81163
- [Front-End Checklist](https://affpapa.org/en/nevibecode/mcp/front-end-checklist.md) — MCP server · ★ 74569
- [Scrapling MCP Server](https://affpapa.org/en/nevibecode/mcp/scrapling-mcp-server.md) — MCP server · ★ 89899

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
