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 流式接口,具备会话管理、错误处理以及对多传输协议的支持能力。
- 6 个 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 流程实施完整身份传播方案。