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

Salesforce Pardot MCP

MCP Server

一个远程的Model Context Protocol (MCP)服务器,通过SSE传输提供Salesforce CRM和Pardot(营销云账户参与)工具,支持自动OAuth认证和多种读写操作。

工具数

22

提示词数

0

GitHub Stars

0

资源数

0
PythonClaude安全Claude DesktopClaude

安装说明

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

作者 / 组织

DaniilMai

提供方

DaniilMai

最后核验

2026/5/17 20:21

运行时

Python

快速接入

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

命令预览

python3 -m venv .venv

详细介绍

Salesforce+Pardot MCP服务器

用户通过以下方式连接 MCP OAuth 2.1 --Claude Desktop自动处理身份验证,无需配置。

运作原理

1. In Claude Desktop: Settings → Connectors → Add custom connector
2. Enter server URL: https://your-server.up.railway.app/sse
3. Claude Desktop opens a Salesforce login popup
4. User logs in → Done. All tools appear automatically.

Claude Desktop通过PKCE安全的OAuth自动处理令牌管理(获取、存储、刷新)。服务器上的一个互联应用程序处理所有Salesforce组织中的所有用户。

可用工具(17个只读+5个写入)

服务器运行在 默认情况下为只读模式写入工具(更新/创建)仅在以下情况下注册 ENABLE_WRITE_TOOLS=true 已设置。

Salesforce工具(sf_*)

工具模式描述
sf_queryread运行任意SOQL SELECT查询(强制只读)
sf_get_leadsread使用过滤器获取潜在客户(状态、创建时间、潜在客户来源)
sf_get_contactsread使用筛选器(姓名、电子邮件、帐户ID)获取联系人
sf_update_lead更新潜在客户字段(受保护的字段被阻止)
sf_update_contact更新联系人字段(受保护的字段被阻止)
sf_create_lead创建新的潜在客户(需要姓氏+公司)
sf_pipeline_reportread按阶段汇总的开放机会
sf_get_tasksread使用筛选器获取任务(谁/什么ID、状态、日期范围、主题)
sf_get_eventsread使用筛选器获取事件(谁/什么ID,日期时间范围)
sf_get_activity_historyread按日期排序的组合任务+事件记录

Pardot工具(pardot_*)

工具模式描述
pardot_get_prospects阅读使用过滤器(电子邮件、分数、活动)获取潜在客户
pardot_get_prospect_by_email阅读通过电子邮件地址查找单个潜在客户
pardot_update_prospect更新潜在客户字段(受保护的字段被阻止)
pardot_get_campaignsread列出所有活动
pardot_get_listsread列出所有列表
pardot_get_formsread列出所有表单
pardot_add_prospect_to_list将潜在客户添加到列表中
pardot_get_visitor_activitiesread通过类型丰富(标签+类别)和友好的名称过滤获取访问者活动(form_submit, email_open, bounce等等)
pardot_get_form_handlersread列出所有表单处理程序
pardot_get_emailsread列出电子邮件模板并发送
pardot_get_lifecycle_historyread获取潜在客户的生命周期阶段进展
pardot_set_business_unitread为当前会话设置Pardot业务部门ID

访客活动类型

pardot_get_visitor_activities 支持按友好名称过滤(activity_type_name)或数字代码(activity_type):

类别名称代码
网络click, view/form_view/page_view, error/form_error, success/form_submit/form_success, session, site_search, visit, custom_redirect1, 2, 3, 4, 5, 7, 20, 21
电子邮件email_sent, email_open, unsubscribe, bounce, spam, email_preference, opt_in, third_party_click6, 11, 12, 13, 14, 15, 16, 17
机会opportunity_created, opportunity_won, opportunity_lost, opportunity_reopen, opportunity_linked, opportunity_unlinked8, 9, 10, 18, 19, 38

每个返回的活动都丰富了 activityLabelcategory 领域。

安全

功能详细信息
默认情况下为只读写入工具禁用,除非 ENABLE_WRITE_TOOLS=true 已设置
认证承载令牌——来自MCP OAuth 2.1流的会话令牌
MCP OAuth(PKCE S256)具有强制PKCE的授权码流,定时安全验证
重定向URI验证只有 https:// 允许(+ http://localhost 对于dev);强制实施DCR注册URI
会话TTL会话令牌在24小时后过期(可通过配置 SESSION_TTL_SECONDS)
SKIP_AUTH限制SKIP_AUTH 仅在stdio模式(本地)下工作,对远程SSE忽略
速率限制每个令牌每分钟60个请求(滑动窗口)
DCR速率限制每个IP每分钟10个客户端注册请求
内存限制身份验证码(500)、注册客户端(200)、刷新令牌(1000)上限以防止DoS
安全标头HSTS、X-内容类型选项、X-帧选项、CSP default-src 'none',缓存控制 no-store
SOQL注入保护用户输入在包含在查询中之前已转义
只读执行sf_query 仅接受SELECT语句
SF保护字段OwnerId, IsConverted, IsDeleted, MasterRecordId 无法更新(不区分大小写)
Pardot保护字段email, score, grade, isDoNotEmail, isDoNotCall, salesforceId, crmContactFid, crmLeadFid 无法更新
Pardot ID验证仅对潜在客户/列表ID进行数字验证可防止路径注入
截断错误API错误消息上限为200个字符,以防止组织数据泄露
审核日志记录每个请求记录SHA-256密钥指纹
令牌加密使用Fernet静态加密的每用户OAuth令牌(AES-128-CBC)
HMAC缓存密钥客户端缓存使用HMAC哈希密钥来防止内存中的原始令牌暴露
实例URL验证只有 *.salesforce.com, *.force.com, *.salesforce.mil, *.cloudforce.com 接受
输入净化客户端名称已清理(控制字符已删除,长度有限)
集管注入保护在HTTP标头中使用之前,Pardot业务部门ID已验证为字母数字

先决条件

  • Python 3.10+ (使用 str | None 联合语法)
  • Salesforce互联应用 启用OAuth

创建互联应用

  1. 在Salesforce中: 设置→ 应用程序管理器→ 新连接的应用程序
  2. 启用OAuth设置
  3. 将回调URL设置为 https://your-server.up.railway.app/oauth/callback
  4. 添加OAuth作用域: api, refresh_token, pardot_api
  5. 保存并记录 消费者密钥消费者秘密

设置

本地开发

git clone https://github.com/DaniilMai/salesforce-pardot-mcp.git
cd salesforce-pardot-mcp

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

cp .env.example .env
# Edit .env with your Connected App credentials

python server.py
# → Listening on http://0.0.0.0:8000 (SSE)
# → Health check: http://localhost:8000/health

铁路部署

  1. 将仓库推送到GitHub(或直接将Railway连接到仓库)
  2. 从仓库创建新的铁路服务
  3. 将环境变量(见下表)设置为铁路服务变量
  4. 将健康检查路径设置为 /health
  5. 部署

包括 railway.tomlDockerfile 处理剩下的。

# Or build and run manually:
docker build -t sf-mcp .
docker run -p 8000:8000 --env-file .env sf-mcp

连接克劳德桌面

  1. 打开克劳德桌面: 设置→ 连接器→ 添加自定义连接器
  2. 输入URL: https://your-server.up.railway.app/sse
  3. 将OAuth客户端ID/密钥留空(动态客户端注册会处理它)
  4. 点击添加→ Salesforce登录弹出窗口→ Done

环境变量

变量必填描述
SF_OAUTH_CLIENT_ID连接的应用程序消费者密钥
SF_OAUTH_CLIENT_SECRET互联应用消费者机密
SF_OAUTH_REDIRECT_URIOAuth回调URL(例如。 https://your-server/oauth/callback)
SF_OAUTH_LOGIN_URLnosalesforce登录URL(默认值: https://login.salesforce.com)
ENCRYPTION_KEY用于令牌加密的Fernet密钥(见下文)
PORT服务器端口(默认值: 8000)
ENABLE_WRITE_TOOLS设置为 true 启用写入工具(默认:禁用,只读模式)
SESSION_TTL_SECONDS会话令牌生存期(秒)(默认值: 86400 --24小时)

生成加密密钥:

python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"

.env.example 查看带有注释的完整模板。

运行测试

# Unit tests (no Salesforce connection needed)
python -m pytest tests/test_security.py -v

# MCP OAuth tests (PKCE, token exchange, security hardening)
python -m pytest tests/test_mcp_oauth.py -v

# Integration tests (starts server subprocess)
python -m pytest tests/test_integration.py -v

# All tests via Docker
docker build -f Dockerfile.test -t sf-pardot-mcp-tests .
docker run --rm sf-pardot-mcp-tests

项目结构

server.py              # Entry point — FastMCP + SSE + health + OAuth routes + security headers
auth.py                # Bearer token middleware (session tokens from MCP OAuth)
user_context.py        # ContextVar for per-request user identity
token_store.py         # Fernet-encrypted per-user OAuth token storage (HMAC-keyed)
oauth.py               # Shared OAuth utilities (SF config, instance URL validation, BUID detection)
mcp_oauth.py           # MCP OAuth 2.1 Authorization Server (RFC 9728, RFC 8414, RFC 7591)
tools/
  __init__.py          # Re-exports ALL_TOOLS list (17 read + 5 write, write opt-in)
  salesforce.py        # 10 Salesforce tools (SOQL, CRUD, pipeline, activities)
  pardot.py            # 12 Pardot tools (prospects, campaigns, activities, emails, config)
tests/
  test_security.py     # Unit tests — SOQL injection, field protection, auth, rate limiting, activity types
  test_mcp_oauth.py    # MCP OAuth tests — PKCE, token exchange, DCR, redirect validation
  test_integration.py  # Integration tests — server startup, health, SSE
Dockerfile             # Production container
Dockerfile.test        # Test runner container
railway.toml           # Railway deployment config
requirements.txt       # Python dependencies
.env.example           # Environment variable template

许可证

麻省理工学院——见 许可证 了解详情。

目录标签

目录标签

PythonClaude安全客户关系管理本地部署营销自动化OAuth认证SSE传输Salesforce集成

支持客户端

Claude DesktopClaude

接入字段

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

stdio

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

oauth

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

22

资源数量(resourceCount,资源数)

0

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

0

权限和风险

stdiooauth部署方式未说明

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

安装前确认

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

来源信息

继续浏览同类 MCP