使用说明
Salesforce MCP服务器
Salesforce Mcp服务器
一个高度可定制的模型上下文协议(MCP)服务器,用于将Salesforce API与GenAI应用程序集成。
特性
-
全面的Salesforce API覆盖范围:
- 支持自动分页的SOQL查询
- SOSL(Salesforce对象搜索语言)搜索
- 记录CRUD操作(创建、读取、更新、删除)
- 对象描述的元数据API访问
- 大型数据量的批量API操作
- Apex代码执行能力
- 报告支持过滤的API
- 组织限制和API使用监控
-
灵活的身份验证:
- OAuth 2.0 Web服务器流
- OAuth 2.0 JWT承载流
- 用户名密码流
- 互联应用支持
-
企业就绪:
- 多组织支持
- 速率限制和重试逻辑
- 全面的错误处理
- 审核日志记录
- 现场级安全尊重
安装
pip install salesforce-mcp-server
或者从源代码安装:
git clone https://github.com/asklokesh/salesforce-mcp-server.git
cd salesforce-mcp-server
pip install -e .
配置
创建一个 .env 文件或设置环境变量:
# Salesforce Credentials
SALESFORCE_USERNAME=your_username@company.com
SALESFORCE_PASSWORD=your_password
SALESFORCE_SECURITY_TOKEN=your_security_token
SALESFORCE_DOMAIN=login # or test, or your custom domain
# OR use OAuth
SALESFORCE_CLIENT_ID=your_connected_app_client_id
SALESFORCE_CLIENT_SECRET=your_connected_app_client_secret
SALESFORCE_REDIRECT_URI=http://localhost:8080/callback
# Optional Settings
SALESFORCE_API_VERSION=59.0
SALESFORCE_SANDBOX=false
SALESFORCE_MAX_RETRIES=3
SALESFORCE_TIMEOUT=30
需求
- Python 3.10或更新版本
- MCP SDK 1.27+
快速开始
运行服务器
服务器构建在MCP Python SDK的FastMCP API上,并使用stdio 运输。安装软件包,通过环境配置凭据 变量(请参阅配置),并使用以下方式启动:
salesforce-mcp
# or equivalently
python -m salesforce_mcp.server
程序化使用
from salesforce_mcp import mcp
# `mcp` is a configured `FastMCP` instance with every Salesforce tool
# already registered. Run it over stdio:
if __name__ == "__main__":
mcp.run(transport="stdio")
Claude桌面配置
添加到您的Claude Desktop配置中:
{
"mcpServers": {
"salesforce": {
"command": "salesforce-mcp",
"env": {
"SALESFORCE_USERNAME": "your_username@company.com",
"SALESFORCE_PASSWORD": "your_password",
"SALESFORCE_SECURITY_TOKEN": "your_security_token"
}
}
}
}
可用工具
1.查询记录
执行SOQL查询以检索数据:
{
"tool": "salesforce_query",
"arguments": {
"query": "SELECT Id, Name, Email FROM Contact WHERE LastModifiedDate = TODAY",
"include_deleted": false
}
}
2.获取记录
按ID检索特定记录:
{
"tool": "salesforce_get_record",
"arguments": {
"object_type": "Account",
"record_id": "001XX000003DHPh",
"fields": ["Name", "Industry", "AnnualRevenue"]
}
}
3.创建记录
创建新记录:
{
"tool": "salesforce_create_record",
"arguments": {
"object_type": "Contact",
"data": {
"FirstName": "John",
"LastName": "Doe",
"Email": "john.doe@example.com",
"AccountId": "001XX000003DHPh"
}
}
}
4.更新记录
更新现有记录:
{
"tool": "salesforce_update_record",
"arguments": {
"object_type": "Contact",
"record_id": "003XX000004TMM2",
"data": {
"Title": "Senior Developer",
"Department": "Engineering"
}
}
}
5.删除记录
删除记录:
{
"tool": "salesforce_delete_record",
"arguments": {
"object_type": "Contact",
"record_id": "003XX000004TMM2"
}
}
6.描述对象
获取Salesforce对象的元数据:
{
"tool": "salesforce_describe_object",
"arguments": {
"object_type": "Account"
}
}
7.批量操作
处理大量数据:
{
"tool": "salesforce_bulk_create",
"arguments": {
"object_type": "Contact",
"records": [
{"FirstName": "Jane", "LastName": "Smith", "Email": "jane@example.com"},
{"FirstName": "Bob", "LastName": "Johnson", "Email": "bob@example.com"}
],
"batch_size": 200
}
}
8.执行Apex
运行Apex代码:
{
"tool": "salesforce_execute_apex",
"arguments": {
"apex_body": "System.debug('Hello from Apex!');"
}
}
9.搜索记录(SOSL)
跨多个对象搜索:
{
"tool": "salesforce_search",
"arguments": {
"search_query": "FIND {John} IN NAME FIELDS RETURNING Contact(Id, Name, Email), Account(Id, Name)"
}
}
10.查询分页
处理大型查询结果:
{
"tool": "salesforce_query_more",
"arguments": {
"next_records_url": "/services/data/v59.0/query/01gxx000000002ABC-2000"
}
}
11.组织限制
获取API限制和使用:
{
"tool": "salesforce_limits",
"arguments": {}
}
12.运行报告
执行Salesforce报告:
{
"tool": "salesforce_run_report",
"arguments": {
"report_id": "00O1i000004Gzr0EAC",
"filters": {
"reportMetadata": {
"reportFilters": [
{
"column": "CREATED_DATE",
"operator": "greaterThan",
"value": "2023-01-01"
}
]
}
}
}
}
高级配置
多组织支持
通过设置前缀环境变量来配置其他组织。
例如,要暴露一个 sandbox org旁边的默认值:
SALESFORCE_USERNAME=prod@company.com
SALESFORCE_PASSWORD=prod_password
SALESFORCE_SECURITY_TOKEN=prod_token
SALESFORCE_SANDBOX_USERNAME=sandbox@company.com.sandbox
SALESFORCE_SANDBOX_PASSWORD=sandbox_password
SALESFORCE_SANDBOX_SECURITY_TOKEN=sandbox_token
SALESFORCE_SANDBOX_DOMAIN=test
每个工具都接受一个可选 org 论证;省略它的目标
默认组织由定义 SALESFORCE_DEFAULT_ORG (违约 "default").
身份验证类
这 salesforce_mcp.auth 模块暴露 UsernamePasswordAuth, OAuth2Auth,
和 JWTAuth 用于嵌入底层时 SalesforceClient 在
您自己的代码:
from salesforce_mcp import JWTAuth, SalesforceClient
auth = JWTAuth(
client_id="your_client_id",
username="your_username",
private_key_file="path/to/private_key.pem",
sandbox=False,
)
client = SalesforceClient(auth=auth)
速率限制
默认情况下启用速率限制,并通过环境变量进行调整:
SALESFORCE_RATE_LIMIT_ENABLED=true
SALESFORCE_RATE_LIMIT_REQUESTS_PER_SECOND=10
SALESFORCE_RATE_LIMIT_BURST_SIZE=20
集成示例
请参阅 examples/ 完整集成示例目录:
basic_usage.py-简单的查询和CRUD操作bulk_operations.py-处理大量数据genai_integration.py-与GenAI API集成multi_org.py-管理多个Salesforce组织oauth_flow.py-OAuth身份验证设置
错误处理
服务器提供详细的错误信息:
try:
result = server.execute_tool("salesforce_query", {
"query": "SELECT InvalidField FROM Account"
})
except SalesforceError as e:
print(f"Salesforce error: {e.error_code} - {e.message}")
print(f"Fields available: {e.available_fields}")
安全最佳实践
- 从不提交凭据 -使用环境变量或安全保管库
- 尽可能使用OAuth -比用户名/密码更安全
- 实施现场级安全 -尊重Salesforce权限
- 启用审核日志记录 -跟踪所有API操作
- 使用IP限制 -限制对已知IP范围的访问
贡献
欢迎投稿!请阅读我们的投稿指南并提交pull请求。
许可证
MIT许可证-有关详细信息,请参阅许可证文件
