MCP PostgreSQL Server

by Maxim2324
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

  • Manages configuration through environment variables using .env files for storing database credentials, server settings, and security parameters.

  • Supports repository cloning for installation and source code management during development.

  • Provides example code for API interaction, allowing clients to execute queries and interact with analysis templates.

MCP PostgreSQL 서버

다음을 수행하는 모델-컨트롤러-공급자(MCP) 서버:

  • PostgreSQL 데이터베이스에 연결합니다
  • 테이블 스키마를 리소스로 노출합니다.
  • 읽기 전용 SQL 쿼리를 실행하기 위한 도구를 제공합니다.
  • 일반적인 데이터 분석 작업에 대한 프롬프트가 포함되어 있습니다.

특징

  • 스키마 탐색 : 데이터베이스 스키마, 테이블 및 열 탐색
  • 읽기 전용 쿼리 실행 : 데이터베이스에 대해 SQL 쿼리를 안전하게 실행합니다.
  • 데이터 분석 프롬프트 : 일반적인 분석 작업을 위한 미리 작성된 SQL 템플릿
  • 데이터 시각화 : 시각화를 위한 데이터 생성
  • 관계 탐색 : 테이블 관계 및 외래 키 시각화
  • API 문서 : 자동 생성된 OpenAPI 사양

건축학

이 애플리케이션은 MCP(모델-컨트롤러-공급자) 패턴을 따릅니다.

  • 모델 계층 : 데이터베이스와의 직접적인 상호 작용
  • 공급자 계층 : 비즈니스 로직 및 데이터 처리
  • 컨트롤러 계층 : API 엔드포인트 및 요청 처리

보안 기능

  • 읽기 전용 쿼리 검증
  • SQL 주입 보호
  • 속도 제한
  • 매개변수화된 쿼리
  • 인증 지원
  • CORS 구성

설치

  1. 저장소를 복제합니다.지엑스피1
  2. 종속성 설치:
    npm install
  3. .env.template 기반으로 .env 파일을 만듭니다.
    cp .env.template .env
  4. .env 파일을 PostgreSQL 데이터베이스 자격 증명으로 업데이트합니다.
  5. 서버를 시작합니다:
    npm start

구성

모든 구성은 환경 변수를 통해 관리됩니다.

  • 서버 : 포트, 환경, CORS 설정
  • 데이터베이스 : 연결 세부 정보, 풀 설정
  • 보안 : JWT 설정, 속도 제한
  • 쿼리 : 실행 제한, 결과 크기 제한

API 엔드포인트

스키마 엔드포인트

  • GET /api/schemas - 모든 스키마 나열
  • GET /api/schemas/:schema/tables - 스키마의 테이블 나열
  • GET /api/schemas/:schema/tables/:table - 테이블 스키마 세부 정보 가져오기
  • GET /api/schemas/:schema/relationships - 테이블 관계 가져오기
  • GET /api/structure - 전체 데이터베이스 구조 가져오기
  • GET /api/search?q=term - 테이블 및 열 검색

쿼리 엔드포인트

  • POST /api/query - SQL 쿼리 실행
  • POST /api/query/explain - 쿼리 실행 계획 가져오기
  • GET /api/schemas/:schema/tables/:table/sample - 샘플 데이터 가져오기
  • GET /api/schemas/:schema/tables/:table/stats - 테이블 통계 가져오기

분석 프롬프트 엔드포인트

  • GET /api/prompts - 분석 프롬프트 템플릿 목록
  • GET /api/prompts/:templateId - 프롬프트 템플릿 세부 정보 가져오기
  • POST /api/prompts/:templateId/generate - 템플릿에서 SQL 생성
  • GET /api/schemas/:schema/tables/:table/analysis/suggest - 분석 제안 받기

예제 쿼리

기본 테이블 쿼리

// API request fetch('/api/query', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ sql: 'SELECT * FROM users LIMIT 10' }) }) .then(response => response.json()) .then(data => console.log(data));

분석 프롬프트 사용

// Get suggested analysis for a table fetch('/api/schemas/public/tables/orders/analysis/suggest') .then(response => response.json()) .then(suggestions => { // Use a suggestion const suggestionId = suggestions.data[0].templateId; const params = suggestions.data[0].params; // Generate SQL from the template return fetch(`/api/prompts/${suggestionId}/generate`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ params }) }); }) .then(response => response.json()) .then(data => { // Execute the generated SQL return fetch('/api/query', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ sql: data.data.sql }) }); }) .then(response => response.json()) .then(results => console.log(results));

개발

  • 개발 모드에서 실행: npm run dev
  • 테스트 실행: npm test
  • 린트 코드: npm run lint

특허

MIT

You must be authenticated.

A
security – no known vulnerabilities
A
license - permissive license
A
quality - confirmed to work

PostgreSQL 데이터베이스에 연결하고 스키마를 안전하게 탐색하고, 읽기 전용 SQL 쿼리를 실행하고, 미리 작성된 템플릿을 사용하여 데이터 분석을 수행하기 위한 도구를 제공하는 서버입니다.

  1. Current Implementations
    1. 1. MCP PostgreSQL Server (mcp-psql/)
    2. 2. MCP Figma Server (mcp-figma/)
  2. Purpose
    1. Getting Started
      1. Contributing
        1. License
          ID: vaztx3bu73