使用说明
Salesforce MCP服务器
一个模型上下文协议(MCP)服务器,为具有灵活OAuth身份验证的AI代理提供Salesforce集成。
特性
- 双OAuth模式 -承载令牌验证或完整OAuth 2.1代理
- 16个MCP工具 涵盖4个类别,用于全面的Salesforce运营
- 每用户Salesforce客户端缓存 -高效的连接管理
- 双重运输方式 -STDIO用于本地客户端,HTTP用于多用户部署
- 符合RFC的OAuth -RFC 8414、RFC 9728、RFC 7591、PKCE支持
- 客户端OAuth灵活性 -支持ADK代理、Claude Code、Gemini CLI
可用工具
| 类别 | 工具 |
|---|---|
| 查询 | salesforce_query, salesforce_query_all, salesforce_query_more, salesforce_search |
| 记录 | salesforce_get_record, salesforce_create_record, salesforce_update_record, salesforce_delete_record, salesforce_upsert_record |
| 元数据 | salesforce_describe_object, salesforce_list_objects, salesforce_get_object_fields |
| 散装API | salesforce_bulk_query, salesforce_bulk_insert, salesforce_bulk_update, salesforce_bulk_delete |
先决条件
安装
选项1:uvx(推荐)
uvx salesforce-mcp-server --transport stdio
# or for HTTP mode:
uvx salesforce-mcp-server --transport http
选项2:Docker
docker pull ghcr.io/hypn4/salesforce-mcp-server
# HTTP mode (default)
docker run -p 8000:8000 \
-e SALESFORCE_CLIENT_ID=your_client_id \
-e SALESFORCE_LOGIN_URL=https://login.salesforce.com \
ghcr.io/hypn4/salesforce-mcp-server
# STDIO mode
docker run -i \
-e SALESFORCE_ACCESS_TOKEN=your_token \
-e SALESFORCE_INSTANCE_URL=https://your-domain.my.salesforce.com \
ghcr.io/hypn4/salesforce-mcp-server --transport stdio
选项3:预构建二进制文件
下载自 GitHub发布:
| 平台 | 下载 |
|---|---|
| Linux(x64) | salesforce-mcp-server-linux-amd64.tar.gz |
| Linux(ARM64) | salesforce-mcp-server-linux-arm64.tar.gz |
| macOS(ARM64) | salesforce-mcp-server-darwin-arm64.tar.gz |
| Windows(x64) | salesforce-mcp-server-windows-amd64.zip |
验证校验和:
# Download checksums-sha256.txt from the release
sha256sum -c checksums-sha256.txt
选项4:来源
git clone https://github.com/hypn4/salesforce-mcp-server.git
cd salesforce-mcp-server
cp .env.example .env
# Edit .env with your Salesforce credentials
uv sync
配置
所有配置都是通过环境变量完成的。复制 .env.example 到 .env 并根据需要进行调整。
OAuth模式
| 变量 | 默认值 | 描述 |
|---|---|---|
OAUTH_MODE |
bearer |
bearer 对于客户端处理的OAuth, proxy 用于服务器OAuth代理 |
承载模式(默认)
客户端自己处理OAuth。服务器通过Salesforce用户信息端点验证Bearer令牌。
| 变量 | 默认值 | 描述 |
|---|---|---|
SALESFORCE_INSTANCE_URL |
https://login.salesforce.com |
令牌验证URL |
代理模式
服务器充当Salesforce的OAuth 2.1+PKCE代理。提供符合RFC的端点:
/.well-known/oauth-authorization-server(RFC 8414)/.well-known/oauth-protected-resource(RFC 9728)/register(RFC 7591动态客户端注册)/authorize,/token,/auth/callback(OAuth 2.1+PKCE)
| 变量 | 必填 | 描述 |
|---|---|---|
SALESFORCE_CLIENT_ID |
是 | Salesforce Connected App客户端ID |
SALESFORCE_CLIENT_SECRET |
否 | 客户端机密(可选,请参阅下面的模式) |
SALESFORCE_LOGIN_URL |
否 | 登录URL(默认值: https://login.salesforce.com) |
BASE_URL |
否 | 服务器的公共URL(默认值: http://localhost:8000) |
OAUTH_REQUIRED_SCOPES |
否 | 逗号分隔范围(默认值: api,refresh_token) |
身份验证模式
| 模式 | SALESFORCE_CLIENT_SECRET |
使用案例 |
|---|---|---|
| 保密客户 | 设置 | 可以安全存储机密的服务器端应用程序 |
| 仅限PKCE(公共客户端) | 空/取消设置 | CLI工具、移动应用程序或无法进行秘密存储时 |
对于仅PKCE模式,请配置您的Salesforce Connected应用程序:
- ✅ 启用“需要验证密钥进行代码交换(PKCE)”
- ❌ 禁用“Web服务器流需要密码”
存储配置(代理模式)
| 变量 | 默认值 | 描述 |
|---|---|---|
OAUTH_STORAGE_TYPE |
memory |
memory 或 redis |
REDIS_URL |
redis://localhost:6379 |
Redis连接URL |
STORAGE_ENCRYPTION_KEY |
- | 用于令牌加密的Fernet密钥 |
HTTP服务器设置
| 变量 | 默认值 | 描述 |
|---|---|---|
PORT |
8000 |
HTTP服务器端口(云平台标准) |
FASTMCP_PORT |
- | HTTP服务器端口(回退,向后兼容) |
端口优先级:
PORT→FASTMCP_PORT→8000(默认)云平台(Heroku、Cloud Run、Railway等)自动设置
PORT环境变量。
Salesforce实例
| 变量 | 默认值 | 描述 |
|---|---|---|
SALESFORCE_LOGIN_URL |
https://login.salesforce.com |
用于沙盒使用 https://test.salesforce.com |
SALESFORCE_INSTANCE_URL |
https://login.salesforce.com |
令牌验证URL(用户信息端点) |
日志记录
| 变量 | 默认值 | 描述 |
|---|---|---|
LOG_LEVEL |
INFO |
DEBUG, INFO, WARNING, ERROR |
MCP集成指南
身份验证模式
此服务器支持两种OAuth模式:
承载令牌模式(默认)
标准MCP身份验证模式(如GitHub、Stripe MCP服务器):
- 服务器:通过Salesforce用户信息端点验证承载令牌
- 客户:自行处理OAuth身份验证
| 客户端类型 | OAuth处理 |
|---|---|
| ADK代理商 | 使用 auth_scheme + auth_credential 在McpToolset中 |
| Claude桌面/代码/Gemini CLI | 通过环境变量的静态访问令牌(STDIO模式) |
OAuth代理模式
具有RFC兼容发现功能的完整OAuth 2.1+PKCE代理:
- 服务器:使用Salesforce处理完整的OAuth流
- 客户:使用标准OAuth发现(兼容客户端自动)
| 客户端类型 | OAuth处理 |
|---|---|
| 克劳德桌面版 | 原生OAuth发现(自动) |
| 克劳德代码 | 原生OAuth发现(自动) |
| Gemini CLI | 原生OAuth发现(自动) |
| ADK代理商 | 带承载令牌的流式HTTPConnectionParams |
要启用代理模式,请执行以下操作:
export OAUTH_MODE=proxy
export SALESFORCE_CLIENT_ID=your_client_id
export BASE_URL=https://your-server.com
# Optional: Add client_secret for confidential client mode
# Omit for PKCE-only (public client) mode
export SALESFORCE_CLIENT_SECRET=your_client_secret
运输方式
| 模式 | 身份验证 | 用例 |
|---|---|---|
| 工作室 | 访问令牌(env-vars) | 本地开发,单用户 |
| 超文本传输协议 | 承载令牌(授权标头) | 多用户、基于web的客户端 |
STDIO模式环境变量
| 变量 | 必填 | 描述 |
|---|---|---|
SALESFORCE_ACCESS_TOKEN |
是 | Salesforce访问令牌 |
SALESFORCE_INSTANCE_URL |
是 | Salesforce实例URL(例如。, https://your-domain.my.salesforce.com) |
SALESFORCE_USER_ID |
否 | 用户ID(默认值: env_user) |
SALESFORCE_ORG_ID |
无 | 组织ID(默认值: env_org) |
SALESFORCE_USERNAME |
否 | 用户名(默认值: env_user) |
获取STDIO模式的访问令牌
使用Salesforce CLI获取您的访问令牌:
sf org display --target-org <your-org-alias>
从输出中复制 Access Token 和 Instance Url 您的配置值。
克劳德桌面版
配置文件位置:
- macOS/Linux:
~/.config/claude/claude_desktop_config.json - 窗户:
%APPDATA%\Claude\claude_desktop_config.json
OAuth代理模式(推荐)
原生OAuth 2.1+PKCE-无需额外工具。
- 将服务器配置为代理模式:
export OAUTH_MODE=proxy
export SALESFORCE_CLIENT_ID=your_connected_app_client_id
export BASE_URL=http://localhost:8000
# Optional: SALESFORCE_CLIENT_SECRET for confidential client mode
- 启动服务器:
uvx salesforce-mcp-server --transport http
- 配置Claude桌面:
{
"mcpServers": {
"salesforce": {
"url": "http://localhost:8000/mcp"
}
}
}
当您首次使用Salesforce工具时,Claude Desktop将自动发现OAuth端点并启动身份验证。
STDIO模式(静态令牌)
{
"mcpServers": {
"salesforce": {
"command": "uvx",
"args": ["salesforce-mcp-server", "--transport", "stdio"],
"env": {
"SALESFORCE_ACCESS_TOKEN": "00D...",
"SALESFORCE_INSTANCE_URL": "https://your-domain.my.salesforce.com"
}
}
}
}
克劳德代码
配置文件位置:
- 全球的:
~/.claude/settings.json - 项目:
.mcp.json
OAuth代理模式(推荐)
原生OAuth 2.1+PKCE-无需额外工具。
-
配置服务器(请参阅上面的配置部分)
-
启动服务器:
uvx salesforce-mcp-server --transport http
- 添加MCP服务器:
claude mcp add salesforce --transport http http://localhost:8000/mcp
或在中手动配置 ~/.claude/settings.json 或 .mcp.json:
{
"mcpServers": {
"salesforce": {
"url": "http://localhost:8000/mcp"
}
}
}
Claude Code将通过RFC 8414元数据自动发现OAuth端点。
STDIO模式(静态令牌)
{
"mcpServers": {
"salesforce": {
"command": "uvx",
"args": ["salesforce-mcp-server", "--transport", "stdio"],
"env": {
"SALESFORCE_ACCESS_TOKEN": "00D...",
"SALESFORCE_INSTANCE_URL": "https://your-domain.my.salesforce.com"
}
}
}
}
Gemini CLI
配置文件: ~/.gemini/settings.json
OAuth代理模式(推荐)
原生OAuth发现-Gemini CLI自动发现OAuth端点。
-
配置服务器(请参阅上面的配置部分)
-
启动服务器:
uvx salesforce-mcp-server --transport http
- 添加MCP服务器:
gemini mcp add salesforce http://localhost:8000/mcp
或在中手动配置 ~/.gemini/settings.json:
{
"mcpServers": {
"salesforce": {
"url": "http://localhost:8000/mcp"
}
}
}
Gemini CLI将自动发现OAuth端点并启动身份验证。
STDIO模式(静态令牌)
{
"mcpServers": {
"salesforce": {
"command": "uvx",
"args": ["salesforce-mcp-server", "--transport", "stdio"],
"env": {
"SALESFORCE_ACCESS_TOKEN": "00D...",
"SALESFORCE_INSTANCE_URL": "https://your-domain.my.salesforce.com"
}
}
}
}
手动运行
STDIO模式:
uvx salesforce-mcp-server --transport stdio
# or with local development:
just run
HTTP模式:
uvx salesforce-mcp-server --transport http
# or with local development:
just run-http
HTTP模式默认端点: http://localhost:8000
Salesforce互联应用程序设置
- 在Salesforce设置中,导航到 应用程序管理器
- 点击 新连接的应用程序
- 填写基本信息(姓名、联系邮箱)
- 启用 OAuth设置
- 集 回调URL 为了与您的部署相匹配:
- 对于当地发展:
http://localhost:8000/auth/callback - 生产:
https://your-domain.com/auth/callback
- 对于当地发展:
- 选择OAuth作用域:
api(访问和管理您的数据)refresh_token(随时执行请求)offline_access(随时执行请求)
- 启用 支持的授权流需要代码交换(PKCE)扩展的证明密钥
- 保存并复制 消费者密钥 (这是你的
SALESFORCE_CLIENT_ID)
发展
命令
| 命令 | 描述 |
|---|---|
just run |
在STDIO模式下运行服务器 |
just run-http |
以HTTP模式运行服务器 |
just run-debug |
使用DEBUG日志运行 |
just test |
运行测试 |
just test-cov |
运行覆盖率测试 |
just lint |
运行门楣 |
just lint-fix |
运行带自动修复功能的过梁 |
just fmt |
格式代码 |
just inspector |
使用MCP检查器进行调试 |
just tools |
列出所有已注册的MCP工具 |
just docker-build |
构建Docker镜像 |
just docker-run |
在Docker中运行(HTTP模式) |
just docker-run-stdio |
在Docker中运行(STDIO模式) |
just build-binary |
构建独立二进制文件 |
项目结构
salesforce-mcp-server/
├── src/salesforce_mcp_server/
│ ├── server.py # FastMCP server setup
│ ├── tools/ # MCP tool implementations
│ │ ├── query.py # SOQL/SOSL query tools
│ │ ├── records.py # Record CRUD tools
│ │ ├── metadata.py # Metadata tools
│ │ └── bulk.py # Bulk API tools
│ ├── oauth/ # OAuth authentication
│ │ ├── proxy.py # OAuth 2.1 proxy for Salesforce
│ │ ├── token_verifier.py # Salesforce token validation
│ │ ├── token_access.py # Token access utilities
│ │ ├── storage.py # Token storage backends
│ │ └── pkce.py # PKCE utilities
│ └── salesforce/ # Salesforce client
├── tests/
├── .env.example
├── justfile
└── pyproject.toml
许可证
麻省理工学院
