Skip to main content
Glama

go-mcp-postgres

go-mcp-postgres

Overview

Copy code from https://github.com/Zhwt/go-mcp-mysql/ and with AI help, I change db from mysql to postgres. Zero burden, ready-to-use Model Context Protocol (MCP) server for interacting with Postgres and automation. No Node.js or Python environment needed. This server provides tools to do CRUD operations on MySQL databases and tables, and a read-only mode to prevent surprise write operations. You can also make the MCP server check the query plan by using a EXPLAIN statement before executing the query by adding a --with-explain-check flag.

Please note that this is a work in progress and may not yet be ready for production use.

Installation

  1. Get the latest release and put it in your $PATH or somewhere you can easily access.
  2. Or if you have Go installed, you can build it from source:
go install -v github.com/guoling2008/go-mcp-postgres@latest

Usage

Method A: Using Command Line Arguments for stdio mode

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

Note: For those who put the binary outside of your $PATH, you need to replace go-mcp-postgres with the full path to the binary: e.g.: if you put the binary in the Downloads folder, you may use the following path:

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

Method B: Using Command Line Arguments for sse mode

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

Optional Flags

  • --lang: Set language option (en/zh-CN), defaults to system language
  • Add a --read-only flag to enable read-only mode. In this mode, only tools beginning with list, read_ and desc_ are available. Make sure to refresh/restart the MCP server after adding this flag.
  • By default, CRUD queries will be first executed with a EXPLAIN ? statement to check whether the generated query plan matches the expected pattern. Add a --with-explain-check flag to disable this behavior.

Tools

Multi-language support: All tool descriptions will automatically localize based on lang parameter

If you want to add your own language support, please refer to the [locales](for i18n) folder. The new locales/xxx/active-xx.toml file should be created if you want to use it in command line.

Schema Tools

  1. list_database
    • ${mcp.tool.list_database.desc}
    • Parameters: None
    • Returns: A list of matching database names.
  2. list_table
    • ${mcp.tool.list_table.desc}
    • Parameters:
      • name: If provided, list tables with the specified name, Otherwise, list all tables.
    • Returns: A list of matching table names.
  3. create_table
    • ${mcp.tool.create_table.desc}
    • Parameters:
      • query: The SQL query to create the table.
    • Returns: x rows affected.
  4. alter_table
    • Alter an existing table in the Postgres server. The LLM is informed not to drop an existing table or column.
    • Parameters:
      • query: The SQL query to alter the table.
    • Returns: x rows affected.
  5. desc_table
    • Describe the structure of a table.
    • Parameters:
      • name: The name of the table to describe.
    • Returns: The structure of the table.

Data Tools

  1. read_query
    • Execute a read-only SQL query.
    • Parameters:
      • query: The SQL query to execute.
    • Returns: The result of the query.
  2. write_query
    • Execute a write SQL query.
    • Parameters:
      • query: The SQL query to execute.
    • Returns: x rows affected, last insert id: .
  3. update_query
    • Execute an update SQL query.
    • Parameters:
      • query: The SQL query to execute.
    • Returns: x rows affected.
  4. delete_query
    • Execute a delete SQL query.
    • Parameters:
      • query: The SQL query to execute.
    • Returns: x rows affected.
  5. count_query
    • Query the number of rows in a certain table..
    • Parameters:
      • name: The name of the table to count.
    • Returns: The row number of the table.

Big thanks to https://github.com/Zhwt/go-mcp-mysql/ again.

License

MIT

-
security - not tested
A
license - permissive license
-
quality - not tested

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

what is go-mcp-postgres? go-mcp-postgres is a Model Context Protocol (MCP) server designed for interacting with Postgres databases, allowing for easy CRUD operations and automation without the need for a Node.js or Python environment.

Related MCP Servers

  • -
    security
    A
    license
    -
    quality
    Go server implementing Model Context Protocol (MCP) for filesystem operations.
    Last updated -
    427
    Go
    MIT License
  • -
    security
    A
    license
    -
    quality
    godoc-mcp is a Model Context Protocol (MCP) server that provides efficient access to Go documentation. It helps LLMs understand Go projects by providing direct access to package documentation without needing to read entire source files.
    Last updated -
    61
    Go
    MIT License
  • -
    security
    F
    license
    -
    quality
    PG-MCP is an HTTP server implementation that enables AI systems to interact with PostgreSQL databases via MCP, providing tools for querying, connecting to multiple databases, and exploring schema resources. The system enriches context by extracting table/column description from database catalogs.
    Last updated -
    21
    • Linux
    • Apple
  • A
    security
    A
    license
    A
    quality
    Postgres Pro is an open source Model Context Protocol (MCP) server built to support you and your AI agents throughout the entire development process—from initial coding, through testing and deployment, and to production tuning and maintenance.
    Last updated -
    9
    751
    Python
    MIT License
    • Apple
    • Linux

View all related MCP servers

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/guoling2008/go-mcp-postgres'

If you have feedback or need assistance with the MCP directory API, please join our Discord server