Salesforce–使用MCP和GraphRAG集成Neo4j

目录
- 方法1:手动密码RAG - 方法2:寻回犬RAG - 方法3:无RAG - 方法4:GraphRAG管道
- 先决条件 - 设置和安装
______________________________________________________________________
项目概述
此存储库演示了以下内容之间的集成 赛富时 (CRM平台)和 Neo4j (图形数据库)使用 模型上下文协议(MCP),纳入以下概念 图检索增强生成 (基于图的检索增强生成)。\ 目标是使Salesforce能够利用基于图的洞察(通过Neo4j)来增强客户、案例或关系分析,例如多跳查询、相似性搜索和数据关系的语义理解。
该项目展示了四种不同的集成方法,在Salesforce中利用Apex、LWC和命名凭据,并通过MCP服务器查询Neo4j——完全留在Salesforce和Neo4j生态系统中。
______________________________________________________________________
关键技术
- 赛富时:Apex、LWC、命名凭据、流自动化
- Neo4j:图建模(节点、关系、属性),Cypher查询语言
- 模型上下文协议(MCP):将人工智能模型连接到工具和数据库的标准化协议
- 图检索增强生成:结合向量嵌入+图上下文,实现更丰富的检索和洞察
______________________________________________________________________
架构与方法
方法1:手动密码RAG
流量: 赛富时→ MCP网关→ Neo4j(手动Cypher查询)\ 亮点: 开发人员手动编写Cypher查询;最适合完全控制接地。
Method 1 – RAG with Direct MCP-Neo4j-Cypher
方法2:寻回犬RAG
流量: 赛富时→ 网关->检索器→ Neo4j\ 亮点: 通过检索器将自然语言转换为Cypher。然后用它接地。\ Method 2 – RAG with GraphRag Retriever
方法3:不集成RAG
流量: 赛富时→ MCP网关→ Neo4j(直接结构化调用)\ 亮点: 无接地层;只使用密码查询
Method 3 – Direct Cypher Execution (No-RAG Mode)
方法4:GraphRAG管道
流量: 赛富时→ GraphRAG管道→ Neo4j\ 亮点: 结合矢量+图形上下文;为知识图用例提供丰富的上下文见解。
参考:
https://neo4j.com/docs/neo4j-graphrag-python/current/user_guide_kg_builder.html(KG管道) https://github.com/neo4j-product-examples/graphrag-python-examples(使用示例) https://neo4j.com/blog/genai/what-is-graphrag/(文件) https://neo4j.com/blog/news/graphrag-python-package/(示例说明) https://neo4j.com/docs/neo4j-graphrag-python/current/user_guide_rag.html
🏗 架构概述
| 图层 | 组件 |
|---|---|
| UI层 | 闪电网络组件(LWC) |
| 后端(Salesforce) | Apex控制器→ 命名凭据→ HTTP标注 |
| 网关 | Node.js MCP客户端网关(端口9005) |
| MCP服务 | Python MCP服务器(端口8005) 暴露工具 |
| 数据层 | Neo4j图形数据库 |
- LWC发送请求→ Apex
- Apex使用 命名凭据+ngrok HTTPS端点
- Node.js网关将Salesforce HTTP转换为MCP请求
- Python MCP服务器托管翻译或执行Cypher的工具
🎛 为什么使用Apex+命名凭据?
赛富时 不允许从LWC直接进行HTTP调用 由于安全政策。所以:
- Apex进行标注
- 命名凭据公开网关URL
- Ngrok提供临时HTTPS URL,因为命名凭据 不接受HTTP
Named credential to access Gateway)
______________________________________________________________________
🌍 通过cURL进行测试
局部测试 仅矢量查询
curl -s -X POST http://localhost:8005/mcp -H "Content-Type: application/json" -H "Accept: application/json,text/event-stream" -d '{
"jsonrpc":"2.0","id":3,"method":"tools/call",
"params":{"name":"run_vector_query","arguments":{"question":"Summarize communication challenges between patients and clinicians"}}
}'
远程测试
curl -s -X POST https://d001d4abfaa9.ngrok-free.app/mcp -H "Content-Type: application/json" -H "Accept: application/json,text/event-stream" -d @biomolecule.json
输入JSON(biomolecule.json)
{
"jsonrpc":"2.0","id":4,"method":"tools/call",
"params":{"name":"run_graphrag_search_withcontext","arguments":{"question":"Relate biomolecule findings to lupus clinical guidelines"}}
}
______________________________________________________________________
演示/截图
- Salesforce应用程序:
- 矢量查询:
- 矢量与矢量密码: 与GraphRag进行比较
______________________________________________________________________
入门指南
先决条件
- Salesforce开发人员组织或沙盒
- Neo4j数据库(本地或Aura)
- 用于MCP网关的Node.js或用于MCP服务器的Python
- Apex、LWC、Cypher的基本知识
设置和安装
git clone https://github.com/belavaditech/Salesforce-MCP-GraphRag-Neo4j.git
cd Salesforce-MCP-GraphRag-Neo4j- 配置Neo4j连接凭据。
- 使用Neo4j详细信息设置MCP服务器(提供)。
- 设置网关服务器(已提供)
- 在Salesforce中为安全端点调用创建2个命名凭据。
- 部署提供的Apex类(一个用于MCP服务器端点8005,另一个用于网关端点访问9005)
- 部署LWC组件(已提供)。
- 在应用程序中配置LWC组件
______________________________________________________________________
______________________________________________________________________
配置
创建一个 .env 适用于您环境的文件:
NEO4J_URI=bolt://localhost:7687
NEO4J_USER=neo4j
NEO4J_PASSWORD=your_password
MCP_PORT=8005
在Salesforce中:
- 设置a 命名凭证 指向MCP网关端点。
- 为来自Apex的API调用分配权限集。
______________________________________________________________________
______________________________________________________________________
许可证
此项目根据MIT许可证获得许可——请参阅 许可证.
______________________________________________________________________
联系
作者 拉梅什BN
______________________________________________________________________
快乐的绘图和整合! 🚀
