项目简介
本项目是一个基于Model Context Protocol (MCP) 模式实现的后端服务器,专注于PostgreSQL数据库的数据访问和分析。它旨在为大型语言模型(LLM)应用提供结构化的数据库上下文信息和强大的数据操作能力,使其能够更有效地与数据库进行交互。
主要功能点
- Schema探索: 允许LLM客户端浏览PostgreSQL数据库的schema结构,包括schema、表、列、视图和表关系等元数据信息,帮助LLM理解数据结构。
- 只读SQL查询执行: 提供安全的SQL查询执行工具,仅支持只读操作,防止数据被意外修改。LLM可以通过此功能从数据库中检索数据。
- 数据分析Prompt模板: 内置了一系列预定义的Prompt模板,用于常见的数据分析任务。LLM可以利用这些模板快速生成SQL查询,执行复杂的数据分析。
- OpenAPI文档: 自动生成OpenAPI规范的API文档,方便开发者了解和集成服务器提供的各种接口。
- 安全性: 具备多重安全特性,包括只读查询验证、SQL注入防护、速率限制和参数化查询等,保障数据安全和服务器稳定。
安装步骤
-
克隆仓库:
git clone https://github.com/Maxim2324/mcp-server-test.git cd mcp-server-test -
安装依赖:
npm install -
配置环境变量: 复制 '.env.template' 文件并重命名为 '.env',然后根据你的PostgreSQL数据库信息修改 '.env' 文件中的配置项,例如数据库连接地址、用户名、密码等。
-
启动服务器:
npm start或者使用开发模式启动:
npm run dev
服务器配置
MCP客户端需要配置以下server信息以连接到本MCP服务器:
{ "serverName": "PostgreSQL-MCP-Server", // MCP服务器名称,可自定义 "command": "node", // 启动服务器的命令,这里使用 node.js 运行时 "args": ["server.js"], // 启动命令的参数,指向 server.js 文件 "protocol": "http", // 通信协议,本项目使用 HTTP "host": "localhost", // 服务器主机名,如果部署在本地则为 localhost "port": 3000, // 服务器端口号,与 .env 文件中配置的 PORT 一致 "apiBase": "/api" // API 基础路径,本项目API接口都以 /api 开头 }
参数注释:
- 'serverName': 为你的MCP服务器指定一个易于识别的名称。
- 'command': 运行服务器端代码的命令。对于Node.js项目,通常是 'node'。
- 'args': 命令的参数,用于指定要执行的服务器入口文件,这里是 'server.js'。
- 'protocol': MCP客户端与服务器通信的协议,本项目使用基于HTTP的JSON-RPC风格的API,因此设置为 '"http"'。
- 'host': MCP服务器部署的主机地址。如果服务器运行在本地机器上,通常设置为 '"localhost"'。如果部署在远程服务器,则需要设置为服务器的IP地址或域名。
- 'port': MCP服务器监听的端口号。默认情况下,本项目配置为 '3000',可以在 '.env' 文件中修改。
- 'apiBase': API接口的基础路径。本项目的所有API端点都位于 '/api' 路径下。
基本使用方法
服务器启动后,MCP客户端可以通过HTTP请求与服务器进行交互。
常用API示例:
-
获取所有Schema: 'GET http://localhost:3000/api/schemas'
-
获取指定Schema下的所有表: 'GET http://localhost:3000/api/schemas/{schema}/tables'
-
执行SQL查询: 'POST http://localhost:3000/api/query' 请求体 (JSON):
{ "sql": "SELECT * FROM users LIMIT 10" } -
获取Prompt模板列表: 'GET http://localhost:3000/api/prompts'
-
根据Prompt模板生成SQL: 'POST http://localhost:3000/api/prompts/{templateId}/generate' 请求体 (JSON):
{ "params": { "schema": "public", "table": "orders" } }
更多API接口和详细使用方法请参考项目README.md文件和自动生成的OpenAPI文档('/api/openapi' 接口)。
信息
分类
数据库与文件