Skip to main content

PostgreSQL RDB MCP Server 템플릿

경로: Console → Agent Ops → Tool Management+ 도구 생성Quick Setup 에서 PostgreSQL (RDB) 선택 RDB MCP Server for PostgreSQL database query and management Seahorse 내부 관리형 MCP 서버(rdb_server.py)로 PostgreSQL 에 연결해 스키마 탐색·쿼리 실행을 수행합니다.
이전 버전의 RDB Endpoint 기능은 이 템플릿으로 통합되었습니다. 별도 메뉴가 아닌 서비스 템플릿 의 하나로 제공됩니다.

시작 전 — PostgreSQL 이 준비되어 있어야 합니다

이 MCP 템플릿은 “Seahorse 가 접속할 수 있는 PostgreSQL 이 이미 구축·운영 중” 임을 전제로 합니다. 도구를 등록하는 이 화면에서 DB 를 새로 만들어주지 않습니다. DB 준비 → 접속값 준비 → Seahorse 연결 순서로 진행하세요.

일반적인 배포 흐름

대부분의 기업은 AWS RDS · GCP Cloud SQL · Azure Database 등 클라우드 관리형 PostgreSQL 에 이미 데이터가 올라가 있습니다. 아직 없다면 먼저 DB 부터 구축해야 합니다.
(1) DB 구축                     (2) 접속 정보 준비          (3) Seahorse 연결
─────────────────               ─────────────────           ─────────────────
AWS RDS PostgreSQL              host / port / user        MCP Tools 연결란
GCP Cloud SQL              →    password / dbname    →    (Environment Vars)
Azure Database                  sslmode
자체 호스팅 DB                   (읽기 전용 계정)

선행 조건 체크리스트

  • PostgreSQL 인스턴스 가동 중 — AWS RDS · GCP Cloud SQL · 자체 호스팅 어디든 가능
  • Seahorse 에이전트 서버가 DB 에 네트워크로 도달 가능 — 방화벽·VPC·보안 그룹에서 포트(5432 기본) 허용, 필요 시 Seahorse 서버 IP 를 허용 목록에 추가
  • 전용 DB 사용자 발급 — 권장 권한은 GRANT SELECT 만 (읽기 전용). postgres · admin 같은 전역 계정 금지
  • DB 이름·호스트·포트·SSL 모드 확정
  • (SSL 사용 시) 인증서·CA 가 필요하면 운영자가 사전 배포

Seahorse MCP Tools 연결란이 요구하는 정보

템플릿 등록 화면의 Environment Variables 는 DB 접속에 필요한 커넥션 정보 를 전부 요구합니다. 위에서 준비한 값을 그대로 넣으면 됩니다.
필요한 값어디서 얻나
PG_HOSTmydb.xxxxx.ap-northeast-2.rds.amazonaws.com / 10.20.30.40AWS RDS 콘솔·GCP SQL 인스턴스 상세 / 자체 DB 서버 IP
PG_PORT5432 (기본)동일
PG_USERagent_roDBA 가 별도 발급
PG_PASSWORD(시크릿)DBA 가 별도 발급
PG_DBNAMEanalytics접속 대상 DB 이름
PG_SSLMODErequire 권장운영 정책
이 값들은 System Default 타입 이라 사용자 화면에서 직접 입력하지 않고 운영자가 Environment 에 세팅 합니다. 아래 Environment Variables 섹션 참고.

DB 가 아직 없으면?

  • 클라우드 관리형 PostgreSQL (권장) — AWS RDS · GCP Cloud SQL · Azure Database 중 선택해 인스턴스 생성. 보안 그룹에서 Seahorse 에이전트 서버 IP 허용.
  • 자체 호스팅 — VPC 내 EC2·Compute Engine 등에 PostgreSQL 설치. 네트워크 라우팅·방화벽 구성 필요.
  • 임시 테스트만 — 로컬에 docker run postgres 로 임시 기동 (실제 운영 용도로는 부적합).
DB 가 준비되지 않은 상태로 템플릿을 Save 하면 도구는 등록되지만 호출 시 could not connect to server · authentication failed 같은 에러로 조용히 실패 합니다.

요약 순서

  1. DB 구축·계정 발급 (DBA / 인프라팀) — AWS RDS / GCP Cloud SQL / 자체 호스팅 중 택1 + 읽기 전용 계정
  2. 운영자가 Seahorse Environment 에 접속값 세팅
  3. 본 화면에서 PostgreSQL 템플릿으로 도구 등록 → Save
  4. 도구 상세 Test 로 연결 검증

사전 주입 값 (Basic Information)

Quick Setup 에서 PostgreSQL (RDB) 선택 시 자동 채워지는 값.
필드
Namepostgresql
TransportStandard I/O (stdio)
설명PostgreSQL RDB MCP Server
Access기본 Private

Run Settings

항목
Commandpython
Args-u, /app/app/mcp_servers/rdb_server.py

Environment Variables

템플릿 기본 제공 (전부 System Default)

PostgreSQL 템플릿의 사전 정의 7 개 변수는 모두 System Default 타입 으로 박혀 있습니다. Value 필드에는 Environment variable value 플레이스홀더가 보이지만 This value is fixed and automatically used at runtime 안내처럼 이 화면에서 값을 수정하지 않습니다 — 실제 값은 운영자가 Environment 에 세팅한 값이 런타임에 주입됩니다. 일부 변수는 기본 표시값 이 미리 보입니다 (PG_PORT = 5432, PG_SSLMODE = prefer). 이 표시값도 System Default 경로에서 관리됩니다.
Key설명UI 기본 표시
PG_HOSTPostgreSQL host address빈값
PG_PORTPostgreSQL port5432
PG_USERPostgreSQL username빈값
PG_PASSWORDPostgreSQL password빈값
PG_DBNAMEPostgreSQL database name빈값
PG_SSLMODEPostgreSQL SSL modeprefer (권장: require / verify-full)
TOOL_DESCMCP 용 도구 설명 (LLM 호출 시 hint)빈값
사전 정의 7 개 변수의 값은 이 화면에서 변경 불가 합니다. 다른 DB · 계정으로 바꾸려면 운영자가 Environment 에서 해당 키의 값을 갱신해야 합니다.

추가 환경변수 (Add Environment Variable)

사전 정의 변수 아래 Add Environment Variable 버튼으로 추가 변수를 자유롭게 정의 할 수 있습니다. 추가 시 아래 두 타입 중 선택 하며, User Input 도 가능 합니다.
타입이 화면에서 값 입력?용도
User Input✓ 직접 입력도구별 커스텀 설정 — 테넌트별 스키마·타임아웃 등을 개별 지정
System Default✗ 입력 불가 — 운영자 Environment 에 세팅한 값이 주입조직 전체 공통 추가 설정 (프록시 등)
추가를 고려할 변수
변수타입 권장설명
PG_SCHEMAUser Input 또는 System Default기본 스키마 (public 외 특정 스키마 사용 시)
PG_READONLYUser Inputtrue 로 설정해 UPDATE/DELETE 호출을 MCP 레벨에서 추가 차단
PG_STATEMENT_TIMEOUT_MSSystem Default세션 쿼리 타임아웃 (ms)
HTTP_PROXY / HTTPS_PROXYSystem Default사내 프록시 경유 시
PostgreSQL 템플릿의 설계 의도
  • 기본 7 개 변수는 “테넌트 공통 DB 한 개에 모두 붙는다” 전제로 System Default 고정.
  • Add Environment Variable 로는 User Input 타입도 선택 가능 하므로, 테넌트별 다른 값을 쓰고 싶으면 추가 변수로 확장하면 됩니다.
  • 다만 기본 7 개(PG_HOST 등)를 테넌트별로 다르게 하려면 커스텀 도구 로 rdb_server.py 를 복사 등록 + 전체 환경변수를 User Input 으로 새로 구성하는 것이 영향 격리 관점에서 안전합니다.

제공 기능

기능설명
스키마 탐색list_tables · get_table_schema — 테이블·컬럼·인덱스 목록
쿼리 실행execute_query — SELECT 중심 (DB 권한으로 쓰기 차단 권장)
샘플·통계상위 N 행 조회, 행 수·기본 통계
연결 검증도구 상세Test 버튼

권장 사용 패턴

1

운영 DB 에 읽기 전용 계정 발급

CREATE USER agent_ro WITH PASSWORD 'strong-pw';
GRANT CONNECT ON DATABASE mydb TO agent_ro;
GRANT USAGE ON SCHEMA public TO agent_ro;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO agent_ro;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO agent_ro;
해당 계정 정보를 운영자에게 전달 → Environment 설정에 반영.
2

SSL 설정

운영 환경은 PG_SSLMODE=require 또는 verify-full 권장.
3

템플릿에서 도구 생성

Quick Setup → PostgreSQL → Save. System Default 변수는 자동 주입되므로 자격 증명을 이 화면에서 입력하지 않습니다.
4

에이전트에 연결

Agent 수정 → Tools 탭 에서 활성화.
5

동작 확인

도구 상세 Test 로 연결 검증 → Agent Chat 에서 테이블 목록 알려줘 로 호출 확인.

활용 레시피

보안 주의

AI 가 데이터를 임의로 수정·삭제할 가능성이 있습니다. LLM 이 의도를 잘못 해석하거나 외부 프롬프트 인젝션(Slack·문서 등)에 영향받아 DELETE / UPDATE / DROP / TRUNCATE 같은 파괴적 쿼리를 실행할 수 있으며, 한 번 실행된 DML 은 백업 복원 전까지 되돌릴 수 없습니다. 읽기 전용 용도로만 연동하시고, 데이터 변경 파이프라인은 검증된 ETL 도구로 수행하세요.
핵심 안전장치
  • 운영 DB 에 쓰기 권한 계정 연결 금지GRANT SELECT 만 부여. INSERT/UPDATE/DELETE/DROP/TRUNCATE 는 DB 레벨에서 차단
  • 가능하면 Read Replica · 분석 전용 DB 에 연결해 운영 DB 를 직접 건드리지 않기
  • System Prompt 에 명시적 금지 규칙SELECT 외 쿼리 생성 금지, 사용자가 쓰기 요청해도 거절 명시
  • 민감 컬럼(PII·단가) 은 DB 뷰로 마스킹하거나 읽기 계정에서 컬럼 권한을 제한
  • System Default 값은 전역 공유 — 이 템플릿으로 생성된 모든 테넌트의 PostgreSQL 도구가 동일한 DB 를 바라봅니다. 테넌트별 격리가 필요하면 커스텀 도구로 분리
  • 퇴사자 계정 회수 — DB 계정 disable + Environment 값 갱신

다른 DBMS (MySQL / Oracle / MSSQL 등)

현재 Seahorse 공식 템플릿은 PostgreSQL 만 지원 합니다. 다른 DBMS 는 커스텀 도구 로 해당 MCP 서버(@modelcontextprotocol/server-mysql 등) 를 stdio / npx 방식으로 직접 등록해야 하며, 공식 지원이 아니라 안정적으로 동작하지 않을 수 있습니다.
  • 커스텀 MCP 서버의 동작·호환성은 Seahorse 에서 보장하지 않습니다. 업스트림 변경·드라이버 버전·네트워크 구성에 따라 연결 실패·데이터 타입 불일치·인증 오류 등이 발생할 수 있습니다.
  • 등록 직후 도구 상세Test 로 핸드셰이크·list_tools 응답이 정상인지 반드시 사전 검증 하세요.
  • 공식 지원이 필요하면 고객지원 창구 로 요청해주세요 — 수요에 따라 향후 템플릿으로 추가될 수 있습니다.
일반적인 접근
  • 간단 읽기 전용: 공식 @modelcontextprotocol/server-<dbms> 가 존재하면 npx 로 등록
  • 커스텀 스키마·뷰 조합: 자체 래퍼 MCP 서버를 작성해 쿼리 화이트리스트와 함께 배포
  • 대안: PostgreSQL Foreign Data Wrapper 로 다른 DB 를 PostgreSQL 뷰로 노출 후 본 템플릿으로 접근

Transport 필드에 관하여

Basic Information 의 Transport 드롭다운에서 Standard I/O 외에 Streamable HTTP 를 선택하는 것이 UI 상으로는 가능합니다. HTTP 선택 시 입력 필드는 다음과 같이 바뀝니다:
stdio 필드HTTP 필드
Command + Args + Environment VariablesConnection Settings (Endpoint URL · Timeout · Verify SSL) + Headers
본 템플릿의 기본 Transport 는 Standard I/O 입니다. 업스트림 MCP 서버(@modelcontextprotocol/server-slack · @modelcontextprotocol/server-github · uvx mcp-atlassian · rdb_server.py) 는 모두 로컬 프로세스(stdio) 기반 으로 설계되어 있습니다.UI 에서 Streamable HTTP 로 전환할 수는 있지만, 그 경우 같은 기능을 HTTP 엔드포인트로 감싸서 별도 호스팅한 서버가 이미 준비되어 있어야 합니다 (공식 지원되는 HTTP 버전이 Seahorse 에 번들된 것은 아닙니다).
  • 일반 사용자는 기본 Standard I/O 를 그대로 유지 하세요.
  • HTTP 엔드포인트를 자체 운영 중이고 그걸 연결하려는 경우라면, 사실상 커스텀 도구 로 처음부터 등록하는 편이 깔끔합니다.
  • HTTP 로 전환한 상태에서는 본 템플릿의 사전 주입 Command/Args/Env 가 더 이상 의미를 갖지 않습니다.

관련 문서