MCP PostgreSQL Demo

MCP PostgreSQL Demo

Postgres MCP 服务器

Tibiritabara

研究与数据
访问服务器

README

MCP PostgreSQL 演示

一个 FastMCP 服务器,使 LLM 能够连接并与 PostgreSQL 数据库交互。 本项目演示了如何使用模型上下文协议 (MCP) 允许语言模型查询和探索数据库模式和表。

特性

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

资源

服务器公开以下 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  # 在 Windows 上: .venv\Scripts\activate
    
  3. 安装 UV(如果尚未安装):

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

    uv sync
    
  5. 配置环境变量:

    • 复制 .env.example.env
    • 根据您的 PostgreSQL 配置更新值

配置

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

变量 描述 默认值
APP_NAME 应用程序名称 mcp-demo
DB_HOST PostgreSQL 主机 localhost
DB_PORT PostgreSQL 端口 5432
DB_USER PostgreSQL 用户名 postgres
DB_PASSWORD PostgreSQL 密码 postgres
DB_NAME PostgreSQL 数据库名称 postgres

用法

  1. 首先,通过删除文件底部这些行的注释来取消注释 src/main.py 中的 run 函数:

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

    python -m src.main
    
  3. 服务器将可供 LLM 连接并查询您的 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)

许可证

[在此处添加您的许可证信息]

贡献者

推荐服务器

Crypto Price & Market Analysis MCP Server

Crypto Price & Market Analysis MCP Server

一个模型上下文协议 (MCP) 服务器,它使用 CoinCap API 提供全面的加密货币分析。该服务器通过一个易于使用的界面提供实时价格数据、市场分析和历史趋势。 (Alternative, slightly more formal and technical translation): 一个模型上下文协议 (MCP) 服务器,利用 CoinCap API 提供全面的加密货币分析服务。该服务器通过用户友好的界面,提供实时价格数据、市场分析以及历史趋势数据。

精选
TypeScript
MCP PubMed Search

MCP PubMed Search

用于搜索 PubMed 的服务器(PubMed 是一个免费的在线数据库,用户可以在其中搜索生物医学和生命科学文献)。 我是在 MCP 发布当天创建的,但当时正在度假。 我看到有人在您的数据库中发布了类似的服务器,但还是决定发布我的。

精选
Python
mixpanel

mixpanel

连接到您的 Mixpanel 数据。从 Mixpanel 分析查询事件、留存和漏斗数据。

精选
TypeScript
Sequential Thinking MCP Server

Sequential Thinking MCP Server

这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。

精选
Python
Nefino MCP Server

Nefino MCP Server

为大型语言模型提供访问德国可再生能源项目新闻和信息的能力,允许按地点、主题(太阳能、风能、氢能)和日期范围进行筛选。

官方
Python
Vectorize

Vectorize

将 MCP 服务器向量化以实现高级检索、私有深度研究、Anything-to-Markdown 文件提取和文本分块。

官方
JavaScript
Mathematica Documentation MCP server

Mathematica Documentation MCP server

一个服务器,通过 FastMCP 提供对 Mathematica 文档的访问,使用户能够从 Wolfram Mathematica 检索函数文档和列出软件包符号。

本地
Python
kb-mcp-server

kb-mcp-server

一个 MCP 服务器,旨在实现便携性、本地化、简易性和便利性,以支持对 txtai “all in one” 嵌入数据库进行基于语义/图的检索。任何 tar.gz 格式的 txtai 嵌入数据库都可以被加载。

本地
Python
Research MCP Server

Research MCP Server

这个服务器用作 MCP 服务器,与 Notion 交互以检索和创建调查数据,并与 Claude Desktop Client 集成以进行和审查调查。

本地
Python
Cryo MCP Server

Cryo MCP Server

一个API服务器,实现了模型补全协议(MCP),用于Cryo区块链数据提取。它允许用户通过任何兼容MCP的客户端查询以太坊区块链数据。

本地
Python