mcpField
M
MCP PostgreSQL Demo

MCP PostgreSQL Demo

本地服务
github.com/Tibiritabara数据库780 周前更新

关于 MCP PostgreSQL Demo

MCP PostgreSQL Demo 是一个基于 FastMCP 的服务,面向需要让 LLM 查询和探索 PostgreSQL 数据库的场景。它通过资源提供模式与表结构信息,并以只读 SQL 查询数据库,结果使用 YAML 格式。

主要功能

  1. 01浏览数据库模式元数据
  2. 02查看表结构详情
  3. 03执行仅限 SELECT 的查询
  4. 04以 YAML 格式返回结果
  5. 05提供模式、表和查询提示词

适用场景

  1. 01让 LLM 检查数据库模式和表结构
  2. 02查询 PostgreSQL 表中的数据
  3. 03通过资源读取模式或表详情

MCP 相关

该 MCP 服务向客户端提供数据库模式和表详情资源、仅支持 SELECT 的查询工具,以及用于描述模式、表和查询数据的提示词。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

MCP PostgreSQL 演示

一个 FastMCP 服务,可让大模型连接并与 PostgreSQL 数据库交互。本项目展示了如何使用 Model Context Protocol(MCP),让语言模型查询和探索数据库架构与表。

功能

  • 架构探索:获取数据库架构的元数据
  • 表检查:获取表结构的详细信息
  • 数据库查询:对数据库执行 SQL 查询
  • YAML 格式:以 YAML 格式返回结果,便于大模型使用

资源

该服务提供以下 MCP 资源:

  • database://{schema} - 获取架构中所有表的信息
  • database://{schema}/tables/{table} - 获取特定表的详细信息

工具

  • query_database - 对数据库执行 SQL 查询(仅支持 SELECT 查询)

提示词

该服务包含以下预定义提示词:

  • prompt_schema_description - 请求描述数据库架构
  • prompt_table_description - 请求描述特定表
  • prompt_query_database - 请求获取特定表的数据

前提条件

  • Python 3.12 或更高版本
  • PostgreSQL 数据库
  • UV 包管理器(推荐)

安装

  1. 克隆仓库:

    git clone <repository-url>
    cd mcp-demo
    
  2. 创建虚拟环境:

    python -m venv .venv
    source .venv/bin/activate  # On Windows: .venv\Scripts\activate
    
  3. 安装 UV(如果尚未安装):

    pip install uv
    
  4. 使用 UV 安装依赖:

    uv sync
    
  5. 配置环境变量:

    • 将 .env.example 复制为 .env
    • 根据 PostgreSQL 配置更新相应的值

配置

应用使用环境变量进行配置:

变量描述默认值
APP_NAME应用名称mcp-demo
DB_HOSTPostgreSQL 主机localhost
DB_PORTPostgreSQL 端口5432
DB_USERPostgreSQL 用户名postgres
DB_PASSWORDPostgreSQL 密码postgres
DB_NAMEPostgreSQL 数据库名称postgres

使用方法

  1. 首先,在 src/main.py 中取消注释运行函数:删除文件底部以下几行的注释:

    # if __name__ == "__main__":
    #     print("Starting FastMCP server...")
    #     mcp.run()
    
  2. 启动 FastMCP 服务:

    python -m src.main
    
  3. 大模型即可连接该服务并查询 PostgreSQL 数据库。服务运行后,可将 MCP 加载到客户端应用中进行交互。

客户端配置

要在客户端应用中使用此 MCP,请将以下配置添加到客户端的 MCP 配置文件中(例如 .cursor/mcp.json):

{
  "mcpServers": {
    "postgres-mcp-server": {
      "command": "/path/to/your/venv/bin/mcp",
      "args": ["run", "/path/to/your/postgres-mcp/src/main.py"],
      "env": {
        "APP_NAME": "mcp-demo",
        "DB_HOST": "localhost",
        "DB_PORT": "5432",
        "DB_USER": "postgres",
        "DB_PASSWORD": "postgres",
        "DB_NAME": "postgres"
      }
    }
  }
}

请务必将路径替换为虚拟环境和项目目录的实际路径,并更新环境变量以匹配 PostgreSQL 配置。

开发

使用 UV 安装开发依赖:

uv pip install -e ".[dev]"

包含的开发工具:

  • 用于笔记本的 JupyterLab
  • 用于类型检查的 Pyright
  • 用于代码检查的 Ruff

Docker

使用 Docker 运行应用:

  1. 构建 Docker 镜像:

    docker build -t mcp-demo .
    
  2. 运行容器:

    docker run --env-file .env.docker -p 8000:8000 mcp-demo
    

使用示例

获取架构信息
from mcp.client import get_client

client = get_client("http://localhost:8000")
schema_info = client.get_resource("database://public")
print(schema_info)
获取表详情
table_info = client.get_resource("database://public/tables/users")
print(table_info)
执行查询
result = client.invoke_tool("query_database", {"query": "SELECT * FROM users LIMIT 10"})
print(result)

许可证

[在此添加许可证信息]

贡献者

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。