使用说明

项目简介

本项目是一个基于 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的功能边界,使其能够执行更复杂的逻辑或与外部系统交互。

安装步骤

  1. 克隆仓库: 首先克隆本仓库 'mcp-vs-promptql' 到本地。
    git clone https://github.com/hasura/mcp-vs-promptql.git
    cd mcp-vs-promptql
  2. 准备数据库:
    • 确保本地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
  3. 获取原始MCP服务器代码:
    • 克隆官方的MCP服务器仓库 'servers' 到本地,与 'mcp-vs-promptql' 仓库在同一目录下或不同目录均可,只需确保在配置中路径正确。
      git clone https://github.com/modelcontextprotocol/servers.git
  4. 替换 'index.ts' 文件:
    • 将本仓库 'mcp-vs-promptql' 中的 'index.ts' 文件复制并替换到 'servers/src/postgres/' 目录下。
  5. 设置数据库连接URL:
    • 编辑 'servers/src/postgres/index.ts' 文件,根据你的数据库配置修改 'controlPlaneUrl' 和 'supportTicketsUrl' 变量的值。确保URL指向你本地运行的 'control_plane' 和 'support_tickets' 数据库。
  6. 编译 TypeScript 代码:
    • 在 'servers/src/postgres/' 目录下,运行以下命令编译 TypeScript 代码:
      npx tsc
  7. (可选) 验证服务器启动:
    • 编译成功后,可以运行以下命令验证服务器是否能够正常启动:
      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服务器并与之通信。

基本使用方法

  1. 配置 MCP 客户端: 根据上述 "服务器配置" 部分的说明,配置你的 MCP 客户端 (例如 Claude 桌面应用) 的配置文件,使其能够连接到你本地启动的 MCP 服务器。
  2. 在 MCP 客户端中使用工具: 配置完成后,当你在 MCP 客户端中使用需要访问数据库或执行Python脚本的功能时,客户端会通过 MCP 协议与你配置的 MCP 服务器进行通信。
  3. 调用 SQL 查询工具: LLM 可以调用 'query_control_plane_data' 或 'query_support_tickets' 工具来查询相应的数据库。你需要提供 SQL 查询语句作为工具的参数。
  4. 调用 Python 脚本执行工具: LLM 可以调用 'execute_python_program' 工具来执行Python代码。你需要提供 'pythonCode' (Python 代码字符串) 和 'dataValues' (JSON 格式的数据字符串) 作为工具的参数。

请参考 MCP 客户端的文档,了解如何在客户端中调用和使用这些工具。

信息

分类

数据库与文件