Salesforce CRM服务器

一个提供与Salesforce CRM交互工具的MCP服务器,支持通过REST API执行SOQL查询和CRUD操作。

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

使用说明

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和客户端密钥)

安装

  1. 克隆存储库:
git clone <repository-url>
cd salesforceMCP
  1. 使用uv(推荐)或pip安装依赖项:
uv sync
  1. 创建一个 .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:网站URL
  • lead_source:潜在客户来源(例如,“网络”、“电话咨询”)
  • status:潜在客户状态(例如,“开放”、“已联系”、“合格”)
  • rating:铅等级(例如,“热”、“温”、“冷”)
  • industry:工业
  • annual_revenue:年收入(浮动)
  • number_of_employees:员工人数(int)
  • street:街道地址
  • city城市
  • state:州/省
  • postal_code:邮政编码
  • country:国家
  • description:关于线索的说明
  • owner_id:潜在客户所有者的Salesforce用户ID
  • is_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提出的每个请求都将:

  1. 使用您的凭据进行身份验证 .env 文件
  2. 获取访问令牌
  3. 对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凭据安全
  • 使用环境变量进行敏感配置
  • 在发出请求之前验证域名