Self-Documenting Zero-Knowledge MCP Server
Self-Documenting Zero-Knowledge MCP Server
Сервер Model Context Protocol (MCP), который автономно сканирует недокументированную устаревшую базу данных, генерирует CRUD-инструменты для каждой таблицы, создаёт промпты, объясняющие, как соединять таблицы, и обеспечивает Zero-Knowledge безопасность, ограничивая LLM только предварительно проверенными SQL-шаблонами.
Архитектура

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 — он работает только с идентификаторами шаблонов. Такое строгое разделение означает, что вы можете заменить MCP-транспорт на REST API или gRPC-сервис, не трогая ни одной строки в слое безопасности.
MCP был выбран вместо прямого вызова функций OpenAI, потому что MCP не зависит от транспорта (stdio для локального использования, SSE для сети), поддерживает ресурсы и промпты помимо простых вызовов инструментов и является открытым стандартом, который принимается в экосистеме LLM-инструментов. Но слой безопасности — предварительно проверенные шаблоны, многоуровневая санитизация, неизменяемый реестр шаблонов — работает одинаково независимо от того, какой протокол находится перед ним.
Возможности
Автономное обнаружение схемы — сканирует любую базу данных SQLite с помощью PRAGMA-интроспекции без каких-либо предварительных знаний
Динамические CRUD-инструменты — автоматически генерирует инструменты Create, Read, Update, Delete, List и Search для каждой обнаруженной таблицы
Промпты для соединений — анализирует связи внешних ключей и генерирует промпты, объясняющие, как соединять таблицы
Zero-Knowledge безопасность — всё выполнение SQL ограничено предварительно проверенными параметризованными шаблонами
Журнал аудита — каждая операция с базой данных логируется с отметкой времени, идентификатором шаблона и параметрами
Ресурсы схемы — ресурсы 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Это создаёт legacy_store.db с 6 таблицами: categories, customers, orders, order_items, products, reviews — с внешними ключами и демонстрационными данными.
Запуск сервера
# 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Что генерируется
При запуске сервер выполняет интроспекцию базы данных и автоматически генерирует:
Инструменты (для каждой таблицы)
Инструмент | Описание |
| Вставка новой строки с автоматически сгенерированной документацией параметров |
| Чтение строки по первичному ключу |
| Обновление строки по первичному ключу |
| Удаление строки по первичному ключу |
| Постраничный список с limit/offset |
| Полнотекстовый поиск по текстовым столбцам |
Промпты
Промпт | Описание |
| Объясняет, как соединить две связанные таблицы |
| Полное руководство по исследованию базы данных |
| Отображение полной автоматически обнаруженной схемы |
Ресурсы
URI ресурса | Описание |
| Общий обзор схемы |
| Детали схемы для конкретной таблицы |
| Журнал аудита недавних запросов |
| Сводный отчёт по безопасности |
| Все зарегистрированные SQL-шаблоны |
Модель безопасности
Модель безопасности Zero-Knowledge гарантирует, что LLM никогда не создаёт и не видит необработанный SQL:
Выполнение только по шаблонам — может выполняться только SQL из предварительно сгенерированного реестра шаблонов. Конечной точки с необработанным SQL не существует.
Проверка параметров — все параметры проверяются на соответствие типам по обнаруженной схеме перед выполнением.
Санитизация входных данных — многоуровневый блок-лист перехватывает паттерны SQL-инъекций в значениях параметров (хотя параметризованные запросы уже предотвращают инъекции).
Журнал аудита — каждая операция логируется с отметкой времени, идентификатором шаблона, параметрами и статусом успеха/неудачи.
Нет манипуляций со схемой — только SELECT, INSERT, UPDATE, DELETE по существующим таблицам. Операции DDL невозможны.
Полную модель безопасности, включая известные границы области действия (аутентификация на транспортном уровне), см. в SECURITY.md.
Почему SQLite — и что меняется при масштабировании
SQLite был выбран осознанно для этой демонстрации по трём причинам:
Нулевая конфигурация — не нужен отдельный сервер, учётные данные или сетевая настройка; база данных — это один файл
Встроенная PRAGMA-интроспекция —
PRAGMA table_info(),PRAGMA foreign_key_list()— это именно те инструменты, на которых основано zero-knowledge обнаружениеТолько стандартная библиотека — нет зависимости от ORM;
import sqlite3входит в состав Python
Что изменится в продакшене:
Аспект | Сейчас (SQLite) | Путь к продакшену |
Параллелизм | Один писатель | PostgreSQL + |
Интроспекция | PRAGMA-выражения |
|
Журнал аудита | Список в памяти | Таблица в БД только для добавления или структурированные JSON-логи |
Конфигурация пути к БД | Флаг CLI | Переменная окружения |
Миграции | Повторное заполнение | Скрипты миграций |
Архитектура не зависит от базы данных по замыслу — только src/introspector.py содержит код, специфичный для SQLite (~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
This server cannot be installed
Maintenance
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
- FlicenseNot gradedqualityDmaintenanceAn 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.
- AlicenseNot gradedqualityCmaintenanceAn 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
- AlicenseAqualityDmaintenanceA zero-config MCP server that enables AI to access, analyze, and manage local SQLite databases with secure read-only querying and automatic schema discovery.8MIT
- AlicenseCqualityAmaintenanceAn MCP server for interacting with SQLite databases, enabling SQL query execution, schema inspection, and CRUD operations.7MIT
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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