MCP server for FastTransfer — high-performance parallel data transfer between databases
A Model Context Protocol (MCP) server that exposes FastTransfer functionality for efficient data transfer between various database systems.
FastTransfer is a high-performance CLI tool for transferring data between databases. This MCP server wraps FastTransfer functionality and provides:
preview_transfer_commandBuild and preview a FastTransfer command WITHOUT executing it. Shows the exact command with passwords masked. Always use this first.
execute_transferExecute a previously previewed command. Requires confirmation: true as a safety mechanism.
validate_connectionValidate database connection parameters (parameter check only, does not test actual connectivity).
list_supported_combinationsList all supported source-to-target database combinations.
suggest_parallelism_methodRecommend the optimal parallelism method based on source database type and table characteristics.
get_versionReport the detected FastTransfer binary version, supported types, and feature flags.
Clone or download this repository:
cd /path/to/fasttransfer-mcp
Install Python dependencies:
pip install -r requirements.txt
Configure environment:
cp .env.example .env
# Edit .env with your FastTransfer path
Add to Claude Code configuration (~/.claude.json):
{
"mcpServers": {
"fasttransfer": {
"type": "stdio",
"command": "python",
"args": ["/absolute/path/to/fasttransfer-mcp/src/server.py"],
"env": {
"FASTTRANSFER_PATH": "/absolute/path/to/fasttransfer/FastTransfer"
}
}
}
}
Restart Claude Code to load the MCP server.
Verify installation:
# In Claude Code, run:
/mcp
# You should see "fasttransfer: connected"
Edit .env to configure:
# Path to FastTransfer binary (required)
FASTTRANSFER_PATH=./fasttransfer/FastTransfer
# Execution timeout in seconds (default: 1800 = 30 minutes)
FASTTRANSFER_TIMEOUT=1800
# Log directory (default: ./logs)
FASTTRANSFER_LOG_DIR=./logs
# Log level (default: INFO)
LOG_LEVEL=INFO
The server supports multiple ways to authenticate and connect:
| Parameter | Description |
|---|---|
server | Host:port or host\instance (optional with connect_string or dsn) |
user / password | Standard credentials |
trusted_auth | Windows trusted authentication |
connect_string | Full connection string (excludes server/user/password/dsn) |
dsn | ODBC DSN name (excludes server/provider) |
provider | OleDB provider name |
file_input | File path for data input (source only, excludes query) |
| Option | CLI Flag | Description |
|---|---|---|
method | --method | Parallelism method |
distribute_key_column | --distributeKeyColumn | Column for data distribution |
degree | --degree | Parallelism degree (0=auto, >0=fixed, <0=CPU adaptive) |
load_mode | --loadmode | Append or Truncate |
batch_size | --batchsize | Batch size for bulk operations |
map_method | --mapmethod | Column mapping: Position or Name |
run_id | --runid | Run ID for logging |
data_driven_query | --datadrivenquery | Custom SQL for DataDriven method |
use_work_tables | --useworktables | Intermediate work tables for CCI |
settings_file | --settingsfile | Custom settings JSON file |
log_level | --loglevel | Override log level (error/warning/information/debug/fatal) |
no_banner | --nobanner | Suppress banner output |
license_path | --license | License file path or URL |
User: "Copy the 'orders' table from PostgreSQL (localhost:5432, database: sales_db,
schema: public) to SQL Server (localhost:1433, database: warehouse, schema: dbo).
Use parallel transfer and truncate the target first."
Claude Code will:
1. Call suggest_parallelism_method to recommend Ctid for PostgreSQL
2. Call preview_transfer_command with your parameters
3. Show the command with masked passwords
4. Explain what will happen
5. Ask for confirmation
6. Execute with execute_transfer when you approve
User: "Import /data/export.parquet into the SQL Server 'staging' table
using DuckDB stream."
Claude Code will use duckdbstream source type with file_input parameter.
User: "What version of FastTransfer is installed?"
Claude Code will call get_version and display the detected version,
supported source/target types, and available features.
This server implements a mandatory two-step process:
preview_transfer_command firstexecute_transfer with confirmation: trueYou cannot execute without previewing first and confirming.
--sourcepassword, --targetpassword, --sourceconnectstring, --targetconnectstring, -x, -X, -g, -GRun the test suite:
# Run all tests
python -m pytest tests/ -v
# Run with coverage
python -m pytest tests/ --cov=src --cov-report=html
fasttransfer-mcp/
src/
__init__.py
server.py # MCP server (tool definitions, handlers)
fasttransfer.py # Command builder, executor, suggestions
validators.py # Pydantic models, enums, validation
version.py # Version detection and capabilities registry
tests/
__init__.py
test_command_builder.py
test_validators.py
test_version.py
.env.example
requirements.txt
CHANGELOG.md
README.md
This MCP server wrapper is provided as-is. FastTransfer itself is a separate product from Arpe.io.
Source-derived launch command. Check the maintainer’s required arguments and credentials before running:
uvx fasttransfer-mcpMerge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.
{
"mcpServers": {
"io-github-arpe-io-fasttransfer-mcp": {
"command": "uvx",
"args": [
"fasttransfer-mcp"
]
}
}
}Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.
Claude Desktop setup referencefasttransfer-mcppypiio.github.arpe-io/fasttransfer-mcp works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.
~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.~/.cursor/mcp.jsonRestart Cursor for changes to take effect..vscode/mcp.jsonReload VS Code window for changes to take effect.~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect..mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.