使用说明
Salesforce MCP服务器
模型上下文协议(MCP)服务器,通过其REST API提供与Salesforce CRM交互的工具。该服务器使AI助手能够使用SOQL查询数据,并对Leads等Salesforce对象执行CRUD操作。
特性
- SOQL查询执行:运行Salesforce对象查询语言(SOQL)查询,从Salesforce组织中获取数据
- 潜在客户管理:完成Salesforce Lead对象的CRUD操作(创建、读取、更新、删除)
- OAuth身份验证:使用OAuth 2.0密码授权流进行安全身份验证
- 自定义字段支持:处理标准和自定义Salesforce字段
先决条件
- Python>=3.14
- 具有API访问权限的Salesforce帐户
- OAuth凭据(客户端ID和客户端密钥)
安装
- 克隆存储库:
git clone <repository-url>
cd salesforceMCP
- 使用uv(推荐)或pip安装依赖项:
uv sync
- 创建一个
.env根目录中的文件,其中包含您的Salesforce凭据:
URL=your-instance.my.salesforce.com
CLIENT_ID=your_client_id
CLIENT_SECRET=your_client_secret
USERNAME=your_username
PASSWORD=your_password
配置
要将此MCP服务器与Claude Desktop或Cursor一起使用,您需要在MCP设置文件中对其进行配置。
克劳德桌面版
将以下内容添加到您的Claude Desktop配置文件中:
- MacOS:
~/Library/Application Support/Claude/claude_desktop_config.json - 窗户:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"salesforce": {
"command": "uv",
"args": [
"--directory",
"/absolute/path/to/salesforceMCP",
"run",
"main.py"
],
"env": {
"URL": "your-instance.my.salesforce.com",
"CLIENT_ID": "your_client_id",
"CLIENT_SECRET": "your_client_secret",
"USERNAME": "your_username",
"PASSWORD": "your_password"
}
}
}
}
光标
将以下内容添加到光标MCP设置文件中(~/.cursor/mcp.json 或类似):
{
"mcpServers": {
"salesforce": {
"command": "uv",
"args": [
"--directory",
"/absolute/path/to/salesforceMCP",
"run",
"main.py"
],
"env": {
"URL": "your-instance.my.salesforce.com",
"CLIENT_ID": "your_client_id",
"CLIENT_SECRET": "your_client_secret",
"USERNAME": "your_username",
"PASSWORD": "your_password"
}
}
}
}
重要提示: 替换 /absolute/path/to/salesforceMCP 使用项目目录的实际绝对路径,并填写Salesforce凭据。
添加配置后,重新启动Claude Desktop或Cursor以使更改生效。
可用工具
1. run_soql
执行SOQL查询以从Salesforce获取数据。
参数:
query(str):要执行的SOQL查询
例子:
query = "SELECT Id, Name, Email FROM Lead WHERE Status = 'Open' LIMIT 10"
注: Salesforce中的自定义对象和字段以结尾 __c
2. run_lead_operation
对Salesforce Lead对象执行CRUD操作。
操作:
create:创建新Lead(需要LastName和Company)update:更新现有Lead(需要lead_id)delete:删除潜在客户(需要lead_id)get:按ID获取潜在客户(需要lead_id)
标准字段:
lead_id:Salesforce Lead ID(更新、删除、获取时需要)last_name:负责人的姓氏(创建时需要)company:领导的公司(创建时需要)first_name:领导的名字salutation:称呼(例如“先生”、“女士”、“博士”)title:职位名称email:电子邮件地址phone:电话号码mobile_phone:手机号码fax:传真号码website:网站URLlead_source:潜在客户来源(例如,“网络”、“电话咨询”)status:潜在客户状态(例如,“开放”、“已联系”、“合格”)rating:铅等级(例如,“热”、“温”、“冷”)industry:工业annual_revenue:年收入(浮动)number_of_employees:员工人数(int)street:街道地址city城市state:州/省postal_code:邮政编码country:国家description:关于线索的说明owner_id:潜在客户所有者的Salesforce用户IDis_converted:线索是否已转换(bool)custom_fields:自定义字段词典(例如。,{"My_Field__c": "value"})
项目结构
salesforceMCP/
├── main.py # Entry point for the MCP server
├── src/
│ └── salesforce_mcp/
│ ├── objects/ # Salesforce object implementations
│ │ ├── SFObject.py # Base object class
│ │ └── LeadObject.py # Lead object operations
│ ├── services/ # Core services
│ │ └── SalesforceSession.py # Session and authentication handling
│ ├── types/ # Type definitions
│ │ ├── SFRecord.py # Base record type
│ │ └── LeadRecord.py # Lead record type
│ └── utils/ # Utility modules
│ ├── soql.py # SOQL query execution
│ ├── credentials.py # Credential management
│ └── dataClassMapper.py # Data class mapping utilities
├── tests/ # Test files
├── pyproject.toml # Project configuration
└── .env # Environment variables (not in repo)
发展
运行测试
pytest
测试覆盖率
pytest --cov=src --cov-report=html
认证
此服务器使用OAuth 2.0密码授权流进行身份验证。向Salesforce提出的每个请求都将:
- 使用您的凭据进行身份验证
.env文件 - 获取访问令牌
- 对API请求使用令牌
错误处理
服务器包括全面的错误日志记录。错误会记录到stderr中,并带有时间戳和严重级别。
依赖项
fastmcp>=2.14.1-用于构建MCP服务器的FastMCP框架mcp[cli]>=1.25.0-模型上下文协议实现requests>=2.32.5-API请求的HTTP库pytest>=9.0.2-测试框架pytest-cov>=7.0.0-测试覆盖插件pytest-mock>=3.15.1-pytest的模拟插件
安全说明
- 永远不要承诺你的
.env文件到版本控制 - 确保您的OAuth凭据安全
- 使用环境变量进行敏感配置
- 在发出请求之前验证域名
