[
](https://github.com/L
LokiMCPUniverse/salesforce-mcp-server/commits)
一个高度可定制的模型上下文协议(MCP)服务器,用于将Salesforce API与生成式AI应用程序集成。
全面的Salesforce API覆盖:
灵活的身份验证:
企业级准备:
pip install salesforce-mcp-server
或者从源码安装:
git clone https://github.com/asklokesh/salesforce-mcp-server.git
cd salesforce-mcp-server
pip install -e .
创建一个.env文件或设置环境变量:
# Salesforce凭证
SALESFORCE_USERNAME=your_username@company.com
SALESFORCE_PASSWORD=your_password
SALESFORCE_SECURITY_TOKEN=your_security_token
SALESFORCE_DOMAIN=login # 或者test,或者自定义域名
# 或者使用OAuth
SALESFORCE_CLIENT_ID=your_connected_app_client_id
SALESFORCE_CLIENT_SECRET=your_connected_app_client_secret
SALESFORCE_REDIRECT_URI=http://localhost:8080/callback
# 可选设置
SALESFORCE_API_VERSION=59.0
SALESFORCE_SANDBOX=false
SALESFORCE_MAX_RETRIES=3
SALESFORCE_TIMEOUT=30
from salesforce_mcp import SalesforceMCPServer
# 初始化服务器
server = SalesforceMCPServer()
# 启动服务器
server.start()
添加到你的Claude Desktop配置中:
{
"mcpServers": {
"salesforce": {
"command": "python",
"args": ["-m", "salesforce_mcp.server"],
"env": {
"SALESFORCE_USERNAME": "your_username@company.com",
"SALESFORCE_PASSWORD": "your_password",
"SALESFORCE_SECURITY_TOKEN": "your_security_token"
}
}
}
}
执行SOQL查询以检索数据:
{
"tool": "salesforce_query",
"arguments": {
"query": "SELECT Id, Name, Email FROM Contact WHERE LastModifiedDate = TODAY",
"include_deleted": false
}
}
通过ID检索特定记录:
{
"tool": "salesforce_get_record",
"arguments": {
"object_type": "Account",
"record_id": "001XX000003DHPh",
"fields": ["Name", "Industry", "AnnualRevenue"]
}
}
创建新记录:
{
"tool": "salesforce_create_record",
"arguments": {
"object_type": "Contact",
"data": {
"FirstName": "John",
"LastName": "Doe",
"Email": "john.doe@example.com",
"AccountId": "001XX000003DHPh"
}
}
}
更新现有记录:
{
"tool": "salesforce_update_record",
"arguments": {
"object_type": "Contact",
"record_id": "003XX000004TMM2",
"data": {
"Title": "Senior Developer",
"Department": "Engineering"
}
}
}
删除记录:
{
"tool": "salesforce_delete_record",
"arguments": {
"object_type": "Contact",
"record_id": "003XX000004TMM2"
}
}
获取关于Salesforce对象的元数据:
{
"tool": "salesforce_describe_object",
"arguments": {
"object_type": "Account"
}
}
处理大量数据:
{
"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
}
}
运行Apex代码:
{
"tool": "salesforce_execute_apex",
"arguments": {
"apex_body": "System.debug('Hello from Apex!');"
}
}
跨多个对象进行搜索:
{
"tool": "salesforce_search",
"arguments": {
"search_query": "FIND {John} IN NAME FIELDS RETURNING Contact(Id, Name, Email), Account(Id, Name)"
}
}
处理大型查询结果:
{
"tool": "salesforce_query_more",
"arguments": {
"next_records_url": "/services/data/v59.0/query/01gxx000000002ABC-2000"
}
}
获取API限制和使用情况:
{
"tool": "salesforce_limits",
"arguments": {}
}
执行Salesforce报告:
{
"tool": "salesforce_run_report",
"arguments": {
"report_id": "00O1i000004Gzr0EAC",
"filters": {
"reportMetadata": {
"reportFilters": [
{
"column": "CREATED_DATE",
"operator": "greaterThan",
"value": "2023-01-01"
}
]
}
}
}
}
from salesforce_mcp import SalesforceMCPServer, OrgConfig
# 配置多个组织
orgs = {
"production": OrgConfig(
username="prod@company.com",
password="prod_password",
security_token="prod_token",
domain="login"
),
"sandbox": OrgConfig(
username="sandbox@company.com.sandbox",
password="sandbox_password",
security_token="sandbox_token",
domain="test"
)
}
server = SalesforceMCPServer(orgs=orgs, default_org="production")
from salesforce_mcp import SalesforceMCPServer, JWTAuth
# JWT承载流
jwt_auth = JWTAuth(
client_id="your_client_id",
username="your_username",
private_key_file="path/to/private_key.pem",
sandbox=False
)
server = SalesforceMCPServer(auth=jwt_auth)
from salesforce_mcp import SalesforceMCPServer, RateLimitConfig
rate_limit = RateLimitConfig(
requests_per_second=10,
burst_size=20,
wait_on_limit=True
)
server = SalesforceMCPServer(rate_limit=rate_limit)
查看examples/目录中的完整集成示例:
basic_usage.py - 简单查询和CRUD操作bulk_operations.py - 处理大量数据genai_integration.py - 与生成式AI 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错误: {e.error_code} - {e.message}")
print(f"可用字段: {e.available_fields}")
欢迎贡献!请阅读我们的贡献指南并提交拉取请求。
MIT许可证 - 查看LICENSE文件了解详情