Simple PostgreSQL MCP Server

Simple PostgreSQL MCP Server

一个用于构建自定义 MCP 服务器的模板项目,该服务器能够直接访问 PostgreSQL 数据库,并允许通过模型上下文协议 (Model Context Protocol) 执行 SQL 查询和检索模式信息。

Category
访问服务器

README

简易 PostgreSQL MCP 服务器

这是一个为那些希望构建自己的 MCP 服务器的人提供的模板项目。我将其设计得非常简单易懂且易于修改 - 代码简单明了,并附带 MCP 文档,以便您可以快速上手。

什么是 MCP?

TL;DR - 这是一种为 AI 编写插件的方式

模型上下文协议 (MCP) 是一种 LLM 与外部工具和数据交互的标准方式。简而言之:

  • 工具 允许 LLM 执行命令(例如运行数据库查询)
  • 资源 是您可以附加到对话的数据(例如将文件附加到提示)
  • 提示 是生成一致 LLM 指令的模板

功能

此 PostgreSQL MCP 服务器实现了:

  1. 工具

    • execute_query - 针对您的数据库运行 SQL 查询
    • test_connection - 验证数据库连接是否正常工作
  2. 资源

    • db://tables - 模式中所有表的列表
    • db://tables/{table_name} - 特定表的模式信息
    • db://schema - 数据库中所有表的完整模式信息
  3. 提示

    • 查询生成模板
    • 分析查询构建器
    • 基于此存储库中的模板

前提条件

  • Python 3.8+
  • uv - 现代 Python 包管理器和安装程序
  • npx (包含在 Node.js 中)
  • 您可以连接到的 PostgreSQL 数据库

快速设置

  1. 创建一个虚拟环境并安装依赖项:

    # 使用 uv 创建一个虚拟环境
    uv venv
    
    # 激活虚拟环境
    source .venv/bin/activate  # 在 Windows 上: .venv\Scripts\activate
    
    # 安装依赖项
    uv pip install -r requirements.txt
    
  2. 使用 MCP Inspector 运行服务器:

    # 替换为您实际的数据库凭据
    npx @modelcontextprotocol/inspector uv --directory . run postgres -e DSN=postgresql://username:password@hostname:port/database -e SCHEMA=public
    

    注意:如果这是您第一次运行 npx,系统会提示您批准安装。键入“y”继续。

    运行此命令后,您将在浏览器中看到启动的 MCP Inspector 界面。您应该看到类似以下的消息:

    MCP Inspector is up and running at http://localhost:5173
    

    如果浏览器没有自动打开,请将 URL 复制并粘贴到您的浏览器中。您应该看到类似这样的内容: MCP Inspector Interface

  3. 使用 Inspector:

    • 单击界面中的“Connect”按钮(除非左下角的控制台中出现错误消息)
    • 浏览“Tools”、“Resources”和“Prompts”选项卡以查看可用功能
    • 尝试单击列出的命令或键入资源名称以检索资源和提示
    • 该界面允许您测试查询并查看 MCP 服务器如何响应
  4. 查看官方文档

    官方服务器开发者指南:https://modelcontextprotocol.io/quickstart/server

    有关 Inspector 的更多信息:https://modelcontextprotocol.io/docs/tools/inspector

将您的 AI 工具连接到服务器

您可以通过创建 MCP 配置文件来为您的 AI 助手配置 MCP 服务器:

{
   "mcpServers": {
      "postgres": {
         "command": "/path/to/uv",
         "args": [
            "--directory",
            "/path/to/simple-psql-mcp",
            "run",
            "postgres"
         ],
         "env": {
            "DSN": "postgresql://username:password@localhost:5432/my-db",
            "SCHEMA": "public"
         }
      }
   }
}

或者,您可以使用包含的脚本生成此配置文件:

# 使脚本可执行
chmod +x generate_mcp_config.sh

# 运行配置生成器
./generate_mcp_config.sh

出现提示时,输入您的 PostgreSQL DSN 和模式名称。

如何使用它

您现在可以用自然语言向 LLM 询问有关您数据的问题:

  • "我的数据库中所有表是什么?"
  • "显示我按创建日期排序的前 5 名用户"
  • "按州统计地址"

对于测试,Claude Desktop 本身支持 MCP,并且可以开箱即用地使用所有功能(工具、资源和提示)。

示例数据库(可选)

如果您没有准备好的数据库或遇到连接问题,可以使用包含的示例数据库:

# 使脚本可执行
chmod +x example-db/create-db.sh

# 运行数据库设置脚本
./example-db/create-db.sh

此脚本创建一个 Docker 容器,其中包含一个预先填充了示例用户和地址表的 PostgreSQL 数据库。运行后,您可以使用以下方式连接:

npx @modelcontextprotocol/inspector uv --directory . run postgres -e DSN=postgresql://postgres:postgres@localhost:5432/user_database -e SCHEMA=public

下一步

要使用您自己的 MCP 服务器扩展此项目:

  1. /src 下创建一个新目录(例如,/src/my-new-mcp
  2. 按照 PostgreSQL 示例实现您的 MCP 服务器
  3. 将您的新 MCP 添加到 pyproject.toml
[project.scripts]
postgres = "src.postgres:main"
my-new-mcp = "src.my-new-mcp:main"

然后,您可以使用以下命令运行您的新 MCP:

npx @modelcontextprotocol/inspector uv --directory . run my-new-mcp

文档

  • 包含 MCP 文档,便于 LLM 开发
  • 基于以下方法:https://modelcontextprotocol.io/tutorials/building-mcp-with-llms

安全

这是一个实验性项目,旨在使开发人员能够创建自己的 MCP 服务器。我做了最少的工作来确保它在您尝试时不会立即崩溃,但请小心 - 使用此工具很容易运行 SQL 注入。服务器将检查查询是否以 SELECT 开头,但除此之外,没有任何保证。TL;DR - 除非您是创始人并且没有付费客户,否则不要在生产环境中运行。

许可证

MIT

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选