使用说明
项目简介
本项目是一个基于 Model Context Protocol (MCP) 的服务器实现,它扩展了原生的PostgreSQL MCP服务器,使其能够连接和查询多个PostgreSQL数据库。此外,它还增加了一个可以执行Python脚本的工具,从而为LLM应用提供了更丰富的功能。
主要功能点
- 多数据库支持: 可以同时连接和查询多个PostgreSQL数据库,例如示例中的 'control_plane' 和 'support_tickets' 数据库。
- SQL查询工具: 为每个数据库提供独立的SQL查询工具,允许LLM通过SQL语句从数据库中检索信息。工具描述中包含了数据库Schema信息,帮助LLM更准确地构造查询。
- Python脚本执行工具: 允许LLM调用并执行Python代码,并可以向Python脚本传递JSON数据作为参数,扩展了LLM的功能边界,使其能够执行更复杂的逻辑或与外部系统交互。
安装步骤
- 克隆仓库: 首先克隆本仓库 'mcp-vs-promptql' 到本地。
git clone https://github.com/hasura/mcp-vs-promptql.git cd mcp-vs-promptql - 准备数据库:
- 确保本地PostgreSQL数据库服务正在运行,默认端口为 '5432'。
- 创建两个数据库 'control_plane' 和 'support_tickets'。
- 使用仓库 'data' 目录下的 'control_plane_dump.sql' 和 'support_tickets_dump.sql' 文件分别导入数据到对应的数据库中。
psql -U postgres -d control_plane -f data/control_plane_dump.sql psql -U postgres -d support_tickets -f data/support_tickets_dump.sql
- 获取原始MCP服务器代码:
- 克隆官方的MCP服务器仓库 'servers' 到本地,与 'mcp-vs-promptql' 仓库在同一目录下或不同目录均可,只需确保在配置中路径正确。
git clone https://github.com/modelcontextprotocol/servers.git
- 克隆官方的MCP服务器仓库 'servers' 到本地,与 'mcp-vs-promptql' 仓库在同一目录下或不同目录均可,只需确保在配置中路径正确。
- 替换 'index.ts' 文件:
- 将本仓库 'mcp-vs-promptql' 中的 'index.ts' 文件复制并替换到 'servers/src/postgres/' 目录下。
- 设置数据库连接URL:
- 编辑 'servers/src/postgres/index.ts' 文件,根据你的数据库配置修改 'controlPlaneUrl' 和 'supportTicketsUrl' 变量的值。确保URL指向你本地运行的 'control_plane' 和 'support_tickets' 数据库。
- 编译 TypeScript 代码:
- 在 'servers/src/postgres/' 目录下,运行以下命令编译 TypeScript 代码:
npx tsc
- 在 'servers/src/postgres/' 目录下,运行以下命令编译 TypeScript 代码:
- (可选) 验证服务器启动:
- 编译成功后,可以运行以下命令验证服务器是否能够正常启动:
如果一切正常,服务器应该会启动并且没有报错信息输出。node dist/index.js
- 编译成功后,可以运行以下命令验证服务器是否能够正常启动:
服务器配置
为了让MCP客户端(例如 Claude 桌面应用)连接到这个MCP服务器,你需要配置客户端的 'claude_desktop_config.json' 文件。 以下是一个配置示例,你需要根据你的实际文件路径进行调整。
{ "mcpServers": { "dbs": { "command": "node", "args": [ "<servers 仓库的路径>/src/postgres/dist/index.js" ] } } }
配置参数说明:
- '"dbs"': 服务器名称,可以自定义,例如 'postgres-server' 或 'my-mcp-server'。这个名称会在MCP客户端中用于标识该服务器。
- '"command"': 启动服务器的命令,这里是 'node',表示使用 Node.js 运行时环境。
- '"args"': 启动命令的参数,是一个字符串数组。
- '"servers 仓库的路径>/src/postgres/dist/index.js"': 指向编译后的 'index.js' 文件路径。请务必将 '<servers 仓库的路径>' 替换为你本地 'servers' 仓库的实际绝对路径。 例如,如果你的 'servers' 仓库在 '/Users/yourname/projects/servers' 目录下,那么这个参数应该类似于 '/Users/yourname/projects/servers/src/postgres/dist/index.js'。
请注意: MCP客户端(如 Claude)需要配置的是 服务器的启动命令及其参数,而不是代码路径或项目路径。客户端通过执行你配置的命令来启动MCP服务器并与之通信。
基本使用方法
- 配置 MCP 客户端: 根据上述 "服务器配置" 部分的说明,配置你的 MCP 客户端 (例如 Claude 桌面应用) 的配置文件,使其能够连接到你本地启动的 MCP 服务器。
- 在 MCP 客户端中使用工具: 配置完成后,当你在 MCP 客户端中使用需要访问数据库或执行Python脚本的功能时,客户端会通过 MCP 协议与你配置的 MCP 服务器进行通信。
- 调用 SQL 查询工具: LLM 可以调用 'query_control_plane_data' 或 'query_support_tickets' 工具来查询相应的数据库。你需要提供 SQL 查询语句作为工具的参数。
- 调用 Python 脚本执行工具: LLM 可以调用 'execute_python_program' 工具来执行Python代码。你需要提供 'pythonCode' (Python 代码字符串) 和 'dataValues' (JSON 格式的数据字符串) 作为工具的参数。
请参考 MCP 客户端的文档,了解如何在客户端中调用和使用这些工具。
信息
分类
数据库与文件