返回市场
-go-mcp-postgresql

-go-mcp-postgresql

作者:guoling20086 星标更新:2025-08-27

项目介绍

go-mcp-postgres

概述

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

请注意,这是一项正在进行的工作,可能尚未准备好用于生产环境。

安装

  1. 获取最新发布版本,并将其放置在您的 $PATH 或易于访问的位置。

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

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

使用方法

方法A:使用命令行参数进行标准I/O模式

{
  "mcpServers": {
    "postgres": {
      "command": "go-mcp-postgres",
      "args": [
        "--dsn",
        "postgresql://user:pass@host:port/db"
      ]
    }
  }
}

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

{
  "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 标志启用只读模式。在此模式下,只有以 listread_desc_ 开头的工具可用。确保在添加此标志后刷新/重启MCP服务器。
  • 默认情况下,CRUD查询会先使用 EXPLAIN ? 语句执行,以检查生成的查询计划是否符合预期模式。添加 --with-explain-check 标志可禁用此行为。

工具

多语言支持:所有工具描述将根据lang参数自动本地化

如果您想添加自己的语言支持,请参考locales文件夹。 如果要在命令行中使用它,应创建新的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

    • 修改PostgreSQL服务器中的现有表。LLM被告知不要删除现有的表或列。
    • 参数:
      • query: 修改表的SQL查询。
    • 返回值:受影响的行数。
  5. desc_table

    • 描述表的结构。
    • 参数:
      • name: 要描述的表名。
    • 返回值:表的结构。

数据工具

  1. read_query

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

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

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

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

    • 查询特定表中的行数。
    • 参数:
      • name: 要计数的表名。
    • 返回值:表的行数。

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

许可证

MIT