mcpField
G
go-mcp-postgres

go-mcp-postgres

本地服务
github.com/guoling2008数据库761 周前更新

关于 go-mcp-postgres

go-mcp-postgres 是面向 PostgreSQL 数据库操作与自动化的 MCP 服务,提供数据库、表结构和数据查询工具。支持 stdio 与 SSE 模式、只读限制及查询计划检查;项目目前仍在开发中。

主要功能

  1. 01数据库与表结构操作
  2. 02SQL 读取、写入、更新和删除
  3. 03只读模式限制写操作
  4. 04执行前检查查询计划
  5. 05stdio 与 SSE 模式
  6. 06工具描述多语言支持

适用场景

  1. 01通过 AI 客户端查看 PostgreSQL 数据库和表
  2. 02在限制写入的模式下进行查询
  3. 03检查查询计划后执行数据库操作

MCP 相关

作为 MCP 服务向客户端提供 PostgreSQL 数据库与表管理、SQL 查询及数据修改工具,支持 stdio 和 SSE 连接。

配置

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

暂未收录安装方式

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

代码仓库

工具

还没有获取到工具列表

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

详细介绍

go-mcp-postgres

概述

从 https://github.com/Zhwt/go-mcp-mysql/ 复制代码,并借助 AI 将数据库从 mysql 改为 postgres。 零负担、开箱即用的模型上下文协议(MCP)服务,可用于与 Postgres 交互和自动化。无需 Node.js 或 Python 环境。此服务提供用于对 MySQL 数据库和表执行 CRUD 操作的工具,以及可防止意外写入操作的只读模式。你也可以添加 --with-explain-check 标志,让 MCP 服务在执行查询前使用 EXPLAIN 语句检查查询计划。

请注意,这是一个正在开发中的项目,可能尚未适合用于生产环境。

安装

  1. 获取最新的发行版本,并将其放入 $PATH 或其他便于访问的位置。

  2. 或者,如果已安装 Go,可以从源代码构建:

go install -v github.com/guoling2008/go-mcp-postgres@latest

用法

方法 A:在 stdio 模式下使用命令行参数
{
  "mcpServers": {
    "postgres": {
      "command": "go-mcp-postgres",
      "args": [
        "--dsn",
        "postgresql://user:pass@host:port/db"
      ]
    }
  }
}

注意:如果将二进制文件放在 $PATH 之外,需要将 go-mcp-postgres 替换为二进制文件的完整路径。例如:如果将二进制文件放在 Downloads 文件夹中,可以使用以下路径:

{
  "mcpServers": {
    "postgres": {
      "command": "C:\\Users\\<username>\\Downloads\\go-mcp-postgres.exe",
      "args": [
        ...
      ]
    }
  }
}
方法 B:在 sse 模式下使用命令行参数

./go-mcp-postgres --t sse --ip x.x.x.x --port nnnn --dsn postgresql://user:pass@host:port/db --lang en

可选标志
  • --lang:设置语言选项(en/zh-CN),默认为系统语言
  • 添加 --read-only 标志以启用只读模式。在此模式下,只有以 list、read_ 和 desc_ 开头的工具可用。添加此标志后,请务必刷新或重启 MCP 服务。
  • 默认情况下,CRUD 查询会先通过 EXPLAIN ? 语句执行,以检查生成的查询计划是否符合预期模式。添加 --with-explain-check 标志可禁用此行为。

工具

支持多语言:所有工具说明都会根据 lang 参数自动本地化

如果想添加自己的语言支持,请参阅 [locales](for i18n) 文件夹。 如果想在命令行中使用新语言,需要创建新的 locales/xxx/active-xx.toml 文件。

架构工具
  1. list_database

    • ${mcp.tool.list_database.desc}
    • 参数:无
    • 返回:匹配的数据库名称列表。
  2. list_table

    • ${mcp.tool.list_table.desc}
    • 参数:
      • name:如果提供,则列出指定名称的表;否则,列出所有表。
    • 返回:匹配的表名称列表。
  3. create_table

    • ${mcp.tool.create_table.desc}
    • 参数:
      • query:用于创建表的 SQL 查询。
    • 返回:受影响的行数。
  4. alter_table

    • 在 Postgres 服务中修改现有表。会告知大模型不要删除现有表或列。
    • 参数:
      • query:用于修改表的 SQL 查询。
    • 返回:受影响的行数。
  5. desc_table

    • 描述表的结构。
    • 参数:
      • name:要描述的表的名称。
    • 返回:表的结构。
数据工具
  1. read_query

    • 执行只读 SQL 查询。
    • 参数:
      • query:要执行的 SQL 查询。
    • 返回:查询结果。
  2. write_query

    • 执行写入 SQL 查询。
    • 参数:
      • query:要执行的 SQL 查询。
    • 返回:受影响的行数 x,最后插入的 ID:<last_insert_id>。
  3. update_query

    • 执行更新 SQL 查询。
    • 参数:
      • query:要执行的 SQL 查询。
    • 返回:受影响的行数 x。
  4. delete_query

    • 执行删除 SQL 查询。
    • 参数:
      • query:要执行的 SQL 查询。
    • 返回:受影响的行数 x。

再次特别感谢 https://github.com/Zhwt/go-mcp-mysql/。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

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

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