Available Change Types in the Liquibase Changelog MCP Server
Last updated: October 30, 2025
The MCP Server is currently in early access, and we're actively seeking customer feedback to help shape its development. If you would like to learn more about this feature, please contact us here.
This document covers the available Change Types in the Liquibase Changelog MCP Server for creating XML changelogs.
Note: The Change Type syntax within Liquibase uses camel casing, but the MCP Server Change Type tools use snake casing. Each MCP server tool utilizes the same functionality as the Change Type it is linked to.
camel case example: createTable
snake case example: create_table
create_table
Generate a Liquibase changeset for creating a new table.
Natural language input example:
Create a users table with id (primary key, auto-increment), username (varchar 50, unique), and email (varchar 255, not null)
Parameters:
Parameter | Description |
(required) | Name of the table to create |
(required) | Array of column definitions |
(optional) | Schema name |
(optional) | Catalog name |
(optional) | Tablespace name |
(optional) | Table comments |
Column Definition:
Parameter | Description |
(required) | Column name |
(required) | Column type (e.g., "varchar(255)", "integer") |
(optional) | Column constraints object |
(optional) | Default string value |
(optional) | Default numeric value |
(optional) | Default boolean value |
(optional) | Default date value |
(optional) | Computed default value |
(optional) | Auto-increment flag |
(optional) | Auto-increment start value |
(optional) | Auto-increment step |
(optional) | Column comments |
Constraints Object:
Parameter | Description |
(optional) | Primary key flag |
(optional) | Nullable flag |
(optional) | Unique constraint flag |
(optional) | Unique constraint name |
(optional) | Foreign key reference (format: "table.column") |
(optional) | Foreign key constraint name |
(optional) | Delete cascade flag |
(optional) | Deferrable constraint flag |
(optional) | Initially deferred flag |
add_column
Natural language input example:
Add a created_at timestamp column to the users table
Parameters:
Parameter | Description |
(required) | Name of the existing table |
(required) | Array of column definitions to add |
(optional) | Schema name |
(optional) | Catalog name |
Additional Column Properties:
Parameter | Description |
(optional) | Position directive ("FIRST" or "AFTER column_name") |
(optional) | Column after which to add this column |
(optional) | Column before which to add this column |
create_index
Generate a Liquibase changeset for creating an index.
Natural language input example:
Create a unique index on username column of users table
Parameters:
Parameter | Description |
(required) | Name of the index |
(required) | Name of the table |
(required) | Array of column names to include in index |
(optional) | Schema name |
(optional) | Catalog name |
(optional) | Whether index should be unique |
(optional) | Tablespace name |
drop_table
Generate a Liquibase changeset for dropping a table.
Natural language input example:
Drop the old_users table
Parameters:
Parameter | Description |
(required) | Name of the table to drop |
(optional) | Schema name |
(optional) | Catalog name |
(optional) | Whether to cascade constraints |
drop_column
Generate a Liquibase changeset for removing columns from an existing table.
Natural language input example:
Drop the temporary_column and old_status columns from the users table
Parameters:
Parameter | Description |
(required) | Name of the existing table |
(required) | Array of column names to drop |
(optional) | Schema name |
(optional) | Catalog name |
modify_column
Generate a Liquibase changeset for modifying existing column definitions.
Natural language input example:
Change the email column in users table from varchar(100) to varchar(255)
Parameters:
Parameter | Description |
tableName (required) | Name of the existing table |
columns (required) | Array of column modifications (only one column supported per changeset) |
schemaName (optional) | Schema name |
catalogName (optional) | Catalog name |
Column Modification Properties:
Property | Description |
name (required) | Column name to modify |
newDataType (required) | New data type for the column |
rename_column
Generate a Liquibase changeset for renaming a column.
Natural language input example:
Rename the user_name column to full_name in the users table
Parameters:
Parameter | Description |
(required) | Name of the table containing the column |
(required) | Current name of the column to rename |
(required) | New name for the column |
(optional) | Schema name |
(optional) | Catalog name |
(optional) | Column data type (for type safety) |
(optional) | Column remarks/comments |
Create_view
Generate a Liquibase changeset for creating a database view.
Natural language input example:
Create a view called active_users that shows all users with status 'active'
Parameters:
Parameter | Description |
(required) | Name of the view to create |
(required) | SQL SELECT query that defines the view |
(optional) | Schema name containing the view |
(optional) | Catalog name containing the view |
(optional) | Whether to replace the view if it already exists |
(optional) | Comments about the view |
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.33.xsd">
<changeSet id="1" author="mcp-server">
<comment>creating view active_users</comment>
<createView viewName="active_users">
SELECT id, username, email FROM users WHERE status = 'active'
</createView>
</changeSet>
</databaseChangeLog>drop_view
Generate a Liquibase changeset for dropping a database view.
Natural language input example:
Drop the active_users view
Parameters:
Parameter | Description |
(required) | Name of the view to drop |
(optional) | Schema name containing the view |
(optional) | Catalog name containing the view |
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.33.xsd">
<changeSet id="1" author="mcp-server">
<comment>dropping view active_users</comment>
<dropView viewName="active_users"/>
</changeSet>
</databaseChangeLog>drop_index
Generate a Liquibase changeset for removing an index.
Natural language input example:
Drop the idx_users_email index from the users table
Parameters:
Parameter | Description |
(required) | Name of the index to drop |
(required) | Name of the table containing the index |
(optional) | Schema name |
(optional) | Catalog name |
rename_table
Generate a Liquibase changeset for renaming a table.
Natural language input example:
Rename the users table to customers
Parameters:
Parameter | Description |
(required) | Current name of the table to rename |
(required) | New name for the table |
(optional) | Schema name |
(optional) | Catalog name |
create_procedure
Generate a Liquibase changeset for creating a stored procedure.
Natural language input example:
Create a stored procedure to get user by ID: CREATE PROCEDURE GetUserById(@Id INT) AS SELECT * FROM users WHERE id = @Id
Parameters:
Parameter | Description |
(required) | SQL text of the procedure to create |
(optional) | Name of the procedure (can be extracted from SQL) |
(optional) | Schema name |
(optional) | Catalog name |
(optional) | Whether to replace procedure if it exists |
drop_procedure
Generate a Liquibase changeset for dropping a stored procedure.
Natural language input example:
Drop the GetUserById stored procedure
Parameters:
Parameter | Description |
(required) | Name of the procedure to drop |
(optional) | Schema name |
(optional) | Catalog name |
create_sequence
Generate a Liquibase changeset for creating a database sequence.
Natural language input example:
Create a user_id_seq sequence starting at 1000 with increment 1
Parameters:
Parameter | Description |
(required) | Name of the sequence to create |
(optional) | Schema name containing the sequence |
(optional) | Catalog name containing the sequence |
(optional) | Starting value for the sequence |
(optional) | Increment value for the sequence (default 1) |
(optional) | Minimum value for the sequence |
(optional) | Maximum value for the sequence |
(optional) | Whether the sequence should cycle when it reaches max/min value |
(optional) | Number of sequence values to cache |
(optional) | Whether sequence values should be ordered |
(optional) | Data type for the sequence (e.g., BIGINT) |
createSequence generated XML:
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.33.xsd">
<changeSet id="1" author="liquibase-mcp">
<comment>creating sequence user_id_seq</comment>
<createSequence sequenceName="user_id_seq" startValue="1000" incrementBy="1"/>
</changeSet>
</databaseChangeLog>drop_sequence
Generate a Liquibase changeset for dropping a database sequence.
Natural language input example:
Drop the user_id_seq sequence
Parameters:
Parameter | Description |
(required) | Name of the sequence to drop |
(optional) | Schema name containing the sequence |
(optional) | Catalog name containing the sequence |
dropSequence generated XML
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.33.xsd">
<changeSet id="1" author="liquibase-mcp">
<comment>dropping sequence user_id_seq</comment>
<dropSequence sequenceName="user_id_seq"/>
</changeSet>
</databaseChangeLog>rename_sequence
Generate a Liquibase changeset for renaming a database sequence.
Natural language input example:
Rename the user_id_seq sequence to customer_id_seq
Parameters:
Parameter | Description |
(required) | Current name of the sequence to rename |
(required) | New name for the sequence |
(optional) | Schema name containing the sequence |
(optional) | Catalog name containing the sequence |
renameSequence generated XML
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.33.xsd">
<changeSet id="1" author="liquibase-mcp">
<comment>renaming sequence user_id_seq to customer_id_seq</comment>
<renameSequence oldSequenceName="user_id_seq" newSequenceName="customer_id_seq"/>
<rollback>
<renameSequence oldSequenceName="customer_id_seq" newSequenceName="user_id_seq"/>
</rollback>
</changeSet>
</databaseChangeLog>validate
Validate a Liquibase changeset XML against an H2 in-memory database to ensure it's syntactically correct and can be applied successfully.
Note: This tool can be used independently to validate any Liquibase changeset XML. All other tools automatically include validation in their output by default (configurable via LIQUIBASE_MCP_DISABLE_VALIDATIONenvironment variable).
Natural language input example:
Validate this changeset XML: <changeSet id="1" author="dev">...</changeSet>
Parameters:
Parameter | Description |
Validate this changeset XML |
|
sql
Execute raw SQL statements with full parameter control.
Natural language input example:
Execute SQL: INSERT INTO users (username, email) VALUES ('admin', 'admin@example.com') with splitStatements enabled
Parameters:
Parameter | Description |
(required) | The SQL statement(s) to execute |
(optional) | Custom statement delimiter (default |
(optional) | Whether to split on delimiters (default |
(optional) | Whether to strip SQL comments (default |
(optional) | Database-specific execution (e.g.,
|
SQL Generated XML
<changeSet id="1234567890-1" author="liquibase-mcp">
<sql splitStatements="true" stripComments="true">
INSERT INTO users (username, email) VALUES ('admin', 'admin@example.com')
</sql>
</changeSet>sql_file
Execute SQL from external files with path and encoding options.
Natural language input example:
Execute SQL from file: db/migrations/seed_data.sql with UTF-8 encoding relative to changelog
Parameters:
Parameter | Description |
(required) | Path to the SQL file |
(optional) | Path relative to changelog (default |
(optional) | File encoding (default UTF-8) |
(optional) | Custom statement delimiter (default |
(optional) | Whether to split on delimiters (default |
(optional) | Whether to strip SQL comments (default |
(optional) | Database-specific execution |
SQLfile generated XML
<changeSet id="1234567890-1" author="liquibase-mcp">
<sqlFile path="db/migrations/seed_data.sql"
encoding="UTF-8"
relativeToChangelogFile="true"
splitStatements="true"
stripComments="true"/>
</changeSet>Output Format
All schema generation tools (create_table, add_column, etc.) return Liquibase XML changesets wrapped in markdown code blocks, followed by automatic validation results:
Output format example
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.0.xsd">
<changeSet id="1234567890-1" author="liquibase-mcp">
<!-- Generated changes here -->
</changeSet>
</databaseChangeLog>