MigratorXpress MCP Server
Provides tools for database migration from various source systems (Oracle, SQL Server, Netezza, PostgreSQL) to PostgreSQL or SQL Server, using the MigratorXpress engine.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MigratorXpress MCP Serversuggest workflow for Oracle to PostgreSQL"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MigratorXpress MCP Server
A Model Context Protocol (MCP) server for MigratorXpress, enabling database migration between heterogeneous database systems through AI assistants.
MigratorXpress supports migrating from Oracle, PostgreSQL, SQL Server, and Netezza to PostgreSQL or SQL Server targets.
Installation
pip install -e .Or install dependencies directly:
pip install -r requirements.txtRelated MCP server: Legion Database MCP Server
Configuration
Environment Variables
Variable | Default | Description |
|
| Path to MigratorXpress binary |
|
| Command execution timeout in seconds |
|
| Directory for execution logs |
|
| Server logging level |
Copy .env.example to .env and adjust values:
cp .env.example .envClaude Code Configuration
Add to your Claude Code MCP settings:
{
"mcpServers": {
"migratorxpress": {
"command": "python",
"args": ["-m", "src.server"],
"cwd": "/path/to/migratorxpress-mcp",
"env": {
"MIGRATORXPRESS_PATH": "/path/to/MigratorXpress"
}
}
}
}Tools
1. preview_command
Build and preview a MigratorXpress CLI command without executing it. License text is automatically masked in the display output.
Required parameters: auth_file, source_db_auth_id, source_db_name, target_db_auth_id, target_db_name, migration_db_auth_id
2. execute_command
Execute a previously previewed command. Requires confirmation: true as a safety mechanism.
3. validate_auth_file
Validate that an authentication file exists, is valid JSON, and optionally check for specific auth_id entries.
4. list_capabilities
List supported source/target databases, tasks, migration DB modes, load modes, and FK modes.
5. suggest_workflow
Given a source database type, target database type, and optional constraint flag, suggest the full sequence of migration tasks with example commands.
6. get_version
Report MigratorXpress version and capabilities.
Workflow Example
A typical migration from Oracle to PostgreSQL:
Step 1: translate — Translate Oracle DDL to PostgreSQL-compatible DDL
Step 2: create — Create target tables from translated DDL
Step 3: transfer — Transfer data from source to target
Step 4: diff — Verify row counts match between source and target
Step 5: copy_pk — Copy primary key constraints
copy_ak — Copy alternate key (unique) constraints
copy_fk — Copy foreign key constraintsOr run all steps in a single invocation with --task_list all.
Development
Running Tests
pip install -e ".[dev]"
python -m pytest tests/ -vLicense
MIT
Available Tools
6 toolsexecute_commandA
Execute a MigratorXpress command that was previously previewed. IMPORTANT: You must set confirmation=true to execute. This is a safety mechanism to prevent accidental execution.
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes | The exact command from preview_command (space-separated) | |
| confirmation | Yes | Must be true to execute. This confirms the user has reviewed the command. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description conveys the safety mechanism and confirmation requirement. However, it omits details on success/failure behavior or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with front-loaded purpose and a critical instruction. Every sentence serves a clear purpose without waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple two-parameter tool, the description is sufficient but could explicitly link to preview_command as a prerequisite for completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the description adds emphasis on the confirmation parameter but no new meaning beyond the schema's own descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Execute a MigratorXpress command that was previously previewed,' with a specific verb and resource, distinguishing it from siblings like preview_command.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description notes the safety mechanism and required 'confirmation=true' but does not explicitly exclude non-previewed commands or mention alternatives beyond the implied preview step.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_versionA
Get the detected MigratorXpress binary version, capabilities, and supported databases, tasks, and modes.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full burden but only states that it 'gets detected info'. It does not disclose whether it queries a binary, calls an API, or any potential errors (e.g., binary not found).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no wasted words. All content is front-loaded and directly informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description lists the categories of returned info but does not detail the exact structure or error conditions. It is adequate for a simple 'get' tool but could include more context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters, so schema coverage is trivially 100%. The description adds meaning by specifying the returned information categories (version, capabilities, databases, tasks, modes), which is beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the verb 'Get' and the resource 'MigratorXpress binary version, capabilities, and supported databases, tasks, and modes'. It distinguishes from siblings like 'list_capabilities' by focusing on binary version and capabilities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus siblings such as list_capabilities or execute_command. The description does not state prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_capabilitiesA
List supported source databases, target databases, migration database types, tasks, migration DB modes, load modes, and FK modes.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full burden. It only states 'list' without detailing read-only behavior, output format, or any side effects. However, the simplicity of the tool (no parameters, no side effects) partially mitigates this.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that directly and efficiently conveys the tool's action and scope without any extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters and no output schema, the description fully covers the tool's functionality by listing all categories of information it retrieves, making it contextually complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so baseline is 4. The description adds value by enumerating what is listed, which is not present in the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states that the tool lists supported source databases, target databases, migration database types, tasks, migration DB modes, load modes, and FK modes, clearly defining its purpose and distinguishing it from sibling tools that perform actions like execute or preview.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: it is a discovery tool for available capabilities. No explicit guidance on when to use or not use it, nor alternatives are mentioned, but its straightforward nature reduces ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preview_commandA
Build and preview a MigratorXpress CLI command WITHOUT executing it. This shows the exact command that will be run. Use this FIRST before executing any command. License text is masked in the display output.
| Name | Required | Description | Default |
|---|---|---|---|
| auth_file | Yes | Path to authentication/credentials JSON file | |
| source_db_auth_id | Yes | Source database credential ID from the auth file | |
| source_db_name | Yes | Source database name to migrate from | |
| target_db_auth_id | Yes | Target database credential ID from the auth file | |
| target_db_name | Yes | Target database name to migrate to | |
| migration_db_auth_id | Yes | Migration tracking database credential ID from the auth file | |
| source_schema_name | No | Source schema name. If omitted, all schemas are migrated | |
| target_schema_name | No | Target schema name. Defaults to source schema name if omitted | |
| task_list | No | Tasks to run (e.g., translate, create, transfer, diff, copy_pk, copy_ak, copy_fk, all) | |
| resume | No | Resume a previous run by RUN_ID | |
| fasttransfer_dir_path | No | Path to FastTransfer binary directory for parallel data transfer | |
| fasttransfer_p | No | FastTransfer parallel degree (number of threads per table transfer) | |
| ft_large_table_th | No | Row count threshold above which FastTransfer parallelism is used | |
| n_jobs | No | Number of concurrent table transfers | |
| cci_threshold | No | Row count threshold for clustered columnstore index creation on target | |
| aci_threshold | No | Row count threshold for auto-created indexes on target | |
| migration_db_mode | No | Migration database mode: preserve (keep), truncate (clear data), drop (recreate) | |
| compute_nbrows | No | Compute row counts for source tables before transfer | |
| drop_tables_if_exists | No | Drop target tables before creating them | |
| load_mode | No | Data load mode: truncate (clear target first) or append | |
| include_tables | No | Table include patterns, comma-separated. Supports wildcards | |
| exclude_tables | No | Table exclude patterns, comma-separated. Supports wildcards | |
| min_rows | No | Minimum row count filter — only migrate tables with at least this many rows | |
| max_rows | No | Maximum row count filter — only migrate tables with at most this many rows | |
| forced_int_id_prefixes | No | Column name prefixes to force integer identity mapping | |
| forced_int_id_suffixes | No | Column name suffixes to force integer identity mapping | |
| profiling_sample_pc | No | Percentage of rows to sample for data profiling (0-100) | |
| p_query | No | Parallelism degree for profiling queries | |
| min_sample_pc_profile | No | Minimum sample percentage for profiling small tables | |
| force | No | Force overwrite of existing migration data | |
| basic_diff | No | Use basic diff mode (row counts only, no checksum) | |
| without_xid | No | Disable transaction ID tracking during transfer | |
| fk_mode | No | Foreign key mode: trusted, untrusted, or disabled | |
| log_level | No | Logging verbosity level | |
| log_dir | No | Directory for log files | |
| no_banner | No | Suppress the startup banner | |
| no_progress | No | Disable progress bar display | |
| quiet_ft | No | Suppress FastTransfer console output during data transfer | |
| license | No | License key (will be masked in display) | |
| license_file | No | Path to license key file | |
| os_type | No | Target operating system for command formatting | linux |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states the tool does not execute and masks license text, but doesn't explicitly state there are no side effects or describe the output format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each adding value: purpose, output nature, usage order, and masking detail. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 41 parameters and no output schema, the description lacks details on the preview output format (e.g., is it a string? formatted command?). Adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% description coverage, so the tool description adds no parameter-specific meaning beyond noting license masking. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Build and preview a MigratorXpress CLI command WITHOUT executing it' and 'Use this FIRST before executing any command', clearly differentiating it from its sibling execute_command.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear guidance to 'Use this FIRST before executing any command', implying its role as a preliminary step before execute_command, though it doesn't explicitly list alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggest_workflowA
Given a source database type, target database type, and optional constraint flag, suggest the full sequence of MigratorXpress tasks with example commands.
| Name | Required | Description | Default |
|---|---|---|---|
| source_type | Yes | Source database type (e.g., 'oracle', 'postgresql', 'sqlserver', 'netezza') | |
| target_type | Yes | Target database type (e.g., 'postgresql', 'sqlserver') | |
| include_constraints | No | Whether to include constraint copy steps (PK, AK, FK) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It only describes what the tool does without disclosing behaviors like side effects, authorization needs, or error handling. For a suggestion tool, more transparency on output format or edge cases would be beneficial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads key inputs and output. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given low complexity (3 params, no enums, no output schema), the description adequately explains what the tool does and its inputs. However, it could mention return format more explicitly, though it states 'suggest full sequence with example commands'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description adds minor context ('with example commands') but does not provide significant additional meaning beyond what the schema offers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool suggests a full sequence of MigratorXpress tasks given database types and constraint flag. It specifies verb 'suggest' and resource 'workflow', and distinguishes from sibling tools like execute_command and preview_command.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when planning a migration workflow, but does not explicitly state when to use this tool vs alternatives or mention exclusions. Sibling tools are quite different, so context is clear but lacks explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_auth_fileA
Validate that an authentication file exists, is valid JSON, and optionally check for specific auth_id entries.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | Path to the authentication JSON file | |
| required_auth_ids | No | Optional list of auth_id values that must be present |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description provides basic behavioral info: existence check, JSON validity check, optional auth_id check. However, it does not disclose error behavior, return value type, or whether it is read-only.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with the verb, no unnecessary words. Efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple validation tool with two parameters, but lacks information on return behavior or error handling since no output schema exists. Could specify expected output (e.g., boolean).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds minimal extra context beyond schema: it clarifies 'optional' for required_auth_ids and implies validation context for file_path. It does not significantly enhance understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool validates an authentication file's existence, JSON validity, and optionally checks for specific auth_id entries. The verb 'Validate' and resource 'authentication file' are explicit, and it distinguishes from siblings like execute_command.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus siblings or when not to use it. The description implies it's for validation, but lacks context or alternative recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
6 tool updates
v0.1.6- First observed
execute_command - First observed
get_version - First observed
list_capabilities - First observed
preview_command - First observed
suggest_workflow - First observed
validate_auth_file
TDQS
Each tool has a clearly distinct purpose: preview vs execute, version info, capabilities listing, workflow suggestions, and auth validation. No overlap in functionality.
All tools follow a consistent verb_noun snake_case pattern (e.g., execute_command, get_version, list_capabilities). No mixing of conventions.
6 tools is well-scoped for a migration server; covers core operations (preview, execute, capabilities, version, workflow suggestion, auth validation) without bloat.
The set covers essential migration workflows: planning (suggest_workflow), preview, execution, and validation. Minor gaps like explicit migration status tracking do not hinder core usage.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
- mcpOAuthcom.gibsonai
GibsonAI MCP server: manage your databases with natural language
Cloud-hosted MCP server for secure AI access to enterprise data sources via CData Connect AI.
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Related MCP Servers
- -licenseNot gradedqualityCmaintenanceAn MCP server that bridges AI assistants with SQL databases, enabling natural language querying across multiple database types with built-in optimization and security.3-
- AlicenseNot gradedqualityDmaintenanceA unified MCP server for querying and managing multiple database types (PostgreSQL, MySQL, SQL Server, etc.) via natural language through AI assistants.GPL 3.0
- AlicenseNot gradedqualityDmaintenanceMCP server for connecting to databases (PostgreSQL, MySQL, SQL Server, Redis) enabling SQL queries, table exploration, and Redis key-value operations.1MIT
- FlicenseNot gradedqualityCmaintenanceMCP server for PostgreSQL database management, enabling AI-assisted schema exploration, stored procedure analysis, test data generation, and safe transaction management via Claude Desktop.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/arpe-io/migratorxpress-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server