A Model Context Protocol (MCP) server for FastTransfer, enabling efficient data transfer between database systems.
Project description
FastTransfer MCP Server
A Model Context Protocol (MCP) server that exposes FastTransfer functionality for efficient data transfer between various database systems.
Overview
FastTransfer is a high-performance CLI tool for transferring data between databases. This MCP server wraps FastTransfer functionality and provides:
- Safety-first approach: Preview commands before execution with user confirmation required
- Password masking: Credentials and connection strings are never displayed in logs or output
- Intelligent validation: Parameter validation with database-specific compatibility checks
- Smart suggestions: Automatic parallelism method recommendations
- Version detection: Automatic binary version detection with capability registry
- Comprehensive logging: Full execution logs with timestamps and results
MCP Tools
1. preview_transfer_command
Build and preview a FastTransfer command WITHOUT executing it. Shows the exact command with passwords masked. Always use this first.
2. execute_transfer
Execute a previously previewed command. Requires confirmation: true as a safety mechanism.
3. validate_connection
Validate database connection parameters (parameter check only, does not test actual connectivity).
4. list_supported_combinations
List all supported source-to-target database combinations.
5. suggest_parallelism_method
Recommend the optimal parallelism method based on source database type and table characteristics.
6. get_version
Report the detected FastTransfer binary version, supported types, and feature flags.
Installation
Prerequisites
- Python 3.10 or higher
- FastTransfer binary v0.16+ (obtain from Arpe.io)
- Claude Code or another MCP client
Setup
-
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"
Configuration
Environment Variables
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
Connection Options
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) |
Transfer Options
| 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 |
Usage Examples
PostgreSQL to SQL Server Transfer
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
File Import via DuckDB Stream
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.
Check Version and Capabilities
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.
Two-Step Safety Process
This server implements a mandatory two-step process:
- Preview - Always use
preview_transfer_commandfirst - Execute - Use
execute_transferwithconfirmation: true
You cannot execute without previewing first and confirming.
Security
- Passwords and connection strings are masked in all output and logs
- Sensitive flags masked:
--sourcepassword,--targetpassword,--sourceconnectstring,--targetconnectstring,-x,-X,-g,-G - Use environment variables for sensitive configuration
- Review commands carefully before executing
- Use minimum required database permissions
Testing
Run the test suite:
# Run all tests
python -m pytest tests/ -v
# Run with coverage
python -m pytest tests/ --cov=src --cov-report=html
Project Structure
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
License
This MCP server wrapper is provided as-is. FastTransfer itself is a separate product from Arpe.io.
Related Links
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file fasttransfer_mcp-0.1.5.tar.gz.
File metadata
- Download URL: fasttransfer_mcp-0.1.5.tar.gz
- Upload date:
- Size: 31.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9171b3713523b54ff39554ced2bd0fef1795b9fb719a989f3751ed009e7fad76
|
|
| MD5 |
9e1d3ad54a12dbf4bf6dd645631f2e4e
|
|
| BLAKE2b-256 |
e0390b9407c383c49fdc802fc29ccecb128ce82f8bc8cfae1f3d1495f4ec7c7e
|
Provenance
The following attestation bundles were made for fasttransfer_mcp-0.1.5.tar.gz:
Publisher:
publish.yml on arpe-io/fasttransfer-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fasttransfer_mcp-0.1.5.tar.gz -
Subject digest:
9171b3713523b54ff39554ced2bd0fef1795b9fb719a989f3751ed009e7fad76 - Sigstore transparency entry: 1004096060
- Sigstore integration time:
-
Permalink:
arpe-io/fasttransfer-mcp@ddcaba848653db39c748c35c9f3d8b517aab1aef -
Branch / Tag:
refs/tags/v0.1.5 - Owner: https://github.com/arpe-io
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@ddcaba848653db39c748c35c9f3d8b517aab1aef -
Trigger Event:
release
-
Statement type:
File details
Details for the file fasttransfer_mcp-0.1.5-py3-none-any.whl.
File metadata
- Download URL: fasttransfer_mcp-0.1.5-py3-none-any.whl
- Upload date:
- Size: 23.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
65e26b81ecf17f969d7f95ca497098d7e7670bed8a4b6cde4d050e4f4c9cd1ea
|
|
| MD5 |
ace3f35dbc613f56ade9a1ad9790141d
|
|
| BLAKE2b-256 |
3f79791cc3f0ee1ad10dcb6ed70e7158f76c1070ce5c5471f1bc50c9b220ddf3
|
Provenance
The following attestation bundles were made for fasttransfer_mcp-0.1.5-py3-none-any.whl:
Publisher:
publish.yml on arpe-io/fasttransfer-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fasttransfer_mcp-0.1.5-py3-none-any.whl -
Subject digest:
65e26b81ecf17f969d7f95ca497098d7e7670bed8a4b6cde4d050e4f4c9cd1ea - Sigstore transparency entry: 1004096061
- Sigstore integration time:
-
Permalink:
arpe-io/fasttransfer-mcp@ddcaba848653db39c748c35c9f3d8b517aab1aef -
Branch / Tag:
refs/tags/v0.1.5 - Owner: https://github.com/arpe-io
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@ddcaba848653db39c748c35c9f3d8b517aab1aef -
Trigger Event:
release
-
Statement type: