Token导航 LogoToken导航TokenDH.com
Sfmc Single Tenant MCP logo
安全风控stdio官方级别未说明来源级核验

Sfmc Single Tenant MCP

MCP Server

一个基于FastMCP和OAuth 2.1的Salesforce营销云集成服务器,提供数据扩展查询、订阅者管理、邮件发送等功能,支持多业务单元账户管理。

工具数

5

提示词数

0

GitHub Stars

0

资源数

0
PythonClaude数据管理Claude DesktopClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

idoll

提供方

idoll

最后核验

2026/5/17 20:22

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

python -m venv venv

详细介绍

SFMC MCP服务器

用于Salesforce Marketing Cloud(SFMC)集成的模型上下文协议(MCP)服务器,使用 FastMCPOAuth 2.1,设计用于作为公共服务部署在Heroku上。

概述

此MCP服务器通过模型上下文协议提供对Salesforce Marketing Cloud API的安全、经过身份验证的访问,使您能够:

  • 列出并查询数据扩展名
  • 检索用户信息
  • 通过SFMC发送电子邮件
  • 管理多业务部门(BU)账户
  • 使用Claude.AI将SFMC操作集成到AI工作流程中
  • 通过OAuth安全的HTTP/SSE从任何地方访问SFMC功能

特性

可用的MCP工具

注: 所有工具现在都需要JWT身份验证。每个用户的OAuth令牌用于API调用。所有工具都支持多业务部门(BU)帐户。

  1. list_data_扩展名 -使用经过身份验证的用户权限检索所有数据扩展名(支持多业务单元)
  2. 查询_数据_扩展 -使用用户的OAuth令牌查询特定的数据扩展数据(支持多业务单元)
  3. get_订阅者 -检索具有用户权限的订户列表(支持多BU)
  4. send_邮件 -使用经过身份验证的用户的SFMC帐户发送电子邮件(支持多业务部门)
  5. 列表_业务_单位 -发现经过身份验证的用户可以访问哪些业务部门(返回BU ID以供其他工具使用)

多业务部门支持

对于拥有多个业务部门的企业SFMC账户:

  • 从OAuth令牌中自动检测到BU ID
  • 可选的 business_unit_id 所有工具上的参数
  • 每个业务单元单独的令牌存储
  • MULTI_BU_SUPPORT.md 获取详细文档

先决条件

  • Python 3.11+
  • 具有API访问权限的Salesforce营销云帐户
  • SFMC API凭据(客户端ID、客户端机密、子域、帐户ID)
  • Heroku帐户(用于云部署)

建筑

此服务器使用 FastMCP (MCP服务器的高级Python框架) OAuth 2.1委托身份验证,使其作为安全的公共HTTP服务可访问。与需要本地执行的基于stdio的MCP服务器不同,此服务器可以部署到云端,并通过HTTP/SSE从任何地方访问。

主要特点

  • OAuth 2.1委托流:用户使用自己的SFMC帐户进行身份验证
  • FastMCP框架:内置SSE/HTTP传输的高级MCP服务器框架
  • API直接集成:无FuelSDK依赖性-使用本机REST/SOAP API
  • 多业务部门支持:跨多个SFMC业务部门无缝工作
  • 加密令牌存储:使用Fernet加密在静止状态下加密的用户令牌
  • PostgreSQL数据库:安全、可扩展的令牌和用户管理

项目结构

SFMC MCP/
├── src/                   # Source code
│   ├── server.py         # Main FastMCP application
│   ├── core/             # Core SFMC functionality
│   │   ├── config.py     # Basic server config
│   │   └── sfmc_client.py # Direct REST/SOAP API client
│   ├── auth/             # OAuth 2.1 authentication
│   │   ├── config.py     # OAuth settings
│   │   ├── crypto.py     # Token encryption (Fernet)
│   │   ├── fastmcp_oauth.py # FastMCP OAuth handler
│   │   ├── jwt.py        # JWT token management
│   │   ├── models.py     # Database models (User)
│   │   └── state.py      # OAuth state management
│   └── utils/            # Utility scripts
│       └── generate_keys.py # Key generation helper
├── tests/                # Test suite
│   ├── unit/            # Unit tests
│   ├── integration/     # Integration tests
│   └── TESTING_GUIDE.md # Testing documentation
├── docs/                 # Documentation
│   └── AI Generated Docs/ # AI-generated docs (gitignored)
├── pyproject.toml        # Project config & dependencies
├── Makefile              # Development commands
├── .pre-commit-config.yaml # Code quality hooks
└── requirements.txt      # Production dependencies

本地设置

快速开始使用Make

# Install dependencies
make install-dev

# Run tests
make test

# Format code
make format

# Run linters
make lint

# Start development server
make run

手动设置

1.克隆存储库

git clone git@github.com:idoll_sfemu/SFMC_MCP.git
cd SFMC_MCP

2.创建虚拟环境

python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

3.安装依赖项

pip install -r requirements.txt

4.配置环境变量

复制示例环境文件并填写您的SFMC OAuth凭据:

cp env_oauth.example .env

编辑 .env 使用您的SFMC OAuth凭据并生成安全密钥:

# Generate secure keys
python src/utils/generate_keys.py

# Then edit .env with:
# - SFMC OAuth credentials (Client ID, Client Secret, Subdomain)
# - Generated JWT_SECRET_KEY
# - Generated ENCRYPTION_KEY
# - Generated STATE_SECRET_KEY
# - SERVER_BASE_URL (e.g., http://localhost:5000 for local dev)
# - DATABASE_URL (defaults to SQLite for local dev)

注: 对于本地OAuth测试,您需要使用隧道服务,如 ngrok 因为SFMC要求OAuth回调使用HTTPS,并且不支持 localhost.

5.初始化数据库

# Database tables will be created automatically on first run
python -m src.server

6.在本地运行服务器

启动FastMCP服务器:

make run
# or
python -m src.server

服务器将在以下位置可用:

  • 主要API: http://localhost:5000/
  • 健康检查: http://localhost:5000/health
  • MCP端点: http://localhost:5000/mcp
  • OAuth授权: http://localhost:5000/auth/authorize

Heroku部署

方法1:Heroku命令行界面

  1. 安装Heroku命令行界面 (如果尚未安装)
   brew install heroku/brew/heroku  # macOS
  1. 登录Heroku
   heroku login
  1. 创建Heroku应用程序
   heroku create your-sfmc-mcp-server
  1. 添加PostgreSQL数据库
   heroku addons:create heroku-postgresql:essential-0
  1. 生成和设置环境变量
   # Generate secure keys locally
   python src/utils/generate_keys.py

   # Set OAuth config
   heroku config:set SALESFORCE_CLIENT_ID=your_client_id
   heroku config:set SALESFORCE_CLIENT_SECRET=your_client_secret
   heroku config:set SALESFORCE_SUBDOMAIN=your_subdomain
   heroku config:set SERVER_BASE_URL=https://your-app-name.herokuapp.com

   # Set security keys (from generate_keys.py output)
   heroku config:set JWT_SECRET_KEY=generated_jwt_key
   heroku config:set ENCRYPTION_KEY=generated_encryption_key
   heroku config:set STATE_SECRET_KEY=generated_state_key

   # Set CORS (optional, defaults to Claude.ai)
   heroku config:set ALLOWED_ORIGINS=https://claude.ai,https://api.anthropic.com
  1. 部署
   git push heroku main
  1. 扩大Dyno
   heroku ps:scale web=1
  1. 验证部署
   heroku open
   heroku logs --tail

方法2:部署按钮

点击下面的按钮直接部署到Heroku:

![Deploy](https://heroku.com/deploy)

在安装过程中,系统将提示您输入SFMC凭据。

正在获取SFMC API凭据

  1. 登录Salesforce营销云
  2. 导航至 设置 > 应用 > 已安装的软件包
  3. 点击 创建新包
  4. 添加具有所需权限的API集成组件:

- 电子邮件:阅读、写作、发送 - 网络:读,写 - 联系人:读、写 - 数据扩展:读、写

  1. 保存并记下:

- 客户端ID - 客户端密钥 - 子域(来自您的SFMC URL,例如。, mc123456789) - 帐户ID(MID)

用法

认证流程

  1. 用户启动OAuth:用户导航到 /auth/authorize?client_id=
  2. SFMC登录:用户使用其SFMC帐户进行身份验证
  3. 代币兑换:服务器接收OAuth令牌并将其加密存储
  4. JWT发布:服务器向用户/客户端发出JWT
  5. MCP工具:用户在工具调用中包含JWT,以便对SFMC API进行身份验证访问

API终点

  • GET / -服务器信息和可用工具
  • GET /health -健康检查端点
  • GET /mcp -SSE通信的MCP端点
  • GET /auth/authorize -使用SFMC启动OAuth流
  • GET /auth/callback -OAuth回调端点(内部)
  • GET /.well-known/oauth-authorization-server -OAuth元数据(RFC 8414)

访问服务器

一旦部署到Heroku,您的服务器将通过HTTPS公开访问:

https://your-app-name.herokuapp.com/

使用MCP客户端

配置您的MCP客户端(例如Claude Desktop)以通过SSE传输进行连接:

Claude Desktop的配置示例:

{
  "mcpServers": {
    "sfmc": {
      "url": "https://your-app-name.herokuapp.com/mcp",
      "transport": "sse",
      "authentication": {
        "type": "oauth2",
        "authorizationUrl": "https://your-app-name.herokuapp.com/auth/authorize"
      }
    }
  }
}

对于本地开发(使用ngrok For OAuth):

{
  "mcpServers": {
    "sfmc": {
      "url": "https://your-ngrok-url.ngrok.io/mcp",
      "transport": "sse",
      "authentication": {
        "type": "oauth2",
        "authorizationUrl": "https://your-ngrok-url.ngrok.io/auth/authorize"
      }
    }
  }
}

注: 所有工具调用都需要JWT身份验证。OAuth流将自动向授权客户端提供此令牌。

使用cURL进行测试

您可以直接测试服务器端点:

# Check server status
curl https://your-app-name.herokuapp.com/

# Health check
curl https://your-app-name.herokuapp.com/health

# View API documentation
open https://your-app-name.herokuapp.com/docs

通过MCP调用工具示例

一旦通过MCP客户端连接:

列表数据扩展名:

{
  "tool": "list_data_extensions",
  "arguments": {}
}

查询数据扩展名:

{
  "tool": "query_data_extension",
  "arguments": {
    "customer_key": "MyDataExtension",
    "filter_clause": "EmailAddress = 'test@example.com'"
  }
}

获取订阅者:

{
  "tool": "get_subscribers",
  "arguments": {
    "limit": 50
  }
}

发送电子邮件:

{
  "tool": "send_email",
  "arguments": {
    "subscriber_key": "12345",
    "email_address": "recipient@example.com",
    "email_name": "Welcome Email"
  }
}

监控

健康检查端点

服务器提供多个端点用于监控:

  • GET / -服务器信息、版本和可用工具
  • GET /health -简单的健康检查(返回 {"status": "healthy"})
  • GET /docs -交互式API文档

访问已部署的服务器:

# Health check
curl https://your-sfmc-mcp-server.herokuapp.com/health

# Server info
curl https://your-sfmc-mcp-server.herokuapp.com/

# Open interactive docs in browser
open https://your-sfmc-mcp-server.herokuapp.com/docs

日志

查看Heroku日志:

heroku logs --tail

演出

带有SSE传输的FastMCP提供:

  • 低延迟HTTP通信
  • 自动重新连接处理
  • 适用于多个并发客户端的可扩展架构
  • 内置OAuth 2.1身份验证
  • 加密令牌存储以确保安全

故障排除

常见问题

  1. 身份验证错误

- 验证您的SFMC凭据是否正确 - 确保API包具有必要的权限 - 检查子域是否与SFMC实例匹配

  1. 连接超时

- 验证SFMC API端点URL - 检查网络连接 - 查看Heroku日志以了解详细错误

  1. 模块导入错误

- 确保所有依赖项都在 requirements.txt - 如果需要,重建Heroku应用程序: heroku restart

安全考虑

  • 永不承诺 .env 文件或凭据到Git
  • 对敏感数据使用Heroku配置变量
  • 定期轮换API证书
  • 对生产使用实施限速
  • 定期审查SFMC API权限

贡献

  1. 分叉存储库
  2. 创建要素分支(git checkout -b feature/amazing-feature)
  3. 提交您的更改(git commit -m 'Add amazing feature')
  4. 推到分支(git push origin feature/amazing-feature)
  5. 打开拉取请求

许可证

该项目根据MIT许可证获得许可。

支持

对于问题和疑问:

  • 在GitHub上打开一个问题
  • 查看SFMC API文件:https://developer.salesforce.com/docs/marketing/marketing-cloud/guide/apis.html
  • 审查MCP规范:https://modelcontextprotocol.io/

技术栈

  • FastMCP -MCP服务器的高级Python框架
  • OAuth 2.1 -委托身份验证流程
  • SSE(服务器发送事件) -实时HTTP通信(内置于FastMCP中)
  • Uvicorn -闪电般快速的ASGI服务器
  • SQLAlchemy 2.0 -异步ORM用于数据库操作
  • PostgreSQL -生产数据库(Heroku)
  • 直接SFMC API -本地REST和SOAP集成(无FuelSDK)
  • 密码学(Fernet) -令牌的对称加密
  • PyJWT -JWT令牌生成和验证

致谢

目录标签

目录标签

PythonClaude数据管理营销云集成本地部署邮件服务OAuth认证多业务单元支持

支持客户端

Claude DesktopClaude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

oauth

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

5

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiooauth部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP