Sfmc Mcp Server

io.github.Inefavel由 GitHub 账号 Inefavel 发布v0.2.1更新于 Oct 24, 2026

MCP Server para Salesforce Marketing Cloud: valida queries do Automation Studio antes de rodar.

概览

AI 生成的概览

将助手连接到 Salesforce Marketing Cloud,可列出和查询数据扩展,并在运行前校验 Automation Studio 的 SQL 查询。

可以做什么
按 SFMC 方言规则和真实数据扩展架构校验 Automation Studio SQL 查询,对缺失的表和列给出修正提示,并检查目标主键缺失、不支持的语法和括号不匹配。列出数据扩展及其元数据,支持按名称过滤、分页和完整架构。按过滤、排序和分页查询数据扩展记录,每次查询最多 50 行。
适用场景
适合编写 Query Activity 的 SFMC 运营和营销人员,希望在漫长的自动化运行前几秒内发现错误,或需要在不打开 Contact Builder 的情况下查看数据扩展架构和记录数。
运行要求
通过 npx 或全局 npm 安装后在本地运行(需要 Node.js)。需要一个启用 Server-to-Server API 集成的 SFMC Installed Package,至少具备数据扩展读取和自动化读取权限。需要环境变量 SFMC_SUBDOMAIN、SFMC_CLIENT_ID 和 SFMC_CLIENT_SECRET;SFMC_ACCOUNT_ID 可选,用于指定业务单元,SFMC_MODE 默认为 read。需要访问 SFMC REST API 的网络连接。
安装前请注意
需要通过环境变量提供 SFMC API 凭据(SFMC_CLIENT_ID、SFMC_CLIENT_SECRET),不要写入提交的配置文件。默认只读,但将 SFMC_MODE 设为 write 会注册写入工具。每次工具调用都会带时间戳和参数记录到 stderr,请按数据政策重定向日志。共享的 ENT. 数据扩展不做架构校验,校验也不保证逻辑正确性或性能。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Sfmc Mcp Server,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

SFMC MCP Server

Conecte o Claude (ou qualquer client MCP) ao Salesforce Marketing Cloud. Explore Data Extensions, consulte registros e valide queries do Automation Studio antes de rodá-las.

[npm version] [License: MIT]


O problema

Quem opera SFMC conhece a rotina: você escreve uma Query Activity, salva, roda a automação — e 30 minutos depois descobre que digitou EmailAdress em vez de EmailAddress. Ou que usou um ORDER BY, que o dialeto do Automation Studio não suporta. Ou que a coluna de saída não existe na DE de destino.

O feedback loop do SFMC é medido em dezenas de minutos. Este servidor MCP reduz para segundos.

O que ele faz

ToolO que resolve
validate_sqlValida uma Query Activity antes de executar: regras do dialeto restrito do SFMC + checagem de que as DEs e colunas realmente existem
list_data_extensionsLista DEs com metadados, filtro por nome, paginação e schema completo
query_data_extensionConsulta registros com filtro, ordenação e paginação

validate_sql em ação

Você: valide essa query pra mim
SELECT c.SubscriberKey, c.EmailAdress, c.LastPurchaseDateFROM Customers_Master cORDER BY c.CreatedDate DESC
❌ INVÁLIDA — 3 erro(s) bloqueante(s).
1. ORDER BY não é suportado em Query Activities do SFMC. [linha ~3]   → Se precisar de ranking, use ROW_NUMBER() OVER (ORDER BY ...) em subquery.
2. A coluna "EmailAdress" não existe na DE "Customers_Master".   → Você quis dizer "EmailAddress"?
3. A coluna "LastPurchaseDate" não existe na DE "Customers_Master".   → Campos disponíveis: SubscriberKey, EmailAddress, FirstName, Status, CreatedDate

O que ele detecta:

Regras do dialeto — ORDER BY, CTEs (WITH), MERGE, DML/DDL, variáveis (DECLARE @), temp tables (#temp), cursores, stored procedures, FULL OUTER JOIN, parênteses desbalanceados, SELECT * arriscado, GETDATE() em fuso do servidor.

Contra o schema real — DEs inexistentes, colunas inexistentes (com sugestão de correção via distância de edição), aliases não declarados, colunas de saída incompatíveis com a DE de destino, PK do destino ausente no SELECT (a falha silenciosa mais cara do SFMC).


Instalação

bash
npx sfmc-mcp-server

Ou instalando localmente:

bash
npm install -g sfmc-mcp-server

Configuração

1. Crie um Installed Package no SFMC

Setup → Apps → Installed Packages → New → Add Component → API Integration (Server-to-Server)

Permissões mínimas (somente leitura):

  • Data Extensions: Read
  • Automations: Read

Anote o Client ID, o Client Secret e o subdomínio (a parte antes de .auth.marketingcloudapis.com).

2. Configure o Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json (macOS) %APPDATA%\Claude\claude_desktop_config.json (Windows)

json
{  "mcpServers": {    "sfmc": {      "command": "npx",      "args": ["-y", "sfmc-mcp-server"],      "env": {        "SFMC_SUBDOMAIN": "mcXXXXXXXXXXXXXXXXXXXXXX",        "SFMC_CLIENT_ID": "seu_client_id",        "SFMC_CLIENT_SECRET": "seu_client_secret",        "SFMC_MODE": "read"      }    }  }}

Reinicie o Claude Desktop. Pronto.

Múltiplas Business Units

Uma entrada por BU, cada uma com seu SFMC_ACCOUNT_ID (o MID):

json
{  "mcpServers": {    "sfmc-varejo": {      "command": "npx",      "args": ["-y", "sfmc-mcp-server"],      "env": { "SFMC_ACCOUNT_ID": "1234567", "...": "..." }    },    "sfmc-b2b": {      "command": "npx",      "args": ["-y", "sfmc-mcp-server"],      "env": { "SFMC_ACCOUNT_ID": "7654321", "...": "..." }    }  }}

Exemplos de uso

  • "Valide essa query contra a DE de destino Active_Buyers" → aponta erros antes de você perder 30 min
  • "Liste as DEs que têm 'master' no nome, com os campos" → schema completo sem abrir o Contact Builder
  • "Quantos registros ativos tem a Customers_Master?" → consulta direta com filtro
  • "Essa DE tem chave primária? Quais campos são NOT NULL?" → auditoria de schema em segundos

Segurança

  • Somente leitura por padrão. SFMC_MODE=read é o default. Tools de escrita (roadmap) só serão registradas com SFMC_MODE=write.
  • Credenciais apenas via variáveis de ambiente. Nunca commitadas, nunca em disco.
  • Log de auditoria. Toda tool call vai para stderr com timestamp e argumentos — redirecione para arquivo ou coletor conforme sua política.
  • Sem retenção. O servidor não persiste dados do SFMC.

Arquitetura

src/├── index.ts               # Entry point — registra tools, transporte stdio├── auth.ts                # OAuth client_credentials, cache de token (~20 min)├── sfmcClient.ts          # REST client com retry exponencial (429/5xx)└── tools/    ├── validateSql.ts     # Regras do dialeto + validação contra schema real    ├── listDataExtensions.ts    └── queryDataExtension.ts

Detalhes de implementação:

  • Token com cache e margem de 60s antes da expiração (SFMC expira em ~18-20 min)
  • Retry exponencial em 429/5xx — o SFMC estrangula com facilidade sob carga
  • Auth lazy: o servidor sobe mesmo sem credenciais, valida na primeira tool call
  • Paginação forçada nas consultas (máx 50 linhas) para não estourar o contexto do modelo

Roadmap

  • get_automation_status — status e histórico de execução
  • list_journeys — journeys ativas, versões, métricas
  • get_send_stats — opens, clicks, bounces
  • upsert_rows — gravação com padrão checkpoint/resume (modo write)
  • Suporte a Shared Data Extensions do Parent BU via SOAP

Limitações conhecidas

  • A validate_sql cobre as restrições conhecidas do Automation Studio e a existência de tabelas/colunas. Não garante correção lógica nem performance.
  • DEs compartilhadas (ENT.) não são validadas contra schema — vivem no Parent BU, fora do alcance da REST da BU atual.
  • Colunas não qualificadas (sem prefixo alias.) não são validadas em queries com múltiplos JOINs — resolver isso exigiria um parser SQL completo.
  • O endpoint /data/v1/customobjects é relativamente recente. Instâncias em releases antigas podem precisar do fallback SOAP.

Contribuindo

PRs bem-vindos. As áreas de maior impacto são as tools do roadmap e novas regras de validação do dialeto SFMC — se você já perdeu tempo com uma construção que o Automation Studio rejeita, abra uma issue com o caso.

Licença

MIT

来源:README.md,提交 9b13d5b

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v0.2.1最新Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分