Salesforce Meta Tool MCP Server

使用说明(Markdown 格式)

  • 项目简介

    • 该仓库实现了一个元数据驱动的 MCP 后端服务器,用于在 Salesforce 场景中向 AI 代理提供可发现的对象及字段、支持查询/搜索/创建等操作的工具,以及在会话中渲染和使用提示模板。
    • 服务器通过 MCP 协议与客户端通信,客户端通过统一的 JSON-RPC 请求调用服务器提供的工具,服务器返回 JSON-RPC 响应。对于安全性,生产环境中通过 APIM 的 OBO(On-Behalf-Of)流程实现用户身份在整个调用链中的传递。
  • 主要功能点

    • 6 个 MCP 工具集合:
      • list_objects:发现 Salesforce 对象及权限标记
      • describe_object:获取对象字段元数据(分 slim/full 模式)
      • soql_query:执行 SOQL 查询,支持分页
      • search_records:SOSL 全文检索
      • write_record:创建/更新/上存/删除记录
      • process_approval:提交、批准或拒绝审批流程
    • Bearer Token 透传:服务器在每次请求中通过 Authorization: Bearer <token> 获取并向 Salesforce API 发送该令牌,生产环境通过 APIM 的 OBO 机制完成令牌交换。
    • On-Behalf-Of 身份传播场景:通过 Foundry/AI Projects 集成实现对用户身份的端到端控制,确保代理操作在用户权限范围内执行。
    • 安全与可扩展性:使用 FastMCP 框架提供的 MCP 流式接口,具备会话管理、错误处理以及对多传输协议的支持能力。
  • 安装步骤

    • 克隆仓库并进入项目目录。
    • 安装依赖:
      • 需要 Python 3.11+ 环境
      • 运行 pip install -r requirements.txt(若有)
    • 运行服务器(开发/测试环境示例,实际生产可通过容器化/云部署):在支持 Python 的环境中启动 MCP 服务器并监听端口,例如:
      • uvicorn salesforce-mcp.app:app --host 0.0.0.0 --port 8000 注:实际部署时请确保模块路径与打包方式正确;仓库中实现了在 main 块启动服务的逻辑,具体执行命令需按你的部署方式调整。
  • 服务器配置(供 MCP 客户端使用的启动信息,JSON 格式) 说明:MCP 客户端只需要知道服务器的启动命令及参数即可与 MCP 服务器建立连接。以下为准确的示例配置(请在实际使用时按你的部署目标调整路径/端口等信息): { "server_name": "Salesforce-MCP-Server", "command": "uvicorn", "args": [ "salesforce_mcp.app:app", "--host", "0.0.0.0", "--port", "8000" ], "notes": "若你的部署包名称或模块路径不同,请将上面的 module 路径调整为实际可导入的入口。生产环境通常通过容器编排/云服务进行部署。" }

  • 基本使用方法

    • 通过 MCP 客户端与服务器建立会话,调用上述 6 个工具执行相应任务:列出对象、描述字段、执行查询/检索、创建/更新/删除记录、处理审批等。
    • 为了实现端到端身份传播,请在生产环境中确保 Authorization 头部携带的 Bearer token 能通过 APIM 的 OBO 流程转换为 Salesforce 的访问令牌,并将该令牌随每次请求发往服务器。
    • 服务器会在每次请求中使用传入的令牌访问 Salesforce REST API,并返回标准的 JSON-RPC 风格响应或错误信息。
  • 额外注意

    • 服务器需要确保 Salesforce 实例 URL 的可访问性(SF_INSTANCE_URL 环境变量需正确配置)。
    • 在生产环境中,结合 README 所述的 Azure/Foundry/OBO 流程实施完整身份传播方案。

服务器信息