A Model Control Protocol (MCP) server implementation for PostgreSQL databases. This project provides a simple HTTP interface to interact with PostgreSQL databases through MCP, allowing you to execute read-only queries and explore database resources.
- MCP-compliant HTTP server
- Read-only SQL query execution
- Database resource listing
- Environment variable support through
.env
files - Built with Go and Gin web framework
- Go 1.23.6 or later
- PostgreSQL database
- Git
git clone https://github.com/ipfans/postgres-mcp.git
cd postgres-mcp
go mod download
You can configure the database connection in two ways:
- Using command-line flags:
go run cmd/postgres-mcp/main.go -db "postgres://user:password@localhost:5432/dbname"
- Using environment variables:
- Create a
.env
file in the project root - Add your database URL:
DATABASE_URL=postgres://user:password@localhost:5432/dbname
- Create a
- Start the server:
go run cmd/postgres-mcp/main.go
The server will start on port 8080 by default.
- Interact with the MCP endpoints:
-
List database resources:
POST http://localhost:8080/mcp Content-Type: application/json { "type": "function", "name": "resources" }
-
Execute a read-only query:
POST http://localhost:8080/mcp Content-Type: application/json { "type": "function", "name": "query", "arguments": { "query": "SELECT * FROM your_table LIMIT 10" } }
This project is open source and available under the MIT License.
Contributions are welcome! Please feel free to submit a Pull Request.