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
-
Obtenha a versão mais recente release e coloque-a no seu
$PATHou em algum local de fácil acesso. -
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-onlypara ativar o modo somente leitura. Nesse modo, apenas as ferramentas que começam comlist,read_edesc_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-checkpara 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
-
list_database- ${mcp.tool.list_database.desc}
- Parâmetros: Nenhum
- Retorna: Uma lista de nomes de bancos de dados correspondentes.
-
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.
-
create_table- ${mcp.tool.create_table.desc}
- Parâmetros:
query: A consulta SQL para criar a tabela.
- Retorna: x linhas afetadas.
-
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.
-
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
-
read_query- Executa uma consulta SQL somente leitura.
- Parâmetros:
query: A consulta SQL a ser executada.
- Retorna: O resultado da consulta.
-
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>.
-
update_query- Executa uma consulta SQL de atualização.
- Parâmetros:
query: A consulta SQL a ser executada.
- Retorna: x linhas afetadas.
-
delete_query- Executa uma consulta SQL de exclusão.
- Parâmetros:
query: A consulta SQL a ser executada.
- Retorna: x linhas afetadas.
-
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