此仓库演示了使用模型上下文协议(MCP)将大型语言模型(LLMs)与数据库集成的一种更高级的方法。虽然通用的MCP PostgreSQL服务器允许LLMs通过原始SQL查询来探索数据库,但本项目采取了一种不同的方法,即创建一个自定义MCP服务器,提供一个针对应用程序需求定制的领域特定API。
本实现使用FastMCP,这是一个高性能的模型上下文协议实现,它为工具与LLMs之间的交互提供了改进的效率和可靠性。
本项目基于RAGmonsters数据集。RAGmonsters是一个开源项目,提供了一个丰富的虚构怪物数据集,具有各种属性、能力和关系——特别设计用于展示和测试检索增强生成(RAG)系统。
通用MCP PostgreSQL服务器为LLMs提供了一个query工具,使它们能够:
尽管这种方法有效,但它在实际应用中存在一些限制:
RAGmonsters是一个专门设计用于测试和展示检索增强生成(RAG)系统的开放数据集。它包含了关于虚构怪物的信息,具有丰富的属性、能力和关系——使其非常适合自然语言查询演示。
RAGmonsters的PostgreSQL版本提供了一个结构良好的关系型数据库,包括多个表和关系,例如:
这个丰富且相互关联的数据集非常适合展示领域特定API相对于通用SQL访问的优势。
本项目展示了如何构建一个自定义MCP服务器,为RAGmonsters数据集提供更高层次的领域特定API。而不是暴露原始SQL功能,我们的MCP服务器提供了专门的功能,这些功能:
该项目包括两个主要接口用于与RAGmonsters数据集进行交互:
一个专注于数据的界面,通过MCP API来探索和过滤RAGmonsters数据集:
一个自然语言界面,用于与RAGmonsters数据集进行交互:

该界面允许用户:
用户:"哪些是攻击力最高的前三只怪物,且对火元素脆弱?"
LLM:(必须理解模式、连接和SQL语法)
1. 第一个查询了解模式
2. 第二个查询找到攻击力高的怪物
3. 第三个查询找到脆弱的怪物
4. 最终查询连接并筛选结果
用户:"哪些是攻击力最高的前三只怪物,且对火元素脆弱?"
LLM:(使用我们的领域特定API)
1. 单次调用:getMonsters({ vulnerableTo: "fire", sortBy: "attackPower", limit: 3 })
├── .env.example # 示例环境变量
├── package.json # Node.js项目配置
├── README.md # 此文档
├── img/ # 文档图像
├── scripts/
│ ├── testMcpServer.js # MCP服务器测试脚本
│ └── testLogger.js # 测试脚本日志
├── src/
│ ├── index.js # 主应用程序服务器
│ ├── mcp-server/ # 使用FastMCP实现的自定义MCP服务器
│ │ ├── index.js # 服务器入口点
│ │ ├── tools/ # 领域特定工具
│ │ │ ├── index.js # 工具注册
│ │ │ └── monsters.js # 与怪物相关的操作
│ │ └── utils/ # 辅助工具
│ │ └── logger.js # 日志功能
│ ├── llm.js # LLM的LangChain集成
│ └── public/ # Web界面文件
│ ├── index.html # 怪物探索者界面
│ └── chat.html # LLM交互的聊天界面
npm install.env.example到.env并配置您的PostgreSQL连接字符串和LLM API密钥npm run testnpm run test:llmnpm startMCP服务器提供以下工具:
getMonsters - 获取怪物列表,可选过滤、排序和分页
getMonsterById - 根据ID获取特定怪物的详细信息
add - 用于测试的简单工具,添加两个数字
本项目采用现代方法将LLM与领域特定工具集成:
应用程序使用LangGraph的ReAct(推理和行动)代理模式,该模式:
项目包含一个演示如何使用LangChain.js将LLM与MCP服务器集成的测试脚本:
npm run test:llm
此脚本:
您可以修改脚本中的测试查询以探索系统的不同功能。脚本位于scripts/testLlmWithMcpServer.js。
创建一个.env文件,包含以下变量:
# PostgreSQL连接字符串
POSTGRESQL_ADDON_URI=postgres://用户名:密码@主机:端口/数据库
# LLM API配置
LLM_API_KEY=您的openai-api-key
LLM_API_MODEL=gpt-4o-mini
LLM_API_URL=https://api.openai.com/v1
应用程序支持任何兼容OpenAI的API,包括自托管模型和替代提供商。
安装Clever Cloud CLI:
npm install -g clever-tools
登录到您的Clever Cloud帐户:
clever login
创建一个新的应用程序:
clever create --type node <APP_NAME>
添加您的域名(可选但推荐):
clever domain add <您的域名>
创建一个PostgreSQL附加组件并将其链接到您的应用程序:
clever addon create <APP_NAME>-pg --plan dev
clever service link-addon <APP_NAME>-pg
这将自动设置应用程序中的POSTGRESQL_ADDON_URI环境变量。
设置所需的环境变量:
clever env set LLM_API_KEY "您的-openai-api-key"
clever env set LLM_API_MODEL "gpt-4o-mini" # 可选,默认为gpt-4o-mini
clever env set LLM_API_URL "https://api.您的-llm提供商.com" # 可选,对于替代OpenAI兼容提供商
部署您的应用程序:
clever deploy
打开您的应用程序:
clever open
您也可以直接从Clever Cloud控制台部署:
LLM_API_KEY:您的OpenAI API密钥LLM_API_MODEL:(可选)要使用的模型,默认为gpt-4o-miniPOSTGRESQL_ADDON_URI环境变量本项目根据MIT许可证发布 - 详情见LICENSE文件。