数据库AI聊天服务

MCP SERVER是一个允许用户通过AI与PostgreSQL数据库进行交互的服务,支持查询、写入操作及查询保存,可部署在Cloudflare Workers上。

  • by tiago123456789
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 tiago123456789/direct-database-access-mcp-server

使用说明

关于

  • MCP SERVER,允许您使用AI与数据库(Postgresql)聊天
  • 您可以使用Cloudflare Workers将此MCP服务器部署为远程MCP服务器

主要特点

  • 列出数据库的表
  • 查询数据库的表
  • 执行写入操作,如INSERT/UPDATE/DELETE(仅限特权用户)
  • 创建查询并保存以供以后执行。PS:您可以使用参数创建查询 并保存查询以供以后执行。
  • 发送给Cloudflare Workers的所有操作都将检查标头中发送的api密钥

文件夹结构

- src/
  - database/      // Database connection and utils
  - tools/         // Tools implementation
  - repositories/  // Repositories implementation

传输协议

此MCP服务器支持现代和传统传输协议:

  • /mcp -流式HTTP (推荐):使用具有双向通信、自动连接升级和更好的网络中断恢复能力的单个端点
  • /sse -服务器发送的事件 (遗留):对请求/响应使用单独的端点,保持向后兼容性

对于新的实现,请使用 /mcp 端点,因为它提供了更好的性能和可靠性。

先决条件

  • Node.js已安装在您的计算机上
  • Cloudflare帐户(免费版有效)
  • PostgreSQL数据库(本地或托管)

步骤1:安装Wrangler CLI

在全球范围内安装Wrangler以管理您的Cloudflare Workers:

npm install -g wrangler

步骤2:使用Cloudflare进行身份验证

登录您的Cloudflare帐户:

wrangler login

这将打开一个浏览器窗口,您可以在其中使用Cloudflare帐户进行身份验证。

步骤3:克隆并安装依赖项

直接克隆仓库并安装依赖项: pnpm install.

环境变量设置

在运行MCP服务器之前,您需要为身份验证和数据库访问配置几个环境变量。

创建环境变量文件

  1. 创建您的 .dev.vars 文件 从示例中可以看出:

    cp .dev.vars.example .dev.vars
    
  2. 配置所有必需的环境变量 在 .dev.vars:

    ACCESS_TOKEN=random_value_to_use_as_api_key
    DATABASE_URL=postgresql://username:password@localhost:5432/database_name
    

数据库设置

  • 要保存查询以便稍后执行,您需要在数据库上执行SQL脚本。PS:您需要执行名为的脚本 instructions.sql 只有一次。

在本地运行服务器

wrangler dev

这使得服务器在以下位置可用 http://localhost:8792

生产部署

部署

部署MCP服务器,使其在workers.dev域上可用

wrangler deploy

从Kilo Code和Vscode访问远程MCP服务器

您可以使用以下配置从Kilo Code和Vscode访问远程MCP服务器:

// Kilocode MCP
{
  "mcpServers": {
    "direct-database-mcp-server-prod": {
      "url": "url_cloudflare_workers_generated_after_deployed/sse",
      "headers": {
        "api-key": "Bearer same_value_of_ACCESS_TOKEN"
      }
    }
  }
}
// Vscode MCP
{
  "servers": {
    "direct-database-mcp-server-prod": {
      "url": "https://my-mcp-server.tiagorosadacost.workers.dev/sse",
      "headers": {
        "api-key": "Bearer 701cdccb-e605-423f-a778-66ed0698117f"
      }
    }
  }
}