mcpField
S
Salesforce Cloud

Salesforce Cloud

本地服务
github.com商业与营销68 周前更新

关于 Salesforce Cloud

Salesforce Cloud 是面向销售团队和分析人员的 Salesforce MCP 服务。它将 CRM 操作与商机洞察、对话分析、SOQL 查询和业务文档生成结合起来。

主要功能

  1. 01搜索 Salesforce 字段和记录
  2. 02执行分页 SOQL 查询
  3. 03创建、更新和删除记录
  4. 04分析商机参与度与模式
  5. 05生成业务案例和摘要
  6. 06查看对象及字段元数据

适用场景

  1. 01按灵活条件查找商机
  2. 02检查商机互动情况及缺失的关键联系人
  3. 03将商机与成功案例进行比较
  4. 04准备面向管理层的业务案例文档

MCP 相关

向 MCP 客户端提供 Salesforce 搜索、元数据、SOQL、记录管理和商机分析工具,并支持访问 Salesforce 数据。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"aaronsb-salesforce-cloud": {
"command": "npx",
"args": [
"-y",
"@aaronsb/salesforce-cloud-mcp"
],
"env": {
"SF_CLIENT_ID": "<SF_CLIENT_ID>",
"SF_CLIENT_SECRET": "<SF_CLIENT_SECRET>",
"SF_USERNAME": "<SF_USERNAME>",
"SF_PASSWORD": "<SF_PASSWORD>",
"SF_LOGIN_URL": "<SF_LOGIN_URL>"
}
}
}
}
启动命令npx -y @aaronsb/salesforce-cloud-mcp
需要配置的环境变量
SF_CLIENT_ID密钥Salesforce Connected App client ID
SF_CLIENT_SECRET密钥Salesforce Connected App client secret
SF_USERNAMESalesforce username (if set, uses password flow; otherwise client credentials flow)
SF_PASSWORD密钥Salesforce password (required with SF_USERNAME for password flow)
SF_LOGIN_URLYour Salesforce My Domain URL (e.g., https://company.my.salesforce.com)

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@aaronsb/salesforce-cloud-mcp0.8.2

工具

18

收录的工具列表 · 更新于 2 周前

参数类型必填说明
detailenum否响应详细程度(默认:summary)summary | full
onErrorenum否错误处理:bail(默认)会在首次失败时停止,continue 会继续执行剩余操作bail | continue
operationsarray是要按顺序执行的操作列表(最多 16 项)

详细介绍

🌩️ Salesforce MCP 服务

此 MCP(模型上下文协议)服务提供由 AI 驱动的工具,可用于与 Salesforce 交互,具备商机情报、对话分析、业务案例生成和标准 CRUD 操作等功能。支持分页,并针对 AI 工作流优化了响应结构。

🎯 这对你意味着什么

想象一下,有一位销售专家能立即了解你所有交易的情况,并为你提供制胜策略。这就是这个 AI 如何利用你的 Salesforce 数据为你提供帮助。

💬 自然对话,无需技术技能

你说: “显示所有处于提案阶段、金额超过 10 万美元的 Microsoft 交易”
AI 会: 搜索整个 Salesforce 数据库,并返回符合条件的商机

你说: “Acme 交易的互动情况怎么样?我们联系到合适的人了吗?”
AI 会: 分析你所有的通话、电子邮件和活动,为你提供互动情况洞察

你说: “帮我找找与这个已赢得的商机类似的交易”
AI 会: 扫描你的数据库,查找类似的成功交易和成功模式

你说: “为这个商机创建一份业务案例文档”
AI 会: 生成一份可供高管使用的专业 PDF

🚀 真实对话示例

场景: “Acme Corp 这笔交易让我很头疼,谈判已经陷入停滞 2 个月了。”

AI 回复: “让我分析一下 Acme 商机……我发现过去 3 周互动有限。你和采购部门通了 2 次电话,但还没有联系上决策者。类似的停滞交易在获得高管赞助人参与后都取得了进展。我找到 3 笔可比交易,安排高管简报会后都推动了交易进展。这是一份你可以使用的业务案例文档……”


场景: “经理想知道为什么我们的云迁移交易需要这么长时间才能成交。”

AI 回复: “正在分析你的云迁移商机……平均销售周期比行业标准长 40%。模式显示,交易会卡在技术评估阶段。成功的云业务平均会提前 2 周让解决方案架构师参与进来。我建议尽早引入技术资源……”

✨ 你将获得
  • 🔍 智能搜索:用自然语言查找任何商机
  • 💬 互动分析:了解你正在联系谁,以及还缺少哪些人
  • 🧠 战略洞察:根据类似的成功交易获取建议
  • 📊 销售渠道情报:了解销售渠道的健康状况和转化模式
  • 📋 专业文档:生成业务案例和高管摘要
  • 📈 绩效分析:了解哪些做法有效,哪些方面需要关注

神奇之处: 你只需自然对话。AI 会自动连接到你的 Salesforce,分析数百万个数据点,发现规律,并提供可执行的建议。它就像一支销售情报团队、一位数据分析师和一位业务顾问合而为一,组成一个对你的 Salesforce 了如指掌的 AI。

💬 实时聊天示例
👤 你你能帮我查找所有方案工程师包括 Aaron Rochelle 的未结 Salesforce 商机吗?
🤖 AI 助手我来帮你搜索 Aaron Rochelle 作为方案工程师参与的 Salesforce 商机。我会在你的 Salesforce 数据库中运行查询,查找符合条件的商机……

📊 找到 3 个商机:
• Cloud Migration - Acme Corp($250K,方案阶段)
• Digital Transformation - TechFlow($180K,资格审查阶段)
• Infrastructure Upgrade - GlobalTech($320K,谈判阶段)

👤 你多介绍一些 Acme Corp 的商机信息
🤖 AI 助手以下是 Acme Corp 的 Cloud Migration 商机的关键详情:

💼 商机详情:
• 客户: Acme Corp
• 金额: $250,000
• 阶段: 方案阶段
• 成交日期: 2024-03-15
• 决策人: Sarah Johnson(IT 总监)

🔍 情报分析:
• 类似云服务交易在方案阶段平均耗时 45 天
• 若及早与高管赞助人建立联系,赢单率为 73%
• 竞争对手: AWS(主要威胁)
• 下一步行动: 安排一次技术深度研讨

👤 你我们赢得过哪些类似交易?帮我看看其中的规律
🤖 AI 助手我找到了你们在过去 12 个月赢得的 8 笔类似云迁移交易。以下是其中的主要规律:

🎯 成功规律:
• 平均交易金额: $275K(当前交易为 $250K)
• 67% 的交易在第 14 天前有方案架构师参与
• 89% 的交易包含试点/POC 阶段
• 78% 的演示有高管赞助人参加

📋 建议: 本周安排 Aaron 与他们的 DevOps 团队进行一次技术深度研讨。根据类似的赢单经验,提出为期 2 周的试点将使成交概率提高 34%。

📄 需要我为这个商机生成一份商业案例文档吗?

🤔 什么是 MCP?

模型上下文协议(MCP)是一种标准化方式,让 AI 模型能够与外部工具和资源交互。MCP 服务通过一致的接口提供特定功能,供 AI 模型使用。此 Salesforce MCP 服务允许 AI 模型以结构化的方式与 Salesforce 数据和操作交互。

🚀 安装

npm(推荐)
# Run directly with npx
npx @aaronsb/salesforce-cloud-mcp

# Or install globally
npm install -g @aaronsb/salesforce-cloud-mcp
从源代码安装
git clone https://github.com/aaronsb/salesforce-cloud.git
cd salesforce-cloud
npm install
npm run build
node build/index.js

⚙️ 配置

此服务需要在 Claude 桌面应用的配置文件中进行配置。在 Linux 上,该文件位于 ~/.config/Claude/claude_desktop_config.json。在 macOS 上,文件位于 ~/Library/Application Support/Claude/claude_desktop_config.json。

将以下配置添加到配置文件中的 mcpServers 对象:

{
  "mcpServers": {
    "salesforce-cloud": {
      "command": "node",
      "args": ["/path/to/salesforce-cloud/build/index.js"],
      "env": {
        "SF_CLIENT_ID": "your_client_id",
        "SF_CLIENT_SECRET": "your_client_secret",
        "SF_USERNAME": "your_salesforce_username",
        "SF_PASSWORD": "your_salesforce_password",
        "SF_LOGIN_URL": "https://login.salesforce.com"
      }
    }
  }
}
必需的环境变量
  • SF_CLIENT_ID:你的 Salesforce OAuth 客户端 ID
  • SF_CLIENT_SECRET:你的 Salesforce OAuth 客户端密钥
  • SF_USERNAME:你的 Salesforce 用户名
  • SF_PASSWORD:你的 Salesforce 密码
  • SF_LOGIN_URL:Salesforce 登录 URL(可选,默认为 https://login.salesforce.com)

获取这些凭据的步骤:

  1. 在你的 Salesforce 组织中进入 Setup
  2. 导航至 App Manager
  3. 创建一个新的 Connected App
  4. 启用 OAuth 设置
  5. 添加所需的 OAuth 范围
  6. 保存并等待激活
  7. 复制生成的 Consumer Key(Client ID)和 Consumer Secret(Client Secret)

🎯 使用自定义字段

构建查询或处理 Salesforce 数据时,务必了解许多引用的字段可能是特定于你的 Salesforce 实例的自定义字段。以下是你需要了解的内容:

了解自定义字段
  • Salesforce 中的自定义字段在其 API 名称末尾带有 __c
  • 界面中显示为“实施状态”的字段,在数据中可能存储为“Implementation_Status__c”
  • 自定义字段可以表示组织特有的业务概念
最佳实践
  1. 对象元数据分析:

    • 使用 describe_object 工具并设置 includeFields: true,检查标准字段和自定义字段
    • 在标准字段和自定义字段列表中查找符合意图的字段
    • 将易于理解的字段名称映射到其实际 API 名称
  2. 字段类型考量:

    • 自定义字段可以是多种类型(文本、选项列表、查找等)
    • 了解字段类型有助于构建合适的查询
    • 自定义字段可能通过查找关系引用其他自定义对象
  3. 查询构建:

    • 构建能够处理标准字段和自定义字段的查询
    • 查询前使用字段元数据验证字段是否存在
    • 考虑对象之间的关系,尤其是使用自定义查找字段时
示例

如果要搜索“项目状态”:

  1. 首先,检查对象的字段以找到实际字段名称:
{
  "objectName": "Opportunity",
  "includeFields": true
}
  1. 查找与意图匹配的字段,例如“Project_Status__c”或类似的自定义字段
  2. 在查询中使用找到的字段名称:
{
  "query": "SELECT Id, Name, Project_Status__c FROM Opportunity"
}

🛠️ 工具

Salesforce 核心操作
search_fields

当你知道要查询什么,但不知道 API 名称时,查找承载相关概念的字段。此工具按匹配强度排序,根据关键字搜索已发现的字段目录(ADR-302)中的字段 API 名称、标签和帮助文本。

{
  term: string;             // Required: matched against field name, label, help text
  objectName?: string;      // Optional: scope to one object (default: all core objects)
  includeValues?: boolean;  // Optional: return active picklist values for matches (default: false)
  minPopulationPct?: number;// Optional: drop fields below this population density (0-100)
  limit?: number;           // Optional: max matches (default: 25, max: 100)
}

示例:

{
  "term": "ai",
  "objectName": "Opportunity",
  "includeValues": true
}

匹配基于词法而非语义:它会查找元数据中包含该词的字段,因此,如果架构对某个概念采用了不同的命名方式,就不会找到相应字段——请读取 salesforce://field-catalog/{objectName}/all 浏览所有字段。

execute_soql

执行支持分页的 SOQL 查询。

{
  query: string;      // Required: SOQL query to execute
  pageSize?: number;  // Optional: Number of records per page (default: 25)
  pageNumber?: number; // Optional: Page number to retrieve (default: 1)
}

示例:

{
  "query": "SELECT Id, Name FROM Account",
  "pageSize": 10,
  "pageNumber": 1
}
describe_object

获取 Salesforce 对象的元数据,可选择包含字段信息。

{
  objectName: string;    // Required: API name of the Salesforce object
  includeFields?: boolean; // Optional: Whether to include field metadata (default: false)
  pageSize?: number;     // Optional: Number of fields per page (default: 50)
  pageNumber?: number;   // Optional: Page number to retrieve (default: 1)
}

示例:

{
  "objectName": "Account",
  "includeFields": true
}
create_record

在 Salesforce 中创建新记录。

{
  objectName: string;           // Required: API name of the Salesforce object
  data: Record<string, any>;    // Required: Record data as key-value pairs
}

示例:

{
  "objectName": "Account",
  "data": {
    "Name": "Test Account",
    "Industry": "Technology"
  }
}
update_record

更新 Salesforce 中的现有记录。

{
  objectName: string;           // Required: API name of the Salesforce object
  recordId: string;            // Required: ID of the record to update
  data: Record<string, any>;    // Required: Record data to update
}

示例:

{
  "objectName": "Account",
  "recordId": "001XXXXXXXXXXXXXXX",
  "data": {
    "Name": "Updated Account Name"
  }
}
delete_record

从 Salesforce 中删除记录。

{
  objectName: string;    // Required: API name of the Salesforce object
  recordId: string;     // Required: ID of the record to delete
}

示例:

{
  "objectName": "Account",
  "recordId": "001XXXXXXXXXXXXXXX"
}
get_user_info

获取当前用户的信息。无需参数。

{}
list_objects

列出所有可用的 Salesforce 对象,支持分页。

{
  pageSize?: number;   // Optional: Number of objects per page (default: 25)
  pageNumber?: number; // Optional: Page number to retrieve (default: 1)
}
商机管理
search_opportunities

使用灵活的条件和模式匹配搜索 Salesforce 商机。

{
  namePattern?: string;         // Optional: Pattern to match in Opportunity Name
  accountNamePattern?: string;  // Optional: Pattern to match in Account Name
  stage?: string;              // Optional: Exact match for opportunity stage
  pageSize?: number;           // Optional: Number of records per page (default: 25)
  pageNumber?: number;         // Optional: Page number to retrieve (default: 1)
}
get_opportunity_details

获取特定商机的详细信息,包括所有可用字段和相关记录。

{
  opportunityId: string;   // Required: The ID of the Salesforce opportunity
}
🧠 商机智能分析
analyze_conversation

分析商机的对话活动和互动模式。从电话、电子邮件和其他活动中提取见解,并提供互动建议。

{
  opportunityId: string;   // Required: The ID of the Salesforce opportunity
}

示例:

{
  "opportunityId": "006XXXXXXXXXX"
}
enrich_opportunity

根据类似交易的模式和最佳实践,为商机补充市场情报、行业见解和战略建议。

{
  opportunityId: string;              // Required: The ID of the Salesforce opportunity
  includeCompetitiveIntel?: boolean; // Optional: Include competitive analysis (default: false)
  includeBestPractices?: boolean;    // Optional: Include best practices (default: true)
}

示例:

{
  "opportunityId": "006XXXXXXXXXX",
  "includeCompetitiveIntel": true,
  "includeBestPractices": true
}
find_similar_opportunities

查找与参考商机相似的商机,或根据特定条件查找商机。包含模式分析和相似度评分。

{
  referenceOpportunityId?: string; // Optional: Reference opportunity for similarity matching
  industry?: string;               // Optional: Filter by industry
  minAmount?: number;             // Optional: Minimum opportunity amount
  maxAmount?: number;             // Optional: Maximum opportunity amount
  stage?: string;                 // Optional: Filter by opportunity stage
  isWon?: boolean;               // Optional: Filter by won/lost status
  closeDateStart?: string;       // Optional: Start date (YYYY-MM-DD)
  closeDateEnd?: string;         // Optional: End date (YYYY-MM-DD)
  includeAnalysis?: boolean;     // Optional: Include pattern analysis (default: true)
  limit?: number;                // Optional: Max results (default: 50)
}

示例:

  1. 查找与参考商机相似的商机:
{
  "referenceOpportunityId": "006XXXXXXXXXX",
  "includeAnalysis": true
}
  1. 根据条件查找:
{
  "industry": "Information Technology & Services",
  "minAmount": 100000,
  "stage": "Closed Won",
  "limit": 20
}
opportunity_insights

根据商机数据生成详细见解和分析,包括销售管道健康状况、绩效指标和趋势。

{
  timeframe?: string;              // Optional: 'current_quarter', 'last_quarter', etc.
  includeStageAnalysis?: boolean;  // Optional: Stage distribution analysis (default: true)
  includeOwnerPerformance?: boolean; // Optional: Owner performance metrics (default: true)
  includeIndustryTrends?: boolean; // Optional: Industry trends (default: true)
  includePipelineHealth?: boolean; // Optional: Pipeline health analysis (default: true)
  includeConversionRates?: boolean; // Optional: Conversion rates (default: true)
  minAmount?: number;             // Optional: Minimum amount filter
  maxAmount?: number;             // Optional: Maximum amount filter
  industry?: string;              // Optional: Industry filter
  owner?: string;                 // Optional: Owner filter
}

示例:

{
  "timeframe": "current_quarter",
  "includeStageAnalysis": true,
  "includeOwnerPerformance": true,
  "minAmount": 50000
}
generate_business_case

为商机生成专业的商业案例文档。返回使用 TeXFlow 创建格式化商业案例的分步说明。

{
  opportunityId: string;    // Required: The ID of the Salesforce opportunity
  clientName?: string;      // Optional: Client name for the document title
  outputFormat?: string;    // Optional: 'pdf', 'docx', or 'markdown' (default: 'pdf')
}

示例:

{
  "opportunityId": "006XXXXXXXXXX",
  "clientName": "Acme Corporation",
  "outputFormat": "pdf"
}

📦 响应格式

分页响应

返回多条记录的操作使用以下格式:

{
  records: T[];           // Array of records for the current page
  totalSize: number;      // Total number of records
  pageInfo: {
    currentPage: number;  // Current page number
    totalPages: number;   // Total number of pages
    hasNextPage: boolean; // Whether there are more pages after this one
    hasPreviousPage: boolean; // Whether there are pages before this one
  }
}
错误处理

所有工具都以统一格式返回错误:

{
  content: [{
    type: "text",
    text: "Error: [error message]"
  }],
  isError: true
}

💻 开发

要在本地运行服务以进行开发:

  1. 在 .env 文件中设置环境变量
  2. 构建项目:
npm run build
  1. 启动服务:
node build/index.js

✨ 主要功能

  • 🧠 AI 驱动的智能分析:高级商机分析、对话洞察和市场情报
  • 📊 模式识别:识别销售管道中的相似商机和成功模式
  • 📋 商业案例生成:使用 TeXFlow 自动创建专业的商业案例文档
  • 🔍 智能搜索:支持模式匹配和筛选的灵活商机搜索
  • 📈 销售管道分析:深入了解销售管道的健康状况、转化率和绩效指标
  • 🔧 标准操作:完整的 CRUD 操作,并支持自定义字段
  • 📄 文档集成:与 TeXFlow MCP 服务无缝集成,生成文档
  • ⚡ 针对 AI 优化:响应结构专为 AI 模型处理而设计

🌟 未来可能性

Salesforce API 提供了众多扩展机会:

  • 支持更多 Salesforce 对象(Leads、Cases、Contacts 等)
  • 与 Salesforce Flow 和 Process Builder 集成
  • 增强竞争情报功能
  • 针对大型数据集的批量 API 操作
  • 集成 Chatter API 并提供社交销售洞察
  • 访问自定义报告和仪表板
  • 高级预测和预测分析

我们很期待听到你对下一步最值得添加哪些功能的想法!

🤝 贡献

欢迎社区贡献!无论是添加新功能、改进文档还是报告 bug,你的参与都有助于让这个项目惠及所有人。欢迎提交 Pull Request 或创建 Issue,开始讨论。

📄 许可证

本项目采用 MIT 许可证,详情请参阅 LICENSE 文件。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。