Salesforce数据访问服务器

一个为AI代理提供安全访问Salesforce数据和操作的服务,适用于销售、营销和执行团队通过自然语言与Salesforce CRM交互。

  • by tomnagengast
  • TypeScript
  • 本地部署
  • 5 星标
  • 更新于
在 GitHub 查看 tomnagengast/mcp-server-salesforce

使用说明

Salesforce MCP服务器

一种模型上下文协议(MCP)服务器,为AI代理提供对Salesforce数据和操作的安全访问。专为销售、营销和高管团队设计,通过自然语言与Salesforce CRM进行交互。

特性

核心能力

  • 🔍 搜索与查询:跨多个对象搜索记录,执行SOQL查询,并执行全局搜索
  • 📖 读取操作:检索特定记录并浏览关系
  • 🔒 安全第一:默认情况下以只读模式启动,以进行安全测试
  • 🔐 安全认证:OAuth 2.0与适当的令牌管理集成
  • ⚡ 错误处理:全面的错误处理和详细的反馈

安全功能

  • 默认情况下为只读:服务器以安全只读模式启动
  • 可配置的写访问:仅在准备就绪时启用写入操作 SALESFORCE_READ_ONLY_MODE=false
  • 清除操作指示器:在描述中清楚地标记工具

支持的Salesforce对象

  • 账户:公司和组织记录
  • 联系人:个人联系信息
  • 潜在客户:潜在客户记录
  • 机会:销售渠道和交易
  • 病例:客户服务和支持票
  • 活动:任务和事件

快速开始

🚀 有关完整的设置说明,请参阅 设置.md

这包括:

  • Salesforce互联应用程序配置
  • Claude桌面集成
  • 分步截图和故障排除

安装选项

选项1:GitHub上的NPX

npx github:tomnagengast/mcp-server-salesforce

选项2:克隆和构建

git clone https://github.com/tomnagengast/mcp-server-salesforce.git
cd mcp-server-salesforce
npm install
npm run build

配置: 看 设置.md 了解完整的设置说明,包括Salesforce Connected App配置。

配置

环境变量

创建一个 .env 具有以下配置的文件:

# Salesforce Configuration
SALESFORCE_LOGIN_URL=https://login.salesforce.com
SALESFORCE_CLIENT_ID=your_connected_app_client_id
SALESFORCE_CLIENT_SECRET=your_connected_app_client_secret
SALESFORCE_USERNAME=your_salesforce_username
SALESFORCE_PASSWORD=your_salesforce_password
SALESFORCE_SECURITY_TOKEN=your_security_token

# For Sandbox (optional)
# SALESFORCE_LOGIN_URL=https://test.salesforce.com

# Server Configuration
PORT=3000
LOG_LEVEL=info

# Security - Server starts in READ-ONLY mode by default
SALESFORCE_READ_ONLY_MODE=true

🔒 安全说明:默认情况下,服务器以只读模式启动。集 SALESFORCE_READ_ONLY_MODE=false 只有当你对写操作感到满意时。

Claude桌面集成

将此添加到您的Claude Desktop配置中(~/Library/Application Support/Claude/claude_desktop_config.json 在 macOS 上:

对于NPX安装:

{
  "mcpServers": {
    "salesforce": {
      "command": "npx",
      "args": ["github:tomnagengast/mcp-server-salesforce"],
      "env": {
        "SALESFORCE_CLIENT_ID": "your_client_id",
        "SALESFORCE_CLIENT_SECRET": "your_client_secret",
        "SALESFORCE_USERNAME": "your_username", 
        "SALESFORCE_PASSWORD": "your_password",
        "SALESFORCE_SECURITY_TOKEN": "your_token",
        "SALESFORCE_READ_ONLY_MODE": "true"
      }
    }
  }
}

对于本地安装:

{
  "mcpServers": {
    "salesforce": {
      "command": "node",
      "args": ["/path/to/your/mcp-server-salesforce/dist/index.js"],
      "cwd": "/path/to/your/mcp-server-salesforce"
    }
  }
}

看 设置.md 获取完整的集成说明。

用法

运行服务器

# Development mode with hot reload
npm run dev

# Production mode
npm run start

可用工具

搜索工具

搜索记录 -跨多个Salesforce对象搜索

{
  "query": "Acme Corp",
  "objects": ["Account", "Contact", "Lead"],
  "limit": 20
}

soql_query -执行自定义SOQL查询

{
  "query": "SELECT Id, Name, Email FROM Contact WHERE Account.Name = 'Acme Corp'"
}

全局搜索 -对所有对象进行全局搜索

{
  "searchTerm": "john@example.com",
  "limit": 20
}

读取操作(始终可用)

获取记录 -检索特定记录

{
  "objectType": "Account",
  "recordId": "001XXXXXXXXXX",
  "fields": ["Name", "Type", "Industry"]
}

获取相关记录 -获取相关记录

{
  "objectType": "Account",
  "recordId": "001XXXXXXXXXX",
  "relationship": "Contacts",
  "limit": 20
}

获取记录历史 -查看字段历史记录

{
  "objectType": "Opportunity",
  "recordId": "006XXXXXXXXXX",
  "limit": 20
}

写入操作(需要SALESFORCE_READ_ONLY_MODE=false)

⚠️ 这些操作会修改您的Salesforce数据。仅在您对服务器的行为感到满意时启用。

create_record -创建新记录

{
  "objectType": "Contact",
  "data": {
    "FirstName": "John",
    "LastName": "Doe",
    "Email": "john@example.com"
  }
}

update_record -更新现有记录

{
  "objectType": "Account",
  "recordId": "001XXXXXXXXXX",
  "data": {
    "Phone": "+1-555-0123"
  }
}

删除记录 -删除记录

{
  "objectType": "Lead",
  "recordId": "00QXXXXXXXXXX"
}

启用写入操作

当您准备启用写操作时:

  1. 更新环境:

    # In your .env file
    SALESFORCE_READ_ONLY_MODE=false
    
  2. 或者在Claude Desktop配置中:

    {
      "mcpServers": {
        "salesforce": {
          "command": "node",
          "args": ["/path/to/your/mcp-server-salesforce/dist/index.js"],
          "env": {
            "SALESFORCE_READ_ONLY_MODE": "false",
            // ... other env vars
          }
        }
      }
    }
    
  3. 重新启动服务器 和克劳德桌面

用例

销售团队

  • 管道管理:“显示本季度结束的所有机会”
  • 客户研究:“查找Acme Corp的所有联系人及其最近的活动”
  • 领导跟进:“查找昨天贸易展的所有潜在客户”(只读)或“为昨天贸易展所有潜在客户创建任务”(写入模式)

营销团队

  • 活动分析:“显示第四季度数字营销活动的投资回报率”
  • 领先得分:“查找尚未联系到的高分潜在客户”
  • 内容性能:“哪些活动产生了最合格的潜在客户?”

执行团队

  • 收入预测:“我们下个季度按地区划分的管道是什么?”
  • 性能指标:“按本月收盘收入显示表现最佳的公司”
  • 客户健康:“列出前20名客户及其最近的参与情况”

发展

脚本

npm run build      # Build TypeScript
npm run dev        # Development with hot reload
npm run start      # Start production server
npm run lint       # Run ESLint
npm run test       # Run tests (when implemented)

项目结构

src/
├── auth/              # Salesforce authentication
├── tools/             # MCP tool implementations
│   ├── search-tools.ts    # Search and query tools
│   ├── crud-tools.ts      # CRUD operations
│   └── relationship-tools.ts # Relationship navigation
├── types/             # TypeScript type definitions
├── utils/             # Utilities and helpers
│   ├── config.ts          # Configuration management
│   ├── logger.ts          # Logging utilities
│   └── error-handler.ts   # Error handling
└── index.ts           # Main server entry point

安全

  • OAuth 2.0:使用Salesforce进行安全身份验证
  • 尊重许可:所有操作都尊重Salesforce用户权限
  • 输入验证:SOQL注射预防和输入消毒
  • 错误处理:安全的错误消息,不会暴露敏感数据

故障排除

常见问题

认证失败

  • 验证您的Salesforce凭据
  • 检查您的IP是否已在Salesforce中分配
  • 确保安全令牌是最新的

权限不足

  • 验证用户是否具有适当的对象权限
  • 检查字段级安全设置
  • 确保配置文件已启用API访问

API限值

  • 在Salesforce设置中监控API使用情况
  • 必要时实施限速
  • 考虑对大型数据集使用批量操作

贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改
  4. 运行测试和梳理
  5. 提交拉取请求

许可证

MIT许可证-有关详细信息,请参阅许可证文件。