Salesforce集成服务器

一个提供Salesforce集成功能的MCP服务器,支持灵活的OAuth认证和多种操作工具。

  • by hypn4
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 hypn4/salesforce-mcp-server

使用说明

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-无需额外工具。

  1. 将服务器配置为代理模式:
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
  1. 启动服务器:
uvx salesforce-mcp-server --transport http
  1. 配置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-无需额外工具。

  1. 配置服务器(请参阅上面的配置部分)

  2. 启动服务器:

uvx salesforce-mcp-server --transport http
  1. 添加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端点。

  1. 配置服务器(请参阅上面的配置部分)

  2. 启动服务器:

uvx salesforce-mcp-server --transport http
  1. 添加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互联应用程序设置

  1. 在Salesforce设置中,导航到 应用程序管理器
  2. 点击 新连接的应用程序
  3. 填写基本信息(姓名、联系邮箱)
  4. 启用 OAuth设置
  5. 集 回调URL 为了与您的部署相匹配:
    • 对于当地发展: http://localhost:8000/auth/callback
    • 生产: https://your-domain.com/auth/callback
  6. 选择OAuth作用域:
    • api (访问和管理您的数据)
    • refresh_token (随时执行请求)
    • offline_access (随时执行请求)
  7. 启用 支持的授权流需要代码交换(PKCE)扩展的证明密钥
  8. 保存并复制 消费者密钥 (这是你的 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

许可证

麻省理工学院