FastBCP MCP服务器
  
A. 模型上下文协议(MCP) 暴露的服务器 FastBCP 将数据从数据库导出到文件(CSV、TSV、JSON、BSON、Parquet、XLSX、Binary)的功能,并具有可选的云存储目标。
概述
FastBCP是一个高性能的CLI工具,用于将数据从数据库导出到文件。此MCP服务器封装了FastBCP功能,并提供:
- 安全第一方针:执行前预览命令,需要用户确认
- 密码屏蔽:凭据和连接字符串从不显示在日志或输出中
- 智能验证:通过数据库特定兼容性检查进行参数验证
- 聪明的建议:自动并行方法建议
- 版本检测:使用功能注册表自动检测二进制版本
- 综合录井:带有时间戳和结果的完整执行日志
MCP工具
1. preview_export_command
无需执行即可构建和预览FastBCP导出命令。显示密码被屏蔽的确切命令。总是先用这个。
2. execute_export
执行之前预览的命令。需要 confirmation: true 作为一种安全机制。
3. validate_connection
验证源数据库连接参数(仅用于参数检查,不测试实际连接)。
4. list_supported_formats
列出所有支持的源数据库、输出格式和存储目标。
5. suggest_parallelism_method
推荐基于源数据库类型和表特征的最佳并行方法。
6. get_version
报告检测到的FastBCP二进制版本、支持的类型和功能标志。
安装
先决条件
- Python 3.10或更高版本
- FastBCP二进制v0.29+(从 Arpe.io)
- Claude Code或其他MCP客户端
设置
- 克隆或下载此存储库:
cd /path/to/fastbcp-mcp- 安装Python依赖项:
pip install -r requirements.txt- 配置环境:
cp .env.example .env
# Edit .env with your FastBCP path- 添加到Claude代码配置 (
~/.claude.json):
{
"mcpServers": {
"fastbcp": {
"type": "stdio",
"command": "python",
"args": ["/absolute/path/to/fastbcp-mcp/src/server.py"],
"env": {
"FASTBCP_PATH": "/absolute/path/to/FastBCP"
}
}
}
}- 重新启动Claude代码 加载MCP服务器。
- 验证安装:
# In Claude Code, run:
/mcp
# You should see "fastbcp: connected"配置
环境变量
编辑 .env 配置:
# Path to FastBCP binary (required)
FASTBCP_PATH=./fastbcp/FastBCP
# Execution timeout in seconds (default: 1800 = 30 minutes)
FASTBCP_TIMEOUT=1800
# Log directory (default: ./logs)
FASTBCP_LOG_DIR=./logs
# Log level (default: INFO)
LOG_LEVEL=INFO连接选项
服务器支持多种身份验证和连接方式:
| 参数 | 说明 |
|---|---|
server | 主机:端口或主机\\实例(可选 connect_string 或 dsn) |
user / password | 标准证书 |
trusted_auth | Windows可信身份验证 |
connect_string | 完整连接字符串(不包括服务器/用户/密码/dsn) |
dsn | ODBC DSN名称(不包括服务器/提供程序) |
provider | OleDB提供程序名称 |
application_intent | SQL Server应用程序意图(只读/读写) |
输出选项
| 选项 | CLI标志 | 说明 |
|---|---|---|
format | --format | 输出格式:csv、tsv、json、bson、拼花、xlsx、二进制 |
file_output | --fileoutput | 输出文件路径 |
directory | --directory | 输出目录路径 |
storage_target | --storagetarget | 存储:本地、s3、s3兼容、azure_blob、azure_datalake、fabric_onelake |
delimiter | --delimiter | 字段分隔符(CSV/TSV) |
quotes | --quotes | 引用字符 |
encoding | --encoding | 输出编码 |
no_header | --noheader | 省略标题行(CSV/TSV) |
decimal_separator | --decimalseparator | 小数分隔符(.or,) |
date_format | --dateformat | 日期格式字符串 |
bool_format | --boolformat | 布尔格式:TrueFalse、OneZero、YesNo |
parquet_compression | --parquetcompression | 拼花压缩:无、Snappy、Gzip、Lz4、Lzo、Zstd |
timestamped | --timestamped | 在输出文件名中添加时间戳 |
merge | --merge | 合并并行输出文件 |
导出选项
| 选项 | CLI标志 | 说明 |
|---|---|---|
method | --method | 平行法 |
distribute_key_column | --distributeKeyColumn | 数据分发栏 |
degree | --degree | 平行度(默认值:1) |
load_mode | --loadmode | 追加或截断 |
batch_size | --batchsize | 出口操作的批量大小 |
map_method | --mapmethod | 列映射:位置或名称 |
run_id | --runid | 日志记录的运行ID |
data_driven_query | --datadrivenquery | 数据驱动方法的自定义SQL |
settings_file | --settingsfile | 自定义设置JSON文件 |
log_level | --loglevel | 覆盖日志级别(信息/调试) |
no_banner | --nobanner | 抑制横幅输出 |
license_path | --license | 许可证文件路径或URL |
cloud_profile | --cloudprofile | 云存储配置文件名称 |
使用示例
PostgreSQL到CSV导出
User: "Export the 'orders' table from PostgreSQL (localhost:5432, database: sales_db,
schema: public) to CSV file at /tmp/orders.csv. Use parallel export."
Claude Code will:
1. Call suggest_parallelism_method to recommend Ctid for PostgreSQL
2. Call preview_export_command with your parameters
3. Show the command with masked passwords
4. Explain what will happen
5. Ask for confirmation
6. Execute with execute_export when you approve导出到压缩拼花地板
User: "Export the 'transactions' table from SQL Server to Parquet format
with Snappy compression, saved to /data/exports/."
Claude Code will use parquet format with parquet_compression set to Snappy.导出到S3
User: "Export the 'users' table from PostgreSQL to CSV on S3 bucket
s3://my-bucket/exports/ using my AWS profile."
Claude Code will use storage_target=s3 with cloud_profile.检查版本和功能
User: "What version of FastBCP is installed?"
Claude Code will call get_version and display the detected version,
supported source types, output formats, and available features.两步安全流程
此服务器实现了一个强制性的两步过程:
- 预览 -始终使用
preview_export_command第一 - 执行 -使用
execute_export随着confirmation: true
如果不先预览并确认,则无法执行。
安全
- 密码和连接字符串在所有输出和日志中都被屏蔽
- 隐藏的敏感标志:
--sourcepassword,--sourceconnectstring,-x,-g - 使用环境变量进行敏感配置
- 执行前仔细检查命令
- 使用所需的最低数据库权限
测试
运行测试套件:
# Run all tests
python -m pytest tests/ -v
# Run with coverage
python -m pytest tests/ --cov=src --cov-report=html项目结构
fastbcp-mcp/
src/
__init__.py
server.py # MCP server (tool definitions, handlers)
fastbcp.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许可证
此MCP服务器包装器按原样提供。FastBCP本身是Arpe.io的独立产品。
