SF Data 360 MCP服务器
Salesforce数据云的MCP服务器 204工具、SF CLI身份验证和完整的Connect API覆盖范围。
为Cursor和Claude Code等AI助手提供全面的数据云集成。
特性
| 特性 | 描述 |
|---|
| 204工具 | 全面连接API |
| SF CLI身份验证 | 无需连接应用程序设置 |
| 零配置 | 只是 sf org login web |
| 多厂别架构 | 在运行时在组织之间切换 |
关键能力
- sql查询 -对数据云执行PostgreSQL方言SQL
- 架构发现 -列出表、描述列、浏览元数据
- 分段和激活 -针对受众细分和激活的完整CRUD
- 数据管道 -管理数据流、转换和连接
- 计算洞察 -创建和查询预聚合指标
- 数据图表 -创建和遍历统一的客户档案
- AI和ML -机器学习模型、文档人工智能和语义搜索
- 身份解析 -管理规则集并查找统一ID
- 数据操作 -事件驱动的自动化和webhooks
- 数据洁净室 -管理协作、供应商和规范
- 管理和监控 -API限制、网络路由、部署状态
快速开始
先决条件
安装
git clone https://github.com/stijnhoste/sf-data-360-mcp.git
cd sf-data-360-mcp
pip install -r requirements.txt
# Authenticate with your Data Cloud org
sf org login web --alias my-dc-org
配置您的MCP客户端
添加到MCP客户端配置文件中。您可以使用以下任一方式:
选项1:项目级配置 (推荐用于团队项目)
.mcp.json # In your project root
选项2:全局配置 (适用于所有项目)
| 客户端 | 配置文件 |
|---|
| 光标 | ~/.cursor/mcp.json |
| 克劳德代码 | ~/.claude/mcp.json |
添加此配置:
{
"mcpServers": {
"datacloud": {
"command": "python",
"args": ["/absolute/path/to/sf-data-360-mcp/server.py"],
"env": {
"DC_DEFAULT_ORG": "my-dc-org"
}
}
}
}
注: 替换 /absolute/path/to/ 使用克隆存储库的实际路径。 项目级别 .mcp.json 当两者都存在时,优先于全局配置。
配置
环境变量
| 变量 | 必填 | 默认 | 描述 |
|---|
DC_DEFAULT_ORG | 默认情况下没有要使用的 | - | SF CLI组织别名 |
DC_API_VERSION | 没有 | v65.0 | Connect API的Salesforce API版本 |
DC_RETRY_TOTAL | 没有 | 3 | 瞬态故障的重试次数(5xx) |
DC_RETRY_BACKOFF | 没有 | 0.5 | 重试之间的回退系数(秒) |
DC_RATE_LIMIT_REQUESTS | 没有 | 100 | 每个速率限制窗口的最大请求数 |
DC_RATE_LIMIT_WINDOW | 没有 | 20 | 速率限制窗口(秒) |
DEFAULT_LIST_TABLE_FILTER | 没有 | % | 用于过滤表的SQLLIKE模式 |
多组织支持
如果你不设置 DC_DEFAULT_ORG,使用这些工具在运行时选择一个组织:
list_orgs() # See all authenticated orgs
set_target_org(alias) # Switch to a specific org
get_target_org() # See currently selected org
API功能
此MCP服务器使用 连接API 独占(与SF CLI身份验证配合使用),现在支持 完整的CRUD操作 对于大多数资源:
| 操作 | 支持 | 注意事项 |
|---|
| 阅读 (列表、获取、查询) | ✅ 是 | 所有资源 |
| 创建 | ✅ 是 | 大多数资源通过Connect API |
| 更新 | ✅ 是 | 所有资源 |
| 删除 | ✅ 是 | 所有资源 |
| 运行/执行 | ✅ 是 | 转型、洞察、身份解析 |
注: 一些复杂的资源可能仍然需要元数据API或设置UI来进行初始创建,但完全支持持续管理。
可用工具(共204个)
组织管理(3)
| 工具 | 说明 |
|---|
list_orgs() | 列出所有经过SF CLI身份验证的组织 |
set_target_org(alias) | 切换到其他组织 |
get_target_org() | 获取当前选定的组织 |
查询工具(6)
| 工具 | 说明 |
|---|
query(sql) | 对数据云执行SQL查询 |
query_v2(sql) | 使用V2查询API执行SQL |
get_query_batch_v2(query_id) | 从V2查询批中获取结果 |
cancel_sql_query(query_id) | 取消正在运行的SQL查询 |
validate_query(sql) | 执行前验证SQL语法 |
format_sql(sql) | 格式化SQL以提高可读性 |
模式发现(8)
| 工具 | 说明 |
|---|
list_tables() | 列出可用表格 |
describe_table(table) | 获取列名 |
describe_table_full(table) | 获取具有类型的详细模式 |
get_metadata(...) | 获取丰富的实体元数据 |
get_relationships(entity) | 为JOIN建立关系 |
get_dmo_relationships(dmo) | 获取DMO关系 |
explore_table(table) | 架构+示例+配置文件 |
search_tables(keyword) | 搜索表/列 |
分段(9)
| 工具 | 说明 |
|---|
list_segments() | 列出所有分段 |
get_segment(name) | 获取细分市场详细信息 |
get_segment_members(name) | 获取分段成员 |
count_segment(name) | 统计分段成员 |
create_segment(definition) | 创建新分段 |
update_segment(name, updates) | 更新片段 |
delete_segment(name) | 删除分段 |
deactivate_segment(name) | 停用分段 |
publish_segment(name) | 发布片段 |
激活(11)
| 工具 | 说明 |
|---|
list_activations() | 列出所有激活 |
get_activation(id) | 获取激活详细信息 |
create_activation(definition) | 创建新激活 |
update_activation(id, updates) | 更新激活 |
delete_activation(id) | 删除激活 |
get_activation_data(id) | 获取激活数据 |
list_activation_targets() | 列出激活目标 |
get_activation_target(name) | 获取激活目标详细信息 |
create_activation_target(definition) | 创建激活目标 |
update_activation_target(name, updates) | 更新激活目标 |
list_activation_external_platforms() | 列出外部平台 |
数据流(6)
| 工具 | 说明 |
|---|
list_data_streams() | 列出所有数据流 |
get_data_stream(name) | 获取流详细信息 |
create_data_stream(definition) | 创建新的数据流 |
update_data_stream(name, updates) | 更新数据流 |
delete_data_stream(name) | 删除数据流 |
run_data_stream(name) | 运行数据流 |
数据转换(13)
| 工具 | 说明 |
|---|
list_data_transforms() | 列出所有转换 |
get_data_transform(name) | 获取变换详细信息 |
create_data_transform(definition) | 创建新的转换 |
update_data_transform(name, updates) | 更新转换 |
delete_data_transform(name) | 删除转换 |
run_data_transform(name) | 运行转换 |
cancel_data_transform(name) | 取消正在运行的转换 |
retry_data_transform(name) | 重试失败的转换 |
refresh_data_transform_status(name) | 刷新转换状态 |
get_transform_run_history(name) | 获取跑步历史记录 |
get_transform_schedule(name) | 获取转换计划 |
update_transform_schedule(name, schedule) | 更新时间表 |
validate_data_transform(definition) | 验证转换定义 |
连接件(11)
| 工具 | 说明 |
|---|
list_connections() | 列出所有连接 |
get_connection(name) | 获取连接详细信息 |
get_connection_objects(name) | 获取可用对象 |
get_connection_schema(name, object) | 获取对象架构 |
get_connection_databases(name) | 获取可用数据库 |
get_connection_database_schemas(name, db) | 获取数据库架构 |
get_connection_endpoints(name) | 获取连接端点 |
list_connectors() | 列出连接器类型 |
get_connector(type) | 获取连接器详细信息 |
update_connection(name, updates) | 更新连接 |
delete_connection(name) | 删除连接 |
数据湖对象(5)
| 工具 | 说明 |
|---|
list_data_lake_objects() | 列出所有NetBackup DLO |
get_data_lake_object(name) | 获取NetBackup DLO详细信息 |
create_data_lake_object(definition) | 创建新的NetBackup DLO |
update_data_lake_object(name, updates) | 更新NetBackup DLO |
delete_data_lake_object(name) | 删除NetBackup DLO |
数据模型对象(14)
| 工具 | 说明 |
|---|
list_data_model_objects() | 列出所有DMO |
get_data_model_object(name) | 获取DMO详细信息 |
create_data_model_object(definition) | 创建新的DMO |
update_data_model_object(name, updates) | 更新DMO |
delete_data_model_object(name) | 删除DMO |
get_dmo_relationships(name) | 获取DMO关系 |
create_dmo_relationship(dmo, definition) | 建立DMO关系 |
delete_dmo_relationship(name) | 删除DMO关系 |
list_data_model_object_mappings() | 列出DMO映射 |
get_data_model_object_mapping(name) | 获取DMO映射 |
create_data_model_object_mapping(definition) | 创建DMO映射 |
delete_dmo_mapping(name) | 删除DMO映射 |
delete_data_model_field_mappings(name) | 删除字段映射 |
update_data_model_field_mappings(name, mappings) | 更新字段映射 |
数据空间(7)
| 工具 | 说明 |
|---|
list_data_spaces() | 列出所有数据空间 |
get_data_space(name) | 获取数据空间详细信息 |
create_data_space(definition) | 创建新的数据空间 |
update_data_space(name, updates) | 更新数据空间 |
get_data_space_members(name) | 在空间中获取对象 |
get_data_space_member(space, member) | 获取特定成员 |
update_data_space_members(name, members) | 更新空间成员 |
计算洞察(8)
| 工具 | 说明 |
|---|
list_calculated_insights() | 列出所有见解 |
get_calculated_insight(name) | 获取洞察细节 |
create_calculated_insight(definition) | 创造新的见解 |
update_calculated_insight(name, updates) | 更新见解 |
delete_calculated_insight(name) | 删除见解 |
run_calculated_insight(name) | 运行洞察力刷新 |
query_calculated_insight(...) | 查询洞察数据 |
get_insight_metadata(name) | 获取洞察元数据 |
数据图(7)
| 工具 | 说明 |
|---|
list_data_graphs() | 列出所有数据图 |
get_data_graph(name) | 获取数据图详细信息 |
get_data_graph_metadata() | 获取数据图元数据 |
create_data_graph(definition) | 创建新的数据图 |
delete_data_graph(name) | 删除数据图 |
refresh_data_graph(name) | 刷新数据图 |
query_data_graph(...) | 查询统一配置文件 |
身份解析(7)
| 工具 | 说明 |
|---|
list_identity_rulesets() | 列出标识规则集 |
get_identity_ruleset(name) | 获取规则集详细信息 |
create_identity_ruleset(definition) | 创建新规则集 |
update_identity_ruleset(name, updates) | 更新规则集 |
delete_identity_ruleset(name) | 删除规则集 |
run_identity_resolution(name) | 运行身份解析 |
lookup_unified_id(...) | 查找统一ID |
配置文件查询(4)
| 工具 | 说明 |
|---|
query_profile(dmo, limit, offset) | 查询配置文件记录 |
get_profile_record(dmo, id) | 获取特定的个人资料记录 |
get_profile_record_with_children(dmo, id, child) | 获取儿童的个人资料 |
get_profile_record_with_insights(dmo, id, insight) | 获取具有洞察力的个人资料 |
人工智能和机器学习-模型(6)
| 工具 | 说明 |
|---|
list_ml_models() | 列出所有ML模型 |
get_ml_model(name) | 获取模型详细信息 |
get_prediction(model, data) | 获取预测 |
update_ml_model(name, updates) | 更新ML模型 |
delete_ml_model(name) | 删除ML模型 |
list_model_artifacts() | 列出模型工件 |
get_model_artifact(name) | 获取工件详细信息 |
update_model_artifact(name, updates) | 更新工件 |
delete_model_artifact(name) | 删除工件 |
AI和ML-文档AI(6)
| 工具 | 说明 |
|---|
list_document_ai_configs() | 列出文档AI配置 |
get_document_ai_config(name) | 获取配置详细信息 |
get_document_ai_global_config() | 获取全局文档AI配置 |
extract_document_data(...) | 提取文档数据 |
run_document_ai(config, data) | 运行文档AI提取 |
generate_document_schema(config) | 生成文档架构 |
update_document_ai_config(name, updates) | 更新配置 |
delete_document_ai_config(name) | 删除配置 |
人工智能与机器学习-语义搜索(5)
| 工具 | 说明 |
|---|
list_semantic_searches() | 列出语义搜索索引 |
get_semantic_search(name) | 获取搜索索引详细信息 |
get_semantic_search_config() | 获取全局搜索配置 |
update_semantic_search(name, updates) | 更新搜索索引 |
delete_semantic_search(name) | 删除搜索索引 |
数据操作(11)
| 工具 | 说明 |
|---|
list_data_actions() | 列出事件驱动的自动化规则 |
get_data_action(name) | 获取数据操作详细信息 |
create_data_action(definition) | 创建新的数据操作 |
update_data_action(name, updates) | 更新数据操作 |
delete_data_action(name) | 删除数据操作 |
list_data_action_targets() | 列出webhook/外部目标 |
get_data_action_target(name) | 获取目标详细信息 |
create_data_action_target(definition) | 创建新目标 |
delete_data_action_target(name) | 删除目标 |
get_data_action_target_signing_key(name) | 获取目标签名密钥 |
管理与监控(9)
| 工具 | 说明 |
|---|
get_limits() | 获取API限制和使用 |
get_data_kit_component_dependencies(kit, component, type) | 获取数据包依赖关系 |
get_data_kit_deployment_status(kit, component, type) | 获取部署状态 |
undeploy_data_kit_component(kit, definition) | 取消部署数据工具包组件 |
list_private_network_routes() | 列出专用网络路由 |
get_private_network_route(id) | 获取路线详细信息 |
create_private_network_route(definition) | 创建网络路由 |
delete_private_network_route(id) | 删除网络路由 |
数据洁净室(19)
| 工具 | 说明 |
|---|
list_data_clean_room_collaborations() | 列出所有合作 |
get_data_clean_room_collaboration(id) | 获取协作详细信息 |
create_data_clean_room_collaboration(definition) | 创建协作 |
update_data_clean_room_collaboration(id, updates) | 更新协作 |
delete_data_clean_room_collaboration(id) | 删除协作 |
accept_data_clean_room_collaboration_invitation(id) | 接受邀请 |
reject_data_clean_room_collaboration_invitation(id) | 拒绝邀请 |
run_data_clean_room_collaboration(id) | 运行协作 |
list_data_clean_room_collaboration_jobs(id) | 列出协作作业 |
get_data_clean_room_query_job(collaboration, job) | 获取查询作业 |
list_data_clean_room_providers() | 列出所有提供商 |
get_data_clean_room_provider(id) | 获取提供商详细信息 |
create_data_clean_room_provider(definition) | 创建提供者 |
update_data_clean_room_provider(id, updates) | 更新提供者 |
delete_data_clean_room_provider(id) | 删除提供程序 |
list_data_clean_room_provider_templates(id) | 列出提供程序模板 |
list_data_clean_room_templates() | 列出所有模板 |
list_data_clean_room_specifications() | 列出规格 |
create_data_clean_room_specification(definition) | 创建规范 |
原始连接API(1)
| 工具 | 说明 |
|---|
connect_api_request(method, endpoint, params, body) | 生成原始Connect API请求 |
自动批准设置
对于代理工作流,自动批准只读工具:
{
"autoApprove": [
"list_orgs", "get_target_org",
"list_tables", "describe_table", "describe_table_full",
"get_metadata", "get_relationships", "get_dmo_relationships",
"explore_table", "search_tables",
"list_segments", "get_segment", "get_segment_members", "count_segment",
"list_activations", "get_activation", "get_activation_data",
"list_activation_targets", "get_activation_target", "list_activation_external_platforms",
"list_data_streams", "get_data_stream",
"list_data_transforms", "get_data_transform", "get_transform_run_history", "get_transform_schedule",
"list_connections", "get_connection", "get_connection_objects", "get_connection_schema",
"get_connection_databases", "get_connection_database_schemas", "get_connection_endpoints",
"list_connectors", "get_connector",
"list_data_lake_objects", "get_data_lake_object",
"list_data_model_objects", "get_data_model_object", "get_dmo_relationships",
"list_data_model_object_mappings", "get_data_model_object_mapping",
"list_data_spaces", "get_data_space", "get_data_space_members", "get_data_space_member",
"list_calculated_insights", "get_calculated_insight", "get_insight_metadata",
"list_data_graphs", "get_data_graph", "get_data_graph_metadata",
"list_identity_rulesets", "get_identity_ruleset",
"query_profile", "get_profile_record", "get_profile_record_with_children", "get_profile_record_with_insights",
"list_ml_models", "get_ml_model", "list_model_artifacts", "get_model_artifact",
"list_document_ai_configs", "get_document_ai_config", "get_document_ai_global_config",
"list_semantic_searches", "get_semantic_search", "get_semantic_search_config",
"list_data_actions", "get_data_action",
"list_data_action_targets", "get_data_action_target", "get_data_action_target_signing_key",
"list_private_network_routes", "get_private_network_route",
"list_data_clean_room_collaborations", "get_data_clean_room_collaboration",
"list_data_clean_room_collaboration_jobs", "get_data_clean_room_query_job",
"list_data_clean_room_providers", "get_data_clean_room_provider",
"list_data_clean_room_provider_templates", "list_data_clean_room_templates",
"list_data_clean_room_specifications",
"get_limits", "get_data_kit_component_dependencies", "get_data_kit_deployment_status",
"validate_query", "format_sql", "validate_data_transform"
]
}
认证
此项目使用 SF CLI身份验证 独家:
- 通过SF CLI进行身份验证:
sf org login web --alias my-org - 集
DC_DEFAULT_ORG 环境变量或用途 set_target_org() 工具 - 服务器从SF CLI的安全令牌存储中读取凭据
优点:
- 无需连接应用程序设置
- 无需管理客户机密
- 内置多组织支持
- SF CLI管理的令牌
API体系结构
所有工具都使用 连接API (/services/data/v65.0/ssot/*),它与SF CLI中的标准Salesforce OAuth令牌配合使用。
Connect API (/services/data/v65.0/ssot/*)
├── query-sql/* → query()
├── metadata → get_metadata(), describe_table_full()
│
├── segments/* → list_segments(), create_segment(), etc.
├── activations/* → list_activations(), create_activation(), etc.
│
├── data-streams/* → list_data_streams(), create_data_stream()
├── data-transforms/* → list_data_transforms(), create_data_transform()
├── connections/* → list_connections(), get_connection()
│
├── data-lake-objects/* → list_data_lake_objects(), create_data_lake_object()
├── data-model-objects/* → list_data_model_objects(), create_data_model_object()
├── data-spaces/* → list_data_spaces(), create_data_space()
│
├── calculated-insights/* → list_calculated_insights(), create_calculated_insight()
├── data-graphs/* → list_data_graphs(), create_data_graph()
├── identity-resolutions/* → list_identity_rulesets(), create_identity_ruleset()
├── universalIdLookup/* → lookup_unified_id()
│
├── machine-learning/* → list_ml_models(), get_prediction() ─┐
├── document-processing/* → list_document_ai_configs() │ AI & ML
├── search-index/* → list_semantic_searches() ─┘
│
├── data-actions/* → list_data_actions(), create_data_action() ─┐
├── data-action-targets/* → list_data_action_targets() │ Data Actions
├── private-network-routes/* → list_private_network_routes() ─┘
│
├── data-clean-room/* → list_data_clean_room_collaborations() ─ Clean Rooms
│
└── /services/data/v65.0/limits → get_limits() ─ Admin
贡献
看 贡献.md 作为指导方针。
许可证
MIT许可证