Skip to main content
Glama
oliverhubtech-source

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-клиент имеет доступ к инструментам).

  • Хранить лог аудита вне процесса (сейчас он только в памяти).

A
license - permissive license
Not graded
quality - not tested
C
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
    Provides 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
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to query SQL databases safely with read-only access, allowing schema discovery and SELECT queries while blocking writes and DDL operations.
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables LLM clients to query SQL databases via natural language with read-only, AST-validated, and capped queries, ensuring safety guarantees.
    2
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides read-only access to databases for MCP-compatible AI tools, allowing schema exploration and SELECT queries without exposing credentials or risking data changes.
    92
    3
    MIT

View all related MCP servers

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.

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/oliverhubtech-source/mcp-database-server'

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