@mseep/mcp-server-postgres-init v1.0.0
MCP Server: PostgreSQL Docker Initializer
This project implements a Model Context Protocol (MCP) server that provides a tool to initialize a PostgreSQL database running inside a new Docker container.
The server exposes a single tool, init-postgres-docker, which takes a database name as input and performs the following actions:
- Pulls the
postgres:latestDocker image if not already present. - Creates a new Docker container running PostgreSQL.
- Configures the container with the specified database name (
dbName), a default user (pguser), and a default password (mysecretpassword- Note: This is insecure and for demonstration purposes only). - Maps the container's internal port 5432 to a random available port on the host machine.
- Sets the container to be automatically removed when stopped (
AutoRemove: true). - Returns a success message including the PostgreSQL connection URL (e.g.,
postgresql://pguser:mysecretpassword@localhost:<hostPort>/<dbName>).
Prerequisites
- Node.js and npm (or a compatible package manager)
- Docker (must be running)
- Make
Usage with Makefile
A Makefile is provided for common tasks. Run these commands from the root directory of this project (mcp-server-postgres-init):
Install Dependencies:
make install(Runs
npm install)Build the Project:
make build(Runs
npm run build, which compiles TypeScript to JavaScript in thebuild/directory)Inspect the Server:
make inspect(Runs
make buildfirst, then starts the MCP inspector usingnpx @modelcontextprotocol/inspector node build/index.js. You can then send a request to theinit-postgres-dockertool.)Install, Build, and Inspect (Default):
makeor
make all(Runs
make install,make build, andmake inspectsequentially)Clean Project:
make clean(Removes
node_modules,build, and*.tsbuildinfofiles)
Running Manually
If you prefer not to use Make:
- Install dependencies:
npm install - Build the project:
npm run build - Run the server (e.g., with the inspector):
Or run the server directly if connecting with a client:npx @modelcontextprotocol/inspector node build/index.jsnode build/index.js
Important Notes
- Docker Must Be Running: The Docker daemon needs to be active for this server to create containers.
- Password Security: The default password (
mysecretpassword) is hardcoded and insecure. For real-world use, implement a more secure method for handling passwords (e.g., generation, environment variables). - Resource Management: Containers are set to auto-remove. Consider the lifecycle needed for your use case.
7 months ago