Salesforce集成服务器

一个全面的模型上下文协议(MCP)服务器,为AI开发工具如Claude Desktop、Cline和其他MCP兼容客户端提供无缝的Salesforce集成。

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

使用说明

Salesforce MCP服务器

一个全面的模型上下文协议(MCP)服务器,为Claude Desktop、Cline和其他MCP兼容客户端等AI开发工具提供无缝的Salesforce集成。

🚀 特性

17综合工具

🔍 查询和搜索工具

  • execute-soql -使用自动批量切换和分页执行SOQL查询
  • execute-sosl -具有结果聚合的多对象搜索
  • describe-sobject -具有智能缓存的对象元数据

⚡ Apex开发工具

  • execute-apex -匿名执行Apex并捕获调试日志
  • run-apex-tests -带覆盖率报告的Apex测试执行
  • get-apex-logs -使用筛选调试日志检索

📊 数据管理工具

  • create-record -通过自动批量切换创建单/批量记录
  • get-record -带字段选择的记录检索
  • update-record -带验证的单/批量记录更新
  • delete-record -删除单个/批量记录
  • upsert-record -基于外部ID的追加销售操作

🔧 元数据工具(基于组件)

  • list-metadata-types -发现元数据类型
  • deploy-metadata -从文件或JSON部署单个元数据组件(例如ApexClass、CustomObject)
  • deploy-bundle -从目录路径部署元数据包(例如LWC)
  • retrieve-metadata -检索单个元数据组件,并可选择保存到文件
  • check-deploy-status -检查部署的状态

🔗 连接工具

  • test-connection -连接验证和健康监测

关键能力

  • 🔄 自动批量切换 -智能选择API以实现最佳性能
  • 🔐 双重身份验证 -OAuth2和用户名/密码支持
  • ⚡ 智能缓存 -SObject元数据的1小时TTL
  • 🛡️ 类型安全 -带有运行时验证的完整TypeScript实现
  • 📝 综合录井 -详细的调试和监控
  • 🔍 原始错误暴露 -保留Salesforce的精确错误以供调试

🚀 安装

要与桌面APP(如Claude Desktop、Cline、Cursor等)一起使用,请在下面添加MCP服务器配置。

在macOS/Linux系统上:

Username/Password Authentication
{
  "mcp.servers": {
    "salesforce": {
      "command": "npx",
      "args": [
        "-y",
        "@jjar/salesforce-mcp-server"
      ],
      "env": {
        "SF_USERNAME": "your-username@company.com",
        "SF_PASSWORD": "your-password",
        "SF_SECURITY_TOKEN": "",
        "SF_LOGIN_URL": "https://login.salesforce.com"
      },
      "disabled": false,
      "alwaysAllow": [
        "test-connection",
        "execute-soql",
        "describe-sobject",
        "get-record",
        "get-apex-logs",
        "list-metadata-types"
      ]
    }
  }
}
OAuth 2.0 Authentication
{
  "mcp.servers": {
    "salesforce": {
      "command": "npx",
      "args": [
        "-y",
        "@jjar/salesforce-mcp-server"
      ],
      "env": {
        "SF_CLIENT_ID": "your-oauth2-client-id",
        "SF_CLIENT_SECRET": "your-oauth2-client-secret",
        "SF_REFRESH_TOKEN": "your-refresh-token",
        "SF_INSTANCE_URL": "https://yourorg.my.salesforce.com"
      },
      "disabled": false,
      "alwaysAllow": [
        "test-connection",
        "execute-soql",
        "describe-sobject",
        "get-record",
        "get-apex-logs",
        "list-metadata-types"
      ]
    }
  }
}

在Windows系统上:

Username/Password Authentication
{
  "mcp.servers": {
    "salesforce": {
      "command": "cmd",
      "args": [
        "/c",
        "npx",
        "-y",
        "@jjar/salesforce-mcp-server"
      ],
      "env": {
        "SF_USERNAME": "your-username@company.com",
        "SF_PASSWORD": "your-password",
        "SF_SECURITY_TOKEN": "",
        "SF_LOGIN_URL": "https://login.salesforce.com"
      },
      "disabled": false,
      "alwaysAllow": [
        "test-connection",
        "execute-soql",
        "describe-sobject",
        "get-record",
        "get-apex-logs",
        "list-metadata-types"
      ]
    }
  }
}
OAuth 2.0 Authentication
{
  "mcp.servers": {
    "salesforce": {
      "command": "cmd",
      "args": [
        "/c",
        "npx",
        "-y",
        "@jjar/salesforce-mcp-server"
      ],
      "env": {
        "SF_CLIENT_ID": "your-oauth2-client-id",
        "SF_CLIENT_SECRET": "your-oauth2-client-secret",
        "SF_REFRESH_TOKEN": "your-refresh-token",
        "SF_INSTANCE_URL": "https://yourorg.my.salesforce.com"
      },
      "disabled": false,
      "alwaysAllow": [
        "test-connection",
        "execute-soql",
        "describe-sobject",
        "get-record",
        "get-apex-logs",
        "list-metadata-types"
      ]
    }
  }
}

配置文件位置

Claude Desktop
  • 视窗: %APPDATA%\Claude\claude_desktop_config.json
  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Cline (VS Code)
  • 视窗: %APPDATA%\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.json
  • macOS: ~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
  • Linux: ~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json

⚠️ 重要:添加或修改MCP服务器配置后,必须重新启动VS Code才能使更改生效。

Cursor
  • 视窗: %USERPROFILE%\.cursor\mcp.json
  • macOS: ~/.cursor/mcp.json
  • Linux: ~/.cursor/mcp.json

工具安全等级

✅ 汽车认证安全(alwaysAllow)

  • test-connection -连接验证(只读)
  • execute-soql -SOQL查询(只读)
  • describe-sobject -元数据检查(只读)
  • get-record -单记录检索(只读)
  • get-apex-logs -调试日志访问(只读)
  • list-metadata-types -元数据类型发现(只读)

⚠️ 需要手动批准

  • create-record, update-record, delete-record, upsert-record -数据修改
  • deploy-metadata -元数据部署
  • execute-apex, run-apex-tests -代码执行
  • execute-sosl -搜索操作(可能需要大量资源)
  • retrieve-metadata -元数据检索(可能很大)

认证

用户名/密码验证

  1. 从Salesforce安装程序获取安全令牌→ 个人信息→ 重置安全令牌(仅当您的IP不受信任时才需要)
  2. 按照配置部分所示设置环境变量
  3. 使用 https://login.salesforce.com 用于生产或 https://test.salesforce.com 用于沙盒

💡 安全令牌:仅当Salesforce需要您的连接时才添加安全令牌。如果不离开 SF_SECURITY_TOKEN 空的。

OAuth2身份验证

  1. 在Salesforce设置中创建连接应用程序
  2. 配置OAuth设置并获取客户端凭据
  3. 使用OAuth2流生成刷新令牌
  4. 按照配置部分所示设置环境变量

🏗️ 建筑

核心组件

  • 认证管理器 -双OAuth2/用户名密码支持
  • 连接管理器 -带有健康监测的Singleton模式
  • 工具类 -按功能(查询、Apex、数据、元数据)组织
  • 错误处理程序 -带上下文的全面错误格式化
  • 缓存管理器 -基于TTL的缓存用于性能优化

性能特点

  • 自动批量切换 -大型操作自动使用批量API
  • 智能高速缓存 -SObject元数据缓存1小时
  • 连接重用 -跨所有操作的单一连接
  • 轮询优化 -高效监控长时间运行的操作

🧪 测试

# Test individual tools
node tests/test-query-tools.js
node tests/test-data-tools.js
node tests/test-apex-tools.js
node tests/test-metadata-tools.js

🤝 贡献

  1. 复刻仓库
  2. 创建要素分支(git checkout -b feature/amazing-feature)
  3. 提交您的更改(git commit -m 'Add amazing feature')
  4. 推到分支(git push origin feature/amazing-feature)
  5. 打开拉取请求

🔗 相关项目

👨‍💻 作者

雅罗斯瓦夫·贾沃斯基

🤖 开发信贷

该实现的一部分是在Claude Sonnet 4的帮助下使用Cline VS Code扩展开发的,展示了人工智能辅助开发在创建全面的开发工具方面的强大功能。

📄 许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。