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.
683
8 Tools
Version 4.43 or later needs to be installed to add the server automatically
Use cases
About
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.
| Attribute | Details |
|---|---|
| Docker Image | mcp/schemacrawler-ai |
| Author | schemacrawler |
| Repository | https://github.com/schemacrawler/SchemaCrawler-AI |
| Dockerfile | https://github.com/schemacrawler/SchemaCrawler-AI/blob/docker-mcp-registry/Dockerfile |
| Docker Image built by | Docker Inc. |
| Docker Scout Health Score | |
| Verify Signature | COSIGN_REPOSITORY=mcp/signatures cosign verify mcp/schemacrawler-ai --key https://raw.githubusercontent.com/docker/keyring/refs/heads/main/public/mcp/latest.pub |
| Licence | Other |
| Tools provided by this Server | Short Description |
|---|---|
describe-routines | Get the details and description of database routine (stored procedures or functions), including parameters and return types. |
describe-tables | Get the details and description of database tables or views, including columns, primary key, foreign keys, indexes and triggers. |
get-schemacrawler-version | Gets the version of SchemaCrawler |
lint | Lint database schemas. |
list | List names of database objects like tables, routines (that is, functions and stored procedures), sequences, or synonyms. |
list-across-tables | List names of names of database objects like columns, indexes, triggers, and foreign keys for tables across the whole database. |
server-information | Provides more information about the database server, for example the product version, collation and so on. |
table-sample | Gets a few sample rows of data from a table. |
describe-routinesGet 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.
| Parameters | Type | Description |
|---|---|---|
description-scope | arrayoptional | Indicates 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-name | stringoptional | Name 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. |
describe-tablesGet 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.
| Parameters | Type | Description |
|---|---|---|
description-scope | arrayoptional | Indicates 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-name | stringoptional | Name 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. |
get-schemacrawler-versionGets the version of SchemaCrawler
| Parameters | Type | Description |
|---|---|---|
arg0 | stringoptional | MCP Client identification, if available. |
arg1 | stringoptional | Event id, if available. |
lintLint 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.
| Parameters | Type | Description |
|---|---|---|
table-name | stringoptional | 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 processed, but the results could be large, and execution time may be longer. |
listList names of database objects like tables, routines (that is, functions and stored procedures), sequences, or synonyms. Returns JSON data.
| Parameters | Type | Description |
|---|---|---|
database-object-name | stringoptional | Name 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-type | stringoptional | Type 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. |
list-across-tablesList 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.
| Parameters | Type | Description |
|---|---|---|
dependant-object-type | string | Type of database table dependant objects, like columns, indexes, foreign keys or triggers. |
dependant-object-name | stringoptional | Name 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-name | stringoptional | Name 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. |
server-informationProvides 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.
table-sampleGets 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.
| Parameters | Type | Description |
|---|---|---|
table-name | stringoptional | 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 processed, but the results could be large, and execution time may be longer. |
{
"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"
}
}
}
}
Manual installation
You can install the MCP server using:
Installation for