MCP Database Server
MCP Database Server
Pilar: Protocolos, Interoperabilidade и API
Статус: Месяц 1 — базовый
MCP-сервер на Python для предоставления LLM-клиентам доступа к схемам, безопасным запросам и хранимым процедурам.
Проблема
LLM нужно обращаться к корпоративным базам данных без предоставления широких учётных данных и возможности выполнять деструктивные SQL-запросы.
Related MCP server: DB Insights MCP Server
MVP
MCP-сервер на FastMCP
Список разрешённых схем
Только чтение
Allowlist хранимых процедур
Аудирование вызовов
Архитектура
MCP-сервер (
mcp.server.MCPServer, инструменты зарегистрированы через@mcp.tool())Schema registry (allowlist таблиц/колонок,
db.py)Authorizer только для чтения (
sqlite3.Connection.set_authorizer,security.py)Аудит-логгер (журнал аудита каждого вызова инструмента в памяти,
audit.py)
Диаграмма
flowchart LR
A0[MCP client] --> A1[MCP server: list_tables / describe_table / run_readonly_query]
A1 --> A2[SQLite authorizer: allowlist + read-only]
A2 --> A3[SQLite: invoices]
A1 --> A4[Audit log]Стек
Python
mcp(официальный SDK Model Context Protocol)SQLite (
sqlite3из стандартной библиотеки, сset_authorizerдля контроля доступа)unittest
Docker Compose
Как запустить
Реальная реализация с официальным MCP SDK. Контроль доступа не использует регулярные выражения по SQL (их легко обойти) — используется set_authorizer самого SQLite, который разрешает или запрещает каждую таблицу/колонку и каждый тип statement до выполнения любого кода. Чтобы запустить MCP-сервер:
python3.12 -m venv .venv && source .venv/bin/activate
pip install -e .
python -m mcp_database_server # sobe o servidor MCP via stdio
python -m unittest discover -s testsТесты
test_security.py: authorizer блокирует INSERT/UPDATE/DELETE/DROP/ALTER, ATTACH, таблицы вне allowlist (например,sqlite_master) и конкатенированные statement-ы (SELECT 1; DROP TABLE ...).test_server.py: логика каждого инструмента вызывается напрямую (без протокола), включая проверку, что каждый вызов создаёт событие аудита.test_integration.py: запускаетpython -m mcp_database_serverкак реальный подпроцесс и общается с ним черезmcp.client.stdio+ClientSession— доказывает, что сервер реально работает по MCP, а не только что Python-функции работают.
Риски и решения
SQL-инъекции и чрезмерные права: решено через
set_authorizerна уровне драйвера, а не регулярными выражениями.Одно SQLite-подключение не потокобезопасно; MCP-сервер обрабатывает каждый вызов инструмента в рабочем потоке, поэтому
ServerState.lockсериализует доступ (реальный баг, найденный и исправленный при реализации; покрыт тестомtest_integration.py).MCP-инструменты возвращают
ValueErrorс понятным сообщением для LLM-клиента вместо утечки stack trace.
Следующие шаги
Заменить SQLite на PostgreSQL через SQLAlchemy, как только появятся настоящие данные.
Добавить аутентификацию/allowlist для клиентов (сейчас любой подключённый MCP-клиент имеет доступ к инструментам).
Хранить лог аудита вне процесса (сейчас он только в памяти).
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 gradedqualityDmaintenanceProvides secure, read-only access to Microsoft SQL Server with multi-layer protection, enabling safe query execution, schema discovery, and SQL script analysis through natural language.1
- FlicenseNot gradedqualityCmaintenanceEnables AI assistants to query SQL databases safely with read-only access, allowing schema discovery and SELECT queries while blocking writes and DDL operations.
- AlicenseNot gradedqualityBmaintenanceEnables LLM clients to query SQL databases via natural language with read-only, AST-validated, and capped queries, ensuring safety guarantees.2MIT
- AlicenseNot gradedqualityBmaintenanceProvides read-only access to databases for MCP-compatible AI tools, allowing schema exploration and SELECT queries without exposing credentials or risking data changes.923MIT
Related MCP Connectors
Query PostgreSQL databases in plain English — LLM-generated, safety-validated SQL.
Runtime permission, approval, and audit layer for AI agent tool execution.
Read-only access to your VortexIQ store data: audits, KPIs, alerts, Brand DNA, reports, Ask VIQ.
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/oliverhubtech-source/mcp-database-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server