PostgreSQL协议服务器

一个零负担、即用的模型上下文协议(MCP)服务器,用于与PostgreSQL交互和自动化操作,无需Node.js或Python环境。

  • by guoling2008
  • Go
  • 本地部署
  • 6 星标
  • 更新于
在 GitHub 查看 guoling2008/go-mcp-postgres

使用说明

走向mcp postgres

概述

从以下位置复制代码https://github.com/Zhwt/go-mcp-mysql/在人工智能的帮助下,我将db从mysql更改为postgres。 零负担、即用型模型上下文协议(MCP)服务器,用于与Postgres交互和自动化。不需要Node.js或Python环境。该服务器提供对MySQL数据库和表执行CRUD操作的工具,以及防止意外写入操作的只读模式。您还可以使用以下命令使MCP服务器检查查询计划 EXPLAIN 在执行查询之前,通过添加一个 --with-explain-check 旗帜。

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

安装

  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 带有二进制文件的完整路径:例如:如果你把二进制文件放在 下载 文件夹,您可以使用以下路径:

{
  "mcpServers": {
    "postgres": {
      "command": "C:\\Users\\<username>\\Downloads\\go-mcp-postgres.exe",
      "args": [
        ...
      ]
    }
  }
}

方法B:使用sse模式的命令行参数

./go mcp postgres--tsse--ip x.x.x.x--端口nnnn--dsn postgresql://user:pass@主机:端口/db--lang en

可选标志

  • --lang:设置语言选项(en/zh-CN),默认为系统语言
  • 添加a --read-only 标志以启用只读模式。在此模式下,只有以开头的工具 list, read_ 和 desc_ 可用。添加此标志后,请确保刷新/重新启动MCP服务器。
  • 默认情况下,CRUD查询将首先使用 EXPLAIN ? 语句,用于检查生成的查询计划是否与预期模式匹配。添加a --with-explain-check 标记以禁用此行为。

工具

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

如果您想添加自己的语言支持,请参阅[locale](适用于i18n)文件夹。 如果要在命令行中使用新的locale/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查询。
    • 返回:受影响的x行。
  4. alter_table

    • 更改Postgres服务器中的现有表。通知LLM不要删除现有的表或列。
    • 参数:
      • query:更改表的SQL查询。
    • 返回:受影响的x行。
  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行。
  5. count_query

    • 查询某个表中的行数。.
    • 参数:
      • name:要计数的表的名称。
    • 返回值:表的行号。

再次衷心感谢https://gith.com/Zhwt/go-mcp-mysql/。

许可证

麻省理工学院