Go MCP Postgres

Um servidor MCP independente para interagir com bancos de dados PostgreSQL. Ele suporta operações CRUD, um modo somente leitura e verificação de planos de consulta.

Documentação

go-mcp-postgres

Visão Geral

Código copiado de https://github.com/Zhwt/go-mcp-mysql/ e, com ajuda de IA, mudei o banco de dados de MySQL para Postgres. Servidor Model Context Protocol (MCP) de zero esforço e pronto para uso, para interagir com Postgres e automação. Não é necessário ambiente Node.js ou Python. Este servidor fornece ferramentas para realizar operações CRUD em bancos de dados e tabelas MySQL, além de um modo somente leitura para evitar operações de escrita inesperadas. Você também pode fazer o servidor MCP verificar o plano de consulta usando uma instrução EXPLAIN antes de executar a consulta, adicionando uma flag --with-explain-check.

Observe que este projeto está em desenvolvimento e pode ainda não estar pronto para uso em produção.

Instalação

  1. Obtenha a versão mais recente release e coloque-a no seu $PATH ou em algum local de fácil acesso.

  2. Ou, se você tiver o Go instalado, pode compilar a partir do código-fonte:

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

Uso

Método A: Usando Argumentos de Linha de Comando para o modo stdio

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

Observação: Para aqueles que colocam o binário fora do seu $PATH, é necessário substituir go-mcp-postgres pelo caminho completo do binário: ex.: se você colocar o binário na pasta Downloads, pode usar o seguinte caminho:

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

Método B: Usando Argumentos de Linha de Comando para o modo sse

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

Flags Opcionais

  • --lang: Define a opção de idioma (en/zh-CN), o padrão é o idioma do sistema
  • Adicione uma flag --read-only para ativar o modo somente leitura. Nesse modo, apenas as ferramentas que começam com list, read_ e desc_ ficam disponíveis. Certifique-se de atualizar/reiniciar o servidor MCP após adicionar esta flag.
  • Por padrão, as consultas CRUD são executadas primeiro com uma instrução EXPLAIN ? para verificar se o plano de consulta gerado corresponde ao padrão esperado. Adicione uma flag --with-explain-check para desabilitar esse comportamento.

Ferramentas

Suporte a vários idiomas: todas as descrições das ferramentas serão localizadas automaticamente com base no parâmetro lang

Se você quiser adicionar seu próprio idioma, consulte a pasta [locales](for i18n). O novo arquivo locales/xxx/active-xx.toml deve ser criado se você quiser usá-lo na linha de comando.

Ferramentas de Esquema

  1. list_database

    • ${mcp.tool.list_database.desc}
    • Parâmetros: Nenhum
    • Retorna: Uma lista de nomes de bancos de dados correspondentes.
  2. list_table

    • ${mcp.tool.list_table.desc}
    • Parâmetros:
      • name: Se informado, lista as tabelas com o nome especificado; caso contrário, lista todas as tabelas.
    • Retorna: Uma lista de nomes de tabelas correspondentes.
  3. create_table

    • ${mcp.tool.create_table.desc}
    • Parâmetros:
      • query: A consulta SQL para criar a tabela.
    • Retorna: x linhas afetadas.
  4. alter_table

    • Altera uma tabela existente no servidor Postgres. O LLM é instruído a não excluir uma tabela ou coluna existente.
    • Parâmetros:
      • query: A consulta SQL para alterar a tabela.
    • Retorna: x linhas afetadas.
  5. desc_table

    • Descreve a estrutura de uma tabela.
    • Parâmetros:
      • name: O nome da tabela a ser descrita.
    • Retorna: A estrutura da tabela.

Ferramentas de Dados

  1. read_query

    • Executa uma consulta SQL somente leitura.
    • Parâmetros:
      • query: A consulta SQL a ser executada.
    • Retorna: O resultado da consulta.
  2. write_query

    • Executa uma consulta SQL de escrita.
    • Parâmetros:
      • query: A consulta SQL a ser executada.
    • Retorna: x linhas afetadas, último ID inserido: <last_insert_id>.
  3. update_query

    • Executa uma consulta SQL de atualização.
    • Parâmetros:
      • query: A consulta SQL a ser executada.
    • Retorna: x linhas afetadas.
  4. delete_query

    • Executa uma consulta SQL de exclusão.
    • Parâmetros:
      • query: A consulta SQL a ser executada.
    • Retorna: x linhas afetadas.
  5. count_query

    • Consulta o número de linhas em uma determinada tabela.
    • Parâmetros:
      • name: O nome da tabela a ser contada.
    • Retorna: O número de linhas da tabela.

Muito obrigado novamente a https://github.com/Zhwt/go-mcp-mysql/.

Licença

MIT