Skip to main content
Glama
lavishshakya

Self-Documenting Zero-Knowledge MCP Server

by lavishshakya

자체 문서화 제로-지식 MCP 서버

CI Python FastMCP License Security

문서화되지 않은 레거시 데이터베이스를 자율적으로 스캔하고, 모든 테이블에 대한 CRUD 도구를 생성하며, 테이블 조인 방법을 설명하는 프롬프트를 만들고, LLM을 사전 검증된 SQL 템플릿으로만 제한하여 제로-지식 보안을 적용하는 Model Context Protocol (MCP) 서버입니다.

아키텍처

아키텍처 다이어그램

Related MCP server: sqlite-mcp

MCP를 사용하는 이유 — 그리고 실제 엔지니어링은 무엇인가

MCP(Model Context Protocol)는 여기서 전송 및 인터페이스 계층입니다 — LLM이 도구를 호출하고, 매개변수를 전달하고, 결과를 수신하는 방식을 처리합니다. 이는 의도적인 선택이지, 성과물 자체가 아닙니다.

이 프로젝트의 실제 엔지니어링은 그 아래에 있는 스키마 인트로스펙션 및 보안 파이프라인입니다:

Database → PRAGMA Introspection → Schema Registry → Template Engine → Security Validator → MCP Tools

각 단계는 다음 단계에 대해 전혀 알지 못합니다. 인트로스펙터는 MCP에 대해 아무것도 모릅니다. 템플릿 엔진은 보안에 대해 아무것도 모릅니다. CRUD 생성기는 SQL에 대해 아무것도 모르며 — 템플릿 ID로만 작업합니다. 이러한 엄격한 분리를 통해 보안 계층의 코드 한 줄도 건드리지 않고 MCP 전송을 REST API나 gRPC 서비스로 교체할 수 있습니다.

MCP는 직접적인 OpenAI 함수 호출보다 선택되었는데, 그 이유는 MCP가 전송에 구애받지 않고(로컬 사용 시 stdio, 네트워크 사용 시 SSE), 원시 도구 호출 외에도 리소스와 프롬프트를 지원하며, LLM 도구 생태계 전반에서 채택되고 있는 개방형 표준이기 때문입니다. 그러나 보안 계층 — 사전 검증된 템플릿, 심층 방어 살균, 불변 템플릿 레지스트리 — 은 앞에 어떤 프로토콜이 있든 동일하게 작동합니다.

기능

  • 자율 스키마 탐색 — 사전 지식 없이 PRAGMA 인트로스펙션을 사용하여 모든 SQLite 데이터베이스 스캔

  • 동적 CRUD 도구 — 발견된 모든 테이블에 대해 Create, Read, Update, Delete, List, Search 도구 자동 생성

  • 조인 프롬프트 — 외래 키 관계를 분석하고 테이블 조인 방법을 설명하는 프롬프트 생성

  • 제로-지식 보안 — 모든 SQL 실행은 사전 검증된 매개변수화 템플릿으로 제한됨

  • 감사 로깅 — 모든 데이터베이스 작업은 타임스탬프, 템플릿 ID, 매개변수와 함께 기록됨

  • 스키마 리소스 — MCP 리소스가 발견된 스키마를 LLM 참조용으로 노출

빠른 시작

사전 요구 사항

  • Python 3.10+

  • pip

설치

# Clone the repository
git clone https://github.com/shubhtiwari65/Self-Documenting-Zero-Knowledge-MCP-Server.git
cd "MCP SERVER"

# Install dependencies
pip install -r requirements.txt

# Or install in editable mode with dev tools (recommended)
pip install -e ".[dev]"

데모 데이터베이스 시드

# Create a sample e-commerce legacy database
python server.py --seed

이렇게 하면 categories, customers, orders, order_items, products, reviews의 6개 테이블이 있는 legacy_store.db가 생성됩니다 — 외래 키 관계와 샘플 데이터가 완비되어 있습니다.

서버 실행

# Run with stdio transport (default — for Claude Desktop)
python server.py

# Run with SSE transport (for network access)
python server.py --transport sse --port 8080

# Use a custom database
python server.py --db /path/to/your/database.db

Claude Desktop에 연결

Claude Desktop 구성(claude_desktop_config.json)에 추가하세요:

{
  "mcpServers": {
    "zk-database": {
      "command": "python",
      "args": ["C:/path/to/MCP SERVER/server.py", "--db", "C:/path/to/legacy_store.db"]
    }
  }
}

MCP Inspector로 테스트

mcp dev server.py

생성되는 항목

서버가 시작되면 데이터베이스를 인트로스펙션하고 다음을 자동 생성합니다:

도구 (테이블별)

도구

설명

create_{table}

자동 생성된 매개변수 문서와 함께 새 행 삽입

read_{table}

기본 키로 행 읽기

update_{table}

기본 키로 행 업데이트

delete_{table}

기본 키로 행 삭제

list_{table}

limit/offset이 있는 페이지네이션 목록

search_{table}

텍스트 열에 대한 전체 텍스트 검색

프롬프트

프롬프트

설명

join_{table_a}_and_{table_b}

두 관련 테이블을 조인하는 방법 설명

explore_database

전체 데이터베이스 탐색 가이드

show_schema

자동 발견된 전체 스키마 표시

리소스

리소스 URI

설명

schema://tables

전체 스키마 개요

schema://tables/{name}

테이블별 스키마 세부 정보

security://audit-log

최근 쿼리 감사 로그

security://report

보안 요약 보고서

security://templates

등록된 모든 SQL 템플릿

보안 모델

제로-지식 보안 모델은 LLM이 원시 SQL을 구성하거나 볼 수 없도록 보장합니다:

  1. 템플릿 전용 실행 — 사전 생성된 템플릿 레지스트리의 SQL만 실행할 수 있습니다. 원시 SQL 엔드포인트는 존재하지 않습니다.

  2. 매개변수 검증 — 모든 매개변수는 실행 전에 인트로스펙션된 스키마에 대해 유형 검사됩니다.

  3. 입력 살균 — 심층 방어 블록리스트가 매개변수 값에서 SQL 주입 패턴을 포착합니다(매개변수화된 쿼리가 이미 주입을 방지함에도 불구하고).

  4. 감사 추적 — 모든 작업은 타임스탬프, 템플릿 ID, 매개변수, 성공/실패 상태와 함께 기록됩니다.

  5. 스키마 조작 없음 — 기존 테이블에 대한 SELECT, INSERT, UPDATE, DELETE만 가능합니다. DDL 작업은 불가능합니다.

전체 보안 모델(알려진 범위 경계 포함 — 전송 계층 인증)은 SECURITY.md를 참조하세요.

SQLite를 사용하는 이유 — 그리고 규모가 커질 때 변경되는 사항

SQLite는 이 데모를 위해 의도적으로 선택되었으며, 그 이유는 세 가지입니다:

  1. 구성 불필요 — 별도의 서버, 자격 증명, 네트워크 구성이 없음; DB는 단일 파일

  2. 네이티브 PRAGMA 인트로스펙션PRAGMA table_info(), PRAGMA foreign_key_list()는 제로-지식 탐색이 의존하는 정확한 도구

  3. 표준 라이브러리만 사용 — ORM 의존성 없음; import sqlite3는 Python에 포함됨

프로덕션에서 변경될 사항:

항목

현재 (SQLite)

프로덕션 경로

동시성

단일 작성자

PostgreSQL + asyncpg + 연결 풀

인트로스펙션

PRAGMA 문

information_schema (표준 SQL, DB에 구애받지 않음)

감사 로그

메모리 내 목록

추가 전용 DB 테이블 또는 구조화된 JSON 로그

DB 경로 구성

CLI 플래그

DATABASE_URL 환경 변수 (12-factor)

마이그레이션

재시드

alembic 마이그레이션 스크립트

아키텍처는 설계상 데이터베이스에 구애받지 않습니다 — SQLite 특정 코드는 src/introspector.py에만 있습니다(약 80줄). 백엔드 데이터베이스를 교체한다는 것은 해당 단일 파일을 교체하는 것을 의미합니다; 보안 계층, CRUD 생성기, MCP 등록은 변경되지 않습니다.

모든 아키텍처 결정 기록은 docs/DECISIONS.md를 참조하세요.

테스트 실행

# Run all tests
python -m pytest

# Run with coverage report
python -m pytest --cov=src --cov-report=term-missing

# Run specific test files
python -m pytest tests/test_security.py -v
python -m pytest tests/test_introspector.py -v

프로젝트 구조

MCP SERVER/
├── .github/workflows/ci.yml    # CI pipeline (pytest + ruff + coverage)
├── .gitignore                  # Git ignore rules
├── .env.example                # Environment variable template
├── CHANGELOG.md                # Version history
├── CONTRIBUTING.md             # Dev setup and contribution guide
├── Makefile                    # Developer convenience commands
├── README.md                   # Project documentation
├── SECURITY.md                 # Security model + transport scope boundary
├── server.py                   # Main MCP server entry point
├── requirements.txt            # Python dependencies
├── pyproject.toml              # Project metadata, ruff + pytest + coverage config
├── src/
│   ├── __init__.py
│   ├── introspector.py         # PRAGMA-based schema discovery
│   ├── schema_registry.py      # In-memory schema registry
│   ├── sql_templates.py        # Pre-validated SQL template engine
│   ├── security.py             # Zero-Knowledge security validator
│   ├── crud_generator.py       # Dynamic MCP tool generator
│   └── join_analyzer.py        # FK analysis & prompt generator
├── sample_data/
│   └── seed_legacy_db.py       # Demo legacy database seeder
├── tests/
│   ├── conftest.py             # Shared pytest fixtures
│   ├── demo_client.py          # Standalone verification demo
│   ├── test_introspector.py    # Schema discovery tests
│   ├── test_crud.py            # CRUD operation tests
│   ├── test_security.py        # Security validation tests
│   └── test_joins.py           # Join analysis tests
└── docs/
    ├── APPROACH.md             # Full technical approach write-up
    ├── DECISIONS.md            # Architectural Decision Records (ADRs)
    └── MCP_architecture.png    # Architecture diagram

라이선스

MIT

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that enables AI assistants to query and interact with SQLite databases through natural language. It includes built-in security guardrails such as PII redaction, SQL injection blocking, and query rate limiting.
  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that enables AI agents to interact with SQLite databases by querying schemas, executing SQL, and inspecting table metadata. It supports safe database access through configurable read-only modes, query timeouts, and dry-run execution plans.
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    A zero-config MCP server that enables AI to access, analyze, and manage local SQLite databases with secure read-only querying and automatic schema discovery.
    8
    MIT
  • A
    license
    C
    quality
    A
    maintenance
    An MCP server for interacting with SQLite databases, enabling SQL query execution, schema inspection, and CRUD operations.
    7
    MIT

View all related MCP servers

Related MCP Connectors

  • MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.

  • GibsonAI MCP server: manage your databases with natural language

  • Markdown-first MCP server for Notion API with 8 composite tools and 39 actions.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/lavishshakya/Self-Documenting-Zero-Knowledge-MCP-Server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server