ต้นแบบ · รุ่นทดลอง: มีทุก server ในทะเบียนทางการ อัปเดตทุก 30 นาที รีวิวและบัญชีผู้ใช้จะมาในขั้นถัดไป
PopNx MCPที่รวม MCP สำหรับคนใช้ AI · อธิบายเป็นภาษาคน

Sfmc MCP Server

โดย Inefavelรุ่น 0.2.1i★ –iรันบนเครื่อง
ชื่อใน registryio.github.Inefavel/sfmc-mcp-server

ติดตั้ง

ภาพรวม

คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)

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

สามเสาของ PopNx MCP

สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน

ใช้ทำอะไรได้

ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry

  • การเชื่อมต่อ: รันบนเครื่อง
  • ช่องทาง (transport): stdio
  • หมวด: การตลาดและโซเชียล
  • ต้องใส่ค่าเหล่านี้: SFMC_SUBDOMAIN, SFMC_CLIENT_ID, SFMC_CLIENT_SECRET

ติดตั้ง

เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง

ก่อนติดตั้ง

ค่าที่ติดป้ายความลับคือกุญแจของบัญชีคุณ อย่าส่งให้ใคร และอย่าวางในแชต

ต้องเตรียมก่อน

  • npmติดตั้ง Node.js (มีคำสั่ง npx) ในเครื่อง

คุณใช้แอปไหน

เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”

เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json

{
  "mcpServers": {
    "sfmc": {
      "command": "npx",
      "args": [
        "-y",
        "sfmc-mcp-server"
      ],
      "env": {
        "SFMC_SUBDOMAIN": "ใส่ค่าของคุณ",
        "SFMC_CLIENT_ID": "ใส่ค่าของคุณ",
        "SFMC_CLIENT_SECRET": "ใส่ค่าของคุณ",
        "SFMC_ACCOUNT_ID": "ใส่ค่าของคุณ",
        "SFMC_MODE": "ใส่ค่าของคุณ"
      }
    }
  }
}

พิมพ์คำสั่งนี้ใน Terminal

claude mcp add sfmc --env SFMC_SUBDOMAIN='ใส่ค่าของคุณ' --env SFMC_CLIENT_ID='ใส่ค่าของคุณ' --env SFMC_CLIENT_SECRET='ใส่ค่าของคุณ' --env SFMC_ACCOUNT_ID='ใส่ค่าของคุณ' --env SFMC_MODE='ใส่ค่าของคุณ' -- npx -y sfmc-mcp-server

เติมค่าที่เว้นว่างไว้ก่อนรัน

เปิดใน Cursor

หรือคัดลอกค่าตั้งเอง

วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json

{
  "mcpServers": {
    "sfmc": {
      "command": "npx",
      "args": [
        "-y",
        "sfmc-mcp-server"
      ],
      "env": {
        "SFMC_SUBDOMAIN": "ใส่ค่าของคุณ",
        "SFMC_CLIENT_ID": "ใส่ค่าของคุณ",
        "SFMC_CLIENT_SECRET": "ใส่ค่าของคุณ",
        "SFMC_ACCOUNT_ID": "ใส่ค่าของคุณ",
        "SFMC_MODE": "ใส่ค่าของคุณ"
      }
    }
  }
}

เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง

เปิดใน VS Code

หรือคัดลอกค่าตั้งเอง

วางในไฟล์ .vscode/mcp.json ของโปรเจกต์

{
  "servers": {
    "sfmc": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "sfmc-mcp-server"
      ],
      "env": {
        "SFMC_SUBDOMAIN": "ใส่ค่าของคุณ",
        "SFMC_CLIENT_ID": "ใส่ค่าของคุณ",
        "SFMC_CLIENT_SECRET": "ใส่ค่าของคุณ",
        "SFMC_ACCOUNT_ID": "ใส่ค่าของคุณ",
        "SFMC_MODE": "ใส่ค่าของคุณ"
      }
    }
  }
}

เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง

ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น

ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี

ค่าที่ต้องใส่เอง

  • SFMC_SUBDOMAIN จำเป็น env
    Subdomínio da instância SFMC (a parte antes de .auth.marketingcloudapis.com)
  • SFMC_CLIENT_ID จำเป็น env
    Client ID do Installed Package (API Integration Server-to-Server)
  • SFMC_CLIENT_SECRET ความลับ จำเป็น env
    Client Secret do Installed Package
  • SFMC_ACCOUNT_ID env
    MID da Business Unit alvo (opcional; usa a BU padrão do package se omitido)
  • SFMC_MODE env
    Modo de operação: "read" (padrão) ou "write"

ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README

ทำอะไรได้บ้าง

รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง

ผลตรวจเบื้องต้นi

เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 7 พ.ย. 2569

  • ✓ ผ่าน

    ตัวตนผู้ทำตรงกับ repo

    ชื่อใน registry ยืนยันด้วยบัญชี GitHub Inefavel ซึ่งเป็นเจ้าของ repo

  • … ยังไม่ตรวจ

    ยังมีคนดูแล

    ยังไม่ได้อ่านข้อมูล repo จาก GitHub

  • … ยังไม่ตรวจ

    มีสัญญาอนุญาต (license)

    ยังไม่ได้อ่านข้อมูล repo จาก GitHub

  • – ไม่เกี่ยว

    endpoint ตอบ

    ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต

  • – ไม่เกี่ยว

    ล็อกอินแบบ OAuth

    ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน

  • … ยังไม่ตรวจ

    คำอธิบายเครื่องมือไม่มีคำสั่งแอบแฝง

    รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต

เทียบกับตัวอื่นในหมวด การตลาดและโซเชียลi

  • ดาวมากกว่า 0% ของอีก 2984 ตัวในหมวดนี้
  • ส่งรุ่นใหม่เข้า registry ล่าสุดกว่า 17% ของอีก 2984 ตัวในหมวดนี้
  • ผลตรวจเบื้องต้นดีกว่าหรือเท่ากับ 100% ของอีก 2984 ตัวในหมวดนี้

เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo

คำถามที่พบบ่อย

Sfmc MCP Server ปลอดภัยไหม?

จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น

ต้องใช้กุญแจหรือรหัสอะไรบ้าง?

ต้องใส่ค่าเหล่านี้: SFMC_SUBDOMAIN, SFMC_CLIENT_ID, SFMC_CLIENT_SECRET

ตัวนี้รันบนเครื่องหรือบนคลาวด์?

รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)

ยังมีคนดูแลอยู่ไหม?

repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (0.2.1) เข้า registry 4 เดือนที่ผ่านมา

ใช้กับโปรแกรมไหนได้บ้าง?

โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Node.js ในเครื่องด้วย

มีตัวไหนใช้แทนได้บ้าง?

ในหมวดเดียวกันมี MCP YouTube Transcript, Google Analytics MCP, BibiGPT YouTube Video Summarizer

ตัวที่ใช้แทนได้

server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว

อ่านการ์ด:★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi

MCP YouTube Transcript

โดย jkawamoto

An MCP server retrieving transcripts of YouTube videos

รันบนเครื่อง★ 495MITอัปเดต 10 วันที่ผ่านมา
ติดตั้ง

Google Analytics MCP

โดย surendranb

GA4 MCP server for AI agents: schema discovery, server-side aggregation, analysis-ready defaults.

รันบนเครื่อง★ 244MITอัปเดต 10 วันที่ผ่านมา
ติดตั้ง

AI video summarizer: summarize and transcribe YouTube, Bilibili, TikTok and podcast videos.

รันบนคลาวด์★ 137MITอัปเดต 10 วันที่ผ่านมา
ติดตั้ง

README จากผู้ทำ

เปิดอ่าน README

ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ

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.


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.LastPurchaseDate FROM Customers_Master c ORDER 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.
  1. A coluna "EmailAdress" não existe na DE "Customers_Master". → Você quis dizer "EmailAddress"?
  1. 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

npx sfmc-mcp-server

Ou instalando localmente:

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)

{

"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):

{

"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

ถาม PopNx