Enhanced PostgreSQL MCP Server

by GarethCott
Verified

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

Integrations

  • Supports running the PostgreSQL MCP server in a Docker container, with configuration options for connecting to PostgreSQL databases.

  • Provides both read and write access to PostgreSQL databases, allowing for data querying, data modification (insert, update, delete), and schema management (creating tables, functions, triggers, indexes).

PostgreSQL MCP 서버(향상됨)

PostgreSQL 데이터베이스에 대한 읽기 및 쓰기 권한을 모두 제공하는 모델 컨텍스트 프로토콜 서버입니다. 이 서버를 통해 LLM은 데이터베이스 스키마를 검사하고, 쿼리를 실행하고, 데이터를 수정하고, 데이터베이스 스키마 객체를 생성/수정할 수 있습니다.

참고: 이 버전은 Anthropic에서 개발한 기존 PostgreSQL MCP 서버 의 향상된 버전입니다. 기존 서버는 읽기 전용 액세스를 제공했지만, 이 향상된 버전은 쓰기 기능과 스키마 관리 기능을 추가합니다.

구성 요소

도구

데이터 쿼리

  • 질문
    • 연결된 데이터베이스에 대해 읽기 전용 SQL 쿼리를 실행합니다.
    • 입력: sql (문자열): 실행할 SQL 쿼리
    • 모든 쿼리는 READ ONLY 트랜잭션 내에서 실행됩니다.

데이터 수정

  • 실행하다
    • 데이터를 수정하는 SQL 문(INSERT, UPDATE, DELETE)을 실행합니다.
    • 입력: sql (문자열): 실행할 SQL 문
    • 적절한 COMMIT/ROLLBACK 처리를 통해 트랜잭션 내에서 실행됨
  • 끼워 넣다
    • 테이블에 새 레코드 삽입
    • 입력:
      • table (문자열): 테이블 이름
      • data (객체): 키가 열 이름이고 값이 삽입할 데이터인 키-값 쌍
  • 업데이트
    • 테이블의 레코드 업데이트
    • 입력:
      • table (문자열): 테이블 이름
      • data (객체): 업데이트할 필드에 대한 키-값 쌍
      • where (문자열): 업데이트할 레코드를 식별하기 위한 WHERE 조건
  • 삭제
    • 테이블에서 레코드 삭제
    • 입력:
      • table (문자열): 테이블 이름
      • where (문자열): 삭제할 레코드를 식별하는 WHERE 조건

스키마 관리

  • createTable
    • 지정된 열과 제약 조건을 사용하여 새 테이블을 만듭니다.
    • 입력:
      • tableName (문자열): 테이블 이름
      • columns (배열): 이름, 유형 및 선택적 제약 조건이 포함된 열 정의 배열
      • constraints (배열): 테이블 수준 제약 조건의 선택적 배열
  • createFunction
    • PostgreSQL 함수/프로시저 생성
    • 입력:
      • name (문자열): 함수 이름
      • parameters (문자열): 함수 매개변수
      • returnType (문자열): 반환 유형
      • language (문자열): 언어(plpgsql, sql 등)
      • body (문자열): 함수 본문
      • options (문자열): 선택적 추가 기능 옵션
  • 트리거 생성
    • 테이블에 트리거 만들기
    • 입력:
      • name (문자열): 트리거 이름
      • tableName (문자열): 트리거를 적용할 테이블
      • functionName (문자열): 호출할 함수
      • when (문자열): BEFORE, AFTER 또는 INSTEAD OF
      • events (배열): 이벤트 배열(INSERT, UPDATE, DELETE)
      • forEach (문자열): ROW 또는 STATEMENT
      • condition (문자열): 선택 사항 WHEN 조건
  • 인덱스 생성
    • 테이블에 인덱스 생성
    • 입력:
      • tableName (문자열): 테이블 이름
      • indexName (string): 인덱스 이름
      • columns (배열): 인덱싱할 열
      • unique (부울): 인덱스가 고유한지 여부
      • type (문자열): 선택적 인덱스 유형(BTREE, HASH, GIN, GIST 등)
      • where (문자열): 선택 조건
  • 변경 테이블
    • 테이블 구조 변경
    • 입력:
      • tableName (문자열): 테이블 이름
      • operation (문자열): 작업(열 추가, 열 삭제 등)
      • details (문자열): 작업 세부 정보

자원

서버는 데이터베이스의 각 테이블에 대한 스키마 정보를 제공합니다.

  • 테이블 스키마 ( postgres://<host>/<table>/schema )
    • 각 테이블에 대한 JSON 스키마 정보
    • 열 이름과 데이터 유형이 포함됩니다.
    • 데이터베이스 메타데이터에서 자동으로 검색됨

Claude Desktop과 함께 사용

Claude Desktop 앱과 함께 이 서버를 사용하려면 claude_desktop_config.json 의 "mcpServers" 섹션에 다음 구성을 추가하세요.

도커

  • macOS에서 Docker를 실행할 때 서버가 호스트 네트워크(예: localhost)에서 실행 중이면 host.docker.internal을 사용하세요.
  • 사용자 이름/암호는 postgresql://user:password@host:port/db-name 으로 postgresql url에 추가할 수 있습니다.
  • SSL 인증서 검증을 우회해야 하는 경우 ?sslmode=no-verify 추가하세요.

지엑스피1

엔피엑스

{ "mcpServers": { "postgres": { "command": "npx", "args": [ "-y", "@modelcontextprotocol/server-postgres", "postgresql://localhost/mydb" ] } } }

/mydb 데이터베이스 이름으로 바꾸세요.

사용 예

쿼리 데이터

/query SELECT * FROM users LIMIT 5

데이터 삽입

/insert table="users", data={"name": "John Doe", "email": "john@example.com"}

데이터 업데이트

/update table="users", data={"status": "inactive"}, where="id='123'"

테이블 만들기

/createTable tableName="tasks", columns=[ {"name": "id", "type": "SERIAL", "constraints": "PRIMARY KEY"}, {"name": "title", "type": "VARCHAR(100)", "constraints": "NOT NULL"}, {"name": "created_at", "type": "TIMESTAMP", "constraints": "DEFAULT CURRENT_TIMESTAMP"} ]

함수와 트리거 만들기

/createFunction name="update_timestamp", parameters="", returnType="TRIGGER", language="plpgsql", body="BEGIN NEW.updated_at = NOW(); RETURN NEW; END;" /createTrigger name="set_timestamp", tableName="tasks", functionName="update_timestamp", when="BEFORE", events=["UPDATE"], forEach="ROW"

건물

도커:

docker build -t mcp/postgres -f Dockerfile .

보안 고려 사항

  1. 모든 데이터 수정 작업은 적절한 COMMIT/ROLLBACK 처리가 포함된 트랜잭션을 사용합니다.
  2. 각 작업은 투명성을 위해 실행된 SQL을 반환합니다.
  3. 서버는 SQL 주입을 방지하기 위해 삽입/업데이트 작업에 매개변수화된 쿼리를 사용합니다.

특허

이 MCP 서버는 MIT 라이선스에 따라 라이선스가 부여됩니다. 즉, MIT 라이선스의 조건에 따라 소프트웨어를 자유롭게 사용, 수정 및 배포할 수 있습니다. 자세한 내용은 프로젝트 저장소의 LICENSE 파일을 참조하세요.

-
security - not tested
F
license - not found
-
quality - not tested

PostgreSQL 데이터베이스에 대한 읽기 및 쓰기 액세스를 모두 제공하는 모델 컨텍스트 프로토콜 서버로, 이를 통해 LLM이 데이터를 쿼리하고, 레코드를 수정하고, 데이터베이스 스키마를 관리할 수 있습니다.

  1. Components
    1. Tools
    2. Resources
  2. Usage with Claude Desktop
    1. Docker
    2. NPX
  3. Example Usage
    1. Query Data
    2. Insert Data
    3. Update Data
    4. Create a Table
    5. Create a Function and Trigger
  4. Building
    1. Security Considerations
      1. License
        ID: up7bcmit1h