Salesforce MCP服务器

CData的Salesforce MCP服务器是一个本地只读服务器,通过JDBC驱动将Salesforce数据暴露为关系型SQL模型,使LLM能够通过自然语言查询实时数据。

  • by CDataSoftware
  • Java
  • 本地部署
  • 更新于
在 GitHub 查看 CDataSoftware/salesforce-mcp-server-by-cdata

使用说明

Salesforce MCP 服务器(由 CData 提供)

CData的Salesforce模型上下文协议(MCP)服务器

⚠️ 此项目构建了一个本地、只读的MCP服务器。如需完全远程访问MCP,请查看首个托管MCP平台: CData Connect AI(可译为“CData 连接 AI”或根据具体语境简化为“CData AI连接”)对于本地托管、支持完整的读、写、更新、删除和操作功能,以及简化设置的方案,请查看我们的 CData Salesforce MCP服务器。

目的

我们创建了这个只读的MCP服务器,以允许大型语言模型(如Claude Desktop)查询Salesforce支持的实时数据 CData JDBC 驱动程序 for Salesforce.

CData JDBC驱动程序通过将Salesforce作为关系型SQL模型来连接。

这个服务器封装了该驱动程序,并通过一个简单的MCP(机器可处理内容)接口提供Salesforce数据,因此大型语言模型(LLMs)可以通过自然语言提问来检索实时信息——无需SQL。

设置指南

  1. 克隆仓库:
    git clone https://github.com/cdatasoftware/salesforce-mcp-server-by-cdata.git
    cd salesforce-mcp-server-by-cdata
    
  2. 构建服务器:
    mvn clean install
    
    这会生成一个JAR文件:CDataMCP-jar-with-dependencies.jar
  3. 下载并安装适用于{source}的CData JDBC驱动程序: https://www.cdata.com/驱动程序/下载/销售力(Salesforce)/JDBC
  4. 授权CData JDBC驱动程序:
    • 导航至 lib 安装目录中的文件夹,通常为:
      • (Windows) C:\Program Files\CData\CData JDBC Driver for Salesforce\
      • (Mac/Linux) /Applications/CData JDBC Driver for Salesforce/
    • 运行该命令 java -jar cdata.jdbc.salesforce.jar --license
    • 请输入您的姓名、电子邮件以及“TRIAL”(或您的许可证密钥)。
  5. 配置您与数据源的连接(以Salesforce为例):
    • 运行该命令 java -jar cdata.jdbc.salesforce.jar 打开连接字符串实用程序。

    • 配置连接字符串,然后点击“测试连接”

      注: 如果数据源使用OAuth,您需要在浏览器中进行身份验证。

    • 一旦成功,复制连接字符串以备后用。

  6. 创建一个 .prp 用于您的JDBC连接的文件(例如。 salesforce.prp) 使用以下属性和格式:
    • 前缀 - 用于公开的工具的前缀
    • 服务器名称 - 为您的服务器命名
    • 服务器版本 - 适用于您服务器的版本
    • 驱动程序路径 - 您的JDBC驱动程序JAR文件的完整路径
    • DriverClass(驱动程序类) - JDBC驱动程序类的名称(例如:cdata.jdbc.salesforce.SalesforceDriver)
    • JdbcUrl(Java数据库连接URL) - 用于连接到CData JDBC驱动程序以访问您的数据的JDBC连接字符串(从上面复制)
    • 桌子 - 留空以访问所有数据,否则您可以明确声明您希望创建访问权限的表
      Prefix=salesforce
      ServerName=CDataSalesforce
      ServerVersion=1.0
      DriverPath=PATH\TO\cdata.jdbc.salesforce.jar
      DriverClass=cdata.jdbc.salesforce.SalesforceDriver
      JdbcUrl=jdbc:salesforce:InitiateOAuth=GETANDREFRESH;
      Tables=
      

备选方案:使用环境变量

不是使用一个 .prp 文件,您可以使用环境变量来配置服务器。这对于容器化部署或当您希望将CData JAR打包到编译后的JAR中时非常有用。

环境变量

  • CDATA_JDBC_URL - 必需的 - JDBC连接字符串
  • CDATA_PREFIX - (可选)导出工具的前缀(默认为“salesforce”)
  • CDATA_DRIVER_CLASS - (可选)JDBC 驱动程序类名(在使用打包的 JAR 时,默认为“cdata.jdbc.salesforce.SalesforceDriver”)
  • CDATA_DRIVER_PATH - (可选)CData JAR 文件的路径(如果未指定,则使用捆绑的类)
  • CDATA_TABLES -(可选)逗号分隔的要暴露的表列表
  • CDATA_LOG_FILE - (可选)日志文件路径

打包CData JAR文件

将CData JAR包含在您的编译后的JAR中:

  1. 创建一个 lib 项目根目录中的目录
  2. 复制CData JDBC驱动程序JAR文件(例如。, cdata.jdbc.salesforce.jar) 进入 lib 目录
  3. 使用(指定工具或方法)构建项目 mvn clean install
  4. CData JDBC驱动程序类将被解压并直接包含在 CDataMCP-jar-with-dependencies.jar

注:在构建过程中,maven-shade-plugin 会自动提取并包含 CData JAR 中的所有类。

使用环境变量运行

# Minimal configuration - only JDBC URL is required
export CDATA_JDBC_URL="jdbc:salesforce:InitiateOAuth=GETANDREFRESH;"
java -jar CDataMCP-jar-with-dependencies.jar

# Or with custom configuration
export CDATA_PREFIX="myprefix"
export CDATA_DRIVER_PATH="/path/to/cdata.jdbc.salesforce.jar"  # Only needed if not using bundled JAR
export CDATA_DRIVER_CLASS="cdata.jdbc.salesforce.SalesforceDriver"  # Only needed if not using bundled JAR
export CDATA_JDBC_URL="jdbc:salesforce:InitiateOAuth=GETANDREFRESH;"
java -jar CDataMCP-jar-with-dependencies.jar

使用Claude桌面版连接服务器

  1. 创建用于Claude Desktop的配置文件(claude_desktop_config.json),以添加新的MCP服务器,使用以下格式。如果文件已存在,请将条目添加到文件中 mcpServers 在配置文件中。

    Windows

    {
      "mcpServers": {
        "{classname_dash}": {
          "command": "PATH\\TO\\java.exe",
          "args": [
            "-jar",
            "PATH\\TO\\CDataMCP-jar-with-dependencies.jar",
            "PATH\\TO\\salesforce.prp"
          ]
        },
        ...
      }
    }
    

    Linux/麦金塔(Mac)

    {
      "mcpServers": {
        "{classname_dash}": {
          "command": "/PATH/TO/java",
          "args": [
            "-jar",
            "/PATH/TO/CDataMCP-jar-with-dependencies.jar",
            "/PATH/TO/salesforce.prp"
          ]
        },
        ...
      }
    }
    

    使用环境变量(Windows)

    {
      "mcpServers": {
        "salesforce": {
          "command": "PATH\\TO\\java.exe",
          "args": [
            "-jar",
            "PATH\\TO\\CDataMCP-jar-with-dependencies.jar"
          ],
          "env": {
            "CDATA_JDBC_URL": "jdbc:salesforce:InitiateOAuth=GETANDREFRESH;"
          }
        }
      }
    }
    

    使用环境变量(Linux/Mac)

    {
      "mcpServers": {
        "salesforce": {
          "command": "/PATH/TO/java",
          "args": [
            "-jar",
            "/PATH/TO/CDataMCP-jar-with-dependencies.jar"
          ],
          "env": {
            "CDATA_JDBC_URL": "jdbc:salesforce:InitiateOAuth=GETANDREFRESH;"
          }
        }
      }
    }
    

    如果需要,请将配置文件复制到相应的目录中(以Claude Desktop为例)。 Windows

    cp C:\PATH\TO\claude_desktop_config.json %APPDATA%\Claude\claude_desktop_config.json
    

    Linux/麦金塔(Mac)

    cp /PATH/TO/claude_desktop_config.json /Users/{user}/Library/Application\ Support/Claude/claude_desktop_config.json'
    
  2. 运行或刷新您的客户端(Claude Desktop)。

注: 您可能需要完全退出或关闭您的Claude桌面客户端,然后重新打开它,以便MCP服务器能够显示出来。

运行服务器

  1. 运行以下命令以单独启动MCP服务器
    java -jar /PATH/TO/CDataMCP-jar-with-dependencies.jar /PATH/TO/Salesforce.prp
    

注: 服务器使用 stdio 因此,只能与运行在与服务器相同机器上的客户端一起使用。

使用详情

一旦配置好MCP服务器,AI客户端将能够使用内置工具来读取、写入、更新和删除底层数据。通常情况下,您无需显式调用这些工具。只需让客户端回答有关底层数据系统的问题即可。例如:

  • “我的已成交机会与客户所属行业之间存在怎样的关联?”
  • “我在SUPPORT项目中有多少张未解决的工单?”
  • “你能告诉我我今天有哪些日程安排吗?”

以下是可用工具列表及其描述:

工具与说明

在以下定义中, {servername} 指的是配置文件中的MCP服务器名称(例如。 {classname_dash} (上述)。

  • {servername}_get_tables - 获取数据源中可用的表列表。使用 {servername}_get_columns 工具用于列出表中可用的列。该工具的输出将以CSV格式返回,第一行包含列标题。
  • {servername}_get_columns - 获取表的列列表。使用 {servername}_get_tables 工具用于获取可用表的列表。工具的输出将以CSV格式返回,第一行包含列标题。
  • {servername}_run_query - 执行SQL SELECT查询

JSON-RPC 请求示例

如果你正在为发送给MCP服务器的请求编写脚本,而不是使用AI客户端(例如Claude),那么在调用可用工具时,你可以参考以下遵循JSON-RPC 2.0规范的JSON有效载荷示例。

获取Salesforce表(或:查询Salesforce中的表)

{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
        "name": "salesforce_get_tables",
        "arguments": {}
    }
}

获取Salesforce列

{
    "jsonrpc": "2.0",
    "id": 2,
    "method": "tools/call",
    "params": {
        "name": "salesforce_get_columns",
        "arguments": {
            "table":  "Account"
        }
    }
}

Salesforce执行查询

{
    "jsonrpc": "2.0",
    "id": 3,
    "method": "tools/call",
    "params": {
        "name": "salesforce_run_query",
        "arguments": {
            "sql":  "SELECT * FROM [Account] WHERE [IsDeleted] = true"
        }
    }
}

故障排除

  1. 如果你在Claude Desktop中看不到你的CData MCP服务器,请确保你已完全退出Claude Desktop(Windows系统:使用任务管理器;Mac系统:使用活动监视器)
  2. 如果Claude Desktop无法检索数据,请确保您已正确配置了连接。使用连接字符串生成器来创建连接字符串(见上文),然后将连接字符串复制到属性(.prp)文件中。
  3. 如果您在连接到数据源时遇到问题,请联系 CData 支持团队。
  4. 如果您在使用MCP服务器时遇到问题,或有任何其他反馈,请加入 CData 社区。

许可证

这个MCP服务器遵循MIT许可证进行授权。这意味着,您可以在遵守MIT许可证条款和条件的前提下,自由地使用、修改和分发该软件。如需了解更多详情,请参阅 许可证 项目仓库中的文件。

所有支持的来源

AccessAct CRMAct-OnActive Directory
ActiveCampaignAcumaticaAdobe AnalyticsAdobe Commerce
ADPAirtableAlloyDBAmazon Athena
Amazon DynamoDBAmazon MarketplaceAmazon S3Asana
Authorize.NetAvalara AvaTaxAvroAzure Active Directory
Azure Analysis ServicesAzure Data CatalogAzure Data Lake StorageAzure DevOps
Azure SynapseAzure TableBasecampBigCommerce
BigQueryBing AdsBing SearchBitbucket
Blackbaud FE NXTBoxBullhorn CRMCassandra
CertiniaCloudantCockroachDBConfluence
Cosmos DBCouchbaseCouchDBCSV
CventDatabricksDB2DocuSign
DropboxDynamics 365Dynamics 365 Business CentralDynamics CRM
Dynamics GPDynamics NAVeBayeBay Analytics
ElasticsearchEmailEnterpriseDBEpicor Kinetic
Exact OnlineExcelExcel OnlineFacebook
Facebook AdsFHIRFreshdeskFTP
GitHubGmailGoogle Ad ManagerGoogle Ads
Google AnalyticsGoogle CalendarGoogle Campaign Manager 360Google Cloud Storage
Google ContactsGoogle Data CatalogGoogle DirectoryGoogle Drive
Google SearchGoogle SheetsGoogle SpannerGraphQL
GreenhouseGreenplumHarperDBHBase
HCL DominoHDFSHighriseHive
HubDBHubSpotIBM Cloud Data EngineIBM Cloud Object Storage
IBM InformixImpalaInstagramJDBC-ODBC Bridge
JiraJira AssetsJira Service ManagementJSON
KafkaKintoneLDAPLinkedIn
LinkedIn AdsMailChimpMariaDBMarketo
MarkLogicMicrosoft DataverseMicrosoft Entra IDMicrosoft Exchange
Microsoft OneDriveMicrosoft PlannerMicrosoft ProjectMicrosoft Teams
Monday.comMongoDBMYOB AccountRightMySQL
nCinoNeo4JNetSuiteOData
OdooOffice 365OktaOneNote
OracleOracle EloquaOracle Financials CloudOracle HCM Cloud
Oracle SalesOracle SCMOracle Service CloudOutreach.io
ParquetPaylocityPayPalPhoenix
PingOnePinterestPipedrivePostgreSQL
Power BI XMLAPrestoQuickbaseQuickBooks
QuickBooks OnlineQuickBooks TimeRaisers Edge NXTReckon
Reckon Accounts HostedRedisRedshiftREST
RSSSage 200Sage 300Sage 50 UK
Sage Cloud AccountingSage IntacctSalesforceSalesforce Data Cloud
Salesforce Financial Service CloudSalesforce MarketingSalesforce Marketing Cloud Account EngagementSalesforce Pardot
SalesloftSAPSAP Ariba ProcurementSAP Ariba Source
SAP Business OneSAP BusinessObjects BISAP ByDesignSAP Concur
SAP FieldglassSAP HANASAP HANA XS AdvancedSAP Hybris C4C
SAP Netweaver GatewaySAP SuccessFactorsSAS Data SetsSAS xpt
SendGridServiceNowSFTPSharePoint
SharePoint Excel ServicesShipStationShopifySingleStore
SlackSmartsheetSnapchat AdsSnowflake
SparkSplunkSQL Analysis ServicesSQL Server
SquareStripeSugar CRMSuiteCRM
SurveyMonkeySybaseSybase IQTableau CRM Analytics
TallyTaxJarTeradataTier1
TigerGraphTrelloTrinoTwilio
TwitterTwitter AdsVeeva CRMVeeva Vault
Wave FinancialWooCommerceWordPressWorkday
xBaseXeroXMLYouTube Analytics
ZendeskZoho BooksZoho CreatorZoho CRM
Zoho InventoryZoho ProjectsZuora... Dozens More