SchemaCrawler AI

SchemaCrawler AI

The SchemaCrawler AI MCP Server enables natural language interaction with your database schema using an MCP client in "Agent" mode. It allows users to explore tables, columns, foreign keys, triggers, stored procedures and more simply by asking questions like "Explain the code for the interest calculation stored procedure". You can also ask it to help with SQL, since it knows your schema. This is ideal for developers, DBAs, and data analysts who want to streamline schema comprehension and query development without diving into dense documentation.

142

8 Tools

Signed
Built by Docker
Requires Configuration
Requires Secrets
Add to Docker Desktop

Version 4.43 or later needs to be installed to add the server automatically

Use cases

About

SchemaCrawler AI MCP Server

The SchemaCrawler AI MCP Server enables natural language interaction with your database schema using an MCP client in "Agent" mode. It allows users to explore tables, columns, foreign keys, triggers, stored procedures and more simply by asking questions like "Explain the code for the interest calculation stored procedure". You can also ask it to help with SQL, since it knows your schema. This is ideal for developers, DBAs, and data analysts who want to streamline schema comprehension and query development without diving into dense documentation.

What is an MCP Server?

Characteristics

AttributeDetails
Docker Imagemcp/schemacrawler-ai
Authorschemacrawler
Repositoryhttps://github.com/schemacrawler/SchemaCrawler-AI
Dockerfilehttps://github.com/schemacrawler/SchemaCrawler-AI/blob/docker-mcp-registry/Dockerfile
Docker Image built byDocker Inc.
Docker Scout Health ScoreDocker Scout Health Score
Verify SignatureCOSIGN_REPOSITORY=mcp/signatures cosign verify mcp/schemacrawler-ai --key https://raw.githubusercontent.com/docker/keyring/refs/heads/main/public/mcp/latest.pub
LicenceOther

Available Tools (8)

Tools provided by this ServerShort Description
describe-routinesGet the details and description of database routine (stored procedures or functions), including parameters and return types.
describe-tablesGet the details and description of database tables or views, including columns, primary key, foreign keys, indexes and triggers.
get-schemacrawler-versionGets the version of SchemaCrawler
lintLint database schemas.
listList names of database objects like tables, routines (that is, functions and stored procedures), sequences, or synonyms.
list-across-tablesList names of names of database objects like columns, indexes, triggers, and foreign keys for tables across the whole database.
server-informationProvides more information about the database server, for example the product version, collation and so on.
table-sampleGets a few sample rows of data from a table.

Tools Details

Tool: describe-routines

Get the details and description of database routine (stored procedures or functions), including parameters and return types. This could return a lot of information if not limited by a parameter specifying one or more routines. Returns data as a JSON object.

ParametersTypeDescription
description-scopearrayoptionalIndicates what details of the database stored procedure or function to return - parameters (including return types), attributes, and routine definition. Parameters, return types, and remarks or comments are always returned.
routine-namestringoptionalName of database routine (stored procedure or function) to describe. May be specified as a regular expression matching the fully qualified stored procedure or function names (including the schema). Use an empty string if all routines are requested. If not specified, all routines are returned, but the results could be large.

Tool: describe-tables

Get the details and description of database tables or views, including columns, primary key, foreign keys, indexes and triggers. This could return a lot of information if not limited by a parameter specifying one or more tables. Returns data as a JSON object.

ParametersTypeDescription
description-scopearrayoptionalIndicates what details of the database table or view to return - columns, primary key, foreign keys, indexes, triggers, attributes, and table definition. Columns, foreign key references to other tables, and remarks or comments are always returned by default. The other details can be requested. The results could be large.
table-namestringoptionalName of database table or view to describe. May be specified as a regular expression, matching the fully qualified table name (including the schema). Use an empty string if all tables are requested. If not specified, all tables will be returned, but the results could be large.

Tool: get-schemacrawler-version

Gets the version of SchemaCrawler

ParametersTypeDescription
arg0stringoptionalMCP Client identification, if available.
arg1stringoptionalEvent id, if available.

Tool: lint

Lint database schemas. Find design issues with specific tables, or with the entire database. Find problems with database design, such as no indexes on foreign keys.

ParametersTypeDescription
table-namestringoptionalMay be specified as a regular expression, matching the fully qualified table name (including the schema). Use an empty string if all tables are requested. If not specified, all tables will be processed, but the results could be large, and execution time may be longer.

Tool: list

List names of database objects like tables, routines (that is, functions and stored procedures), sequences, or synonyms. Returns JSON data.

ParametersTypeDescription
database-object-namestringoptionalName of database object to list. Is a regular expression, matching the fully qualified database object name (including the schema). May match more than one database object. Use an empty string if all database objects are requested.
database-object-typestringoptionalType of database object to list, like tables (including views), routines (that is, stored procedures and functions), schemas (that is, catalogs), sequences, or synonyms. If the parameter is not provided, all database objects are listed.

Tool: list-across-tables

List names of names of database objects like columns, indexes, triggers, and foreign keys for tables across the whole database. The corresponding tables are identified, and details can be obtained later by describing those tables. Returns JSON data.

ParametersTypeDescription
dependant-object-typestringType of database table dependant objects, like columns, indexes, foreign keys or triggers.
dependant-object-namestringoptionalName of table dependant object. May be a regular expression, matching the fully qualified dependant object name (including the schema and table). May match more than one dependant object. Use an empty string if all dependant objects are requested. If not specified, all table dependant objects will be returned, but the results could be large.
table-namestringoptionalName of database table for which dependant objects are described. May be a regular expression, matching the fully qualified table name (including the schema), in which case, multiple tables may be returned. Use an empty string if all tables are requested. If not specified, all tables will be returned, but the results could be large.

Tool: server-information

Provides more information about the database server, for example the product version, collation and so on. Details will vary based on the type of the server, for example, if it is Oracle, SQL Server, PostgreSQL, MySQL, etc. Returns JSON data.

Tool: table-sample

Gets a few sample rows of data from a table. These rows are selected at random, and so different rows may be returned each time they are requested. Do not use this as a substitute for running a query on a table, but rather to infer what the table may contain.

ParametersTypeDescription
table-namestringoptionalMay be specified as a regular expression, matching the fully qualified table name (including the schema). Use an empty string if all tables are requested. If not specified, all tables will be processed, but the results could be large, and execution time may be longer.

Use this MCP Server

{
  "mcpServers": {
    "schemacrawler-ai": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "SCHCRWLR_JDBC_URL",
        "-e",
        "SCHCRWLR_SERVER",
        "-e",
        "SCHCRWLR_HOST",
        "-e",
        "SCHCRWLR_PORT",
        "-e",
        "SCHCRWLR_DATABASE",
        "-e",
        "SCHCRWLR_INFO_LEVEL",
        "-e",
        "SCHCRWLR_LOG_LEVEL",
        "-e",
        "SCHCRWLR_DATABASE_USER",
        "-e",
        "SCHCRWLR_DATABASE_PASSWORD",
        "-v",
        "/local-directory:/local-directory",
        "mcp/schemacrawler-ai"
      ],
      "env": {
        "SCHCRWLR_JDBC_URL": "12.12.12.12",
        "SCHCRWLR_SERVER": "12.12.12.12",
        "SCHCRWLR_HOST": "12.12.12.12",
        "SCHCRWLR_PORT": "9999",
        "SCHCRWLR_DATABASE": "public",
        "SCHCRWLR_INFO_LEVEL": "standard",
        "SCHCRWLR_LOG_LEVEL": "ALL",
        "SCHCRWLR_DATABASE_USER": "SA",
        "SCHCRWLR_DATABASE_PASSWORD": "super_S3cret"
      }
    }
  }
}

Why is it safer to run MCP Servers with Docker?

Manual installation

You can install the MCP server using:

Installation for

Related servers