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 分