Skip to main content

PgSQL MCP Server

PyPI - Version PyPI - Python Version Maintainability

English | 简体中文

A powerful tool server based on the Model Context Protocol (MCP), enabling interaction with PostgreSQL databases via MCP calls.


🚀 Overview

This project is built on the FastMCP framework and leverages the SQLAlchemy and asyncpg libraries to deliver high-performance asynchronous database operations, ensuring efficiency and responsiveness when handling database requests.

✨ Key Features

  • Asynchronous & Efficient: Fully asynchronous implementation based on asyncio, utilizing asyncpg for a high-performance asynchronous PostgreSQL driver.
  • Transactional Safety: DDL, DML, and DCL operations are executed within transactions with error handling and rollback mechanisms.
  • Easy Deployment: Start the server with a simple command line interface.

📦 Installation

Ensure you have Python 3.10+ installed. Recommendation:

Using uv (Recommended)

uv tool install pgsql-mcp-server

Then run it:

pgsql-mcp-server --dsn "postgresql://user:password@localhost:5432/db"

Or run directly without installation:

uvx pgsql-mcp-server --dsn "postgresql://user:password@localhost:5432/db"

Using pip

pip install pgsql-mcp-server

🛠️ Available Tools

The server provides the following tools for database interaction:

  • get_schema_names: List all schemas in the database.
  • get_tables: List all tables in a specific schema (defaults to public).
  • get_columns: Get detailed column information for a specific table.
  • get_indexes: Get index details for a specific table.
  • get_foreign_keys: Get foreign key constraints for a specific table.
  • run_dql_query: Execute Data Query Language (DQL) statements like SELECT, SHOW, EXPLAIN.
  • run_dml_query: Execute Data Manipulation Language (DML) statements like INSERT, UPDATE, DELETE.
  • run_ddl_query: Execute Data Definition Language (DDL) statements like CREATE, ALTER, DROP.
  • run_dcl_query: Execute Data Control Language (DCL) statements like GRANT, REVOKE.

🔍 Preview and Debugging

You can use the official MCP Inspector tool to visually inspect the tools provided by this server, view their parameters and descriptions, and perform test calls directly.

npx @modelcontextprotocol/inspector uvx pgsql-mcp-server --dsn "postgresql://user:password@host:port/database"

This will start a local web service. Open the provided URL in your browser to begin debugging.

🧪 Testing

This project uses pytest for testing.

Run all tests

uv run pytest

Run unit tests only

uv run pytest tests/test_app.py

Run integration tests only

Integration tests require a local PostgreSQL instance. They default to localhost:5432/postgres.

uv run pytest tests/test_integration.py

🤝 Contributing

Contributions are welcome! If you have suggestions for improvements, feature requests, or find any bugs, please feel free to:

  1. Open an Issue to discuss.
  2. Fork the repository and create your feature branch (git checkout -b feature/AmazingFeature).
  3. Commit your changes (git commit -m 'Add some AmazingFeature').
  4. Push to the branch (git push origin feature/AmazingFeature).
  5. Open a Pull Request.

Metadata

Release files for pgsql-mcp-server 1.4.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pgsql-mcp-server 1.4.6
File Size Uploaded
pgsql_mcp_server-1.4.6.tar.gz 5.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pgsql-mcp-server 1.4.6
File Interpreter ABI Platform
pgsql_mcp_server-1.4.6-py3-none-any.whl Python 3 none any Details

Total release size: 10.9 kB

Release files / pgsql_mcp_server-1.4.6.tar.gz

Download URL pgsql_mcp_server-1.4.6.tar.gz
Size 5.0 kB
Tags Source
SHA-256 checksum
How to use checksums
dd18970678f9d005a0427311cea59f9240ff6db7430eb470c42610afa95882c9
BLAKE2b-256 checksum
How to use checksums
a32f6032ee678d0bbeb41c0477dbbaf8d83eaffe26829c318195f8bcc6893543
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / pgsql_mcp_server-1.4.6-py3-none-any.whl

Download URL pgsql_mcp_server-1.4.6-py3-none-any.whl
Size 5.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0d9a86f830974d597dddc297e866b06ceb641a7d37cdeccc1d02a143c8a7a42d
BLAKE2b-256 checksum
How to use checksums
3e24d36b90c01613597743a069c9be07ebd145c392f30e9c88abda93227b3f7e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

1.4.6 This release

2 release files

1.4.5

2 release files

1.4.4

2 release files

1.4.3

2 release files

1.4.2

2 release files

1.4.1

2 release files

1.4.0

2 release files

1.3.2

2 release files

1.3.1

2 release files

1.3.0

2 release files

1.2.0

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page