mcp-data-server
mcp-data-server
Пример проекта, демонстрирующий шаблоны производственного веб-скрапинга / автоматизации.
MCP-сервер, предоставляющий Клод (или любому MCP-клиенту) доступ только для чтения к бизнес-базе данных — с гарантиями, которые делают подключение LLM к реальным корпоративным данным приемлемым: подключение только для чтения, белый список таблиц, маскировка PII, ограничение количества строк, тайм-аут запроса и полный журнал аудита.
Спросите "какие страны заказывают больше всего и сколько нам стоили возвраты в прошлом квартале?" в Claude Desktop и получите ответ из реальной базы данных — без возможности для модели записывать, удалять, подключать или читать таблицу, к которой она не была допущена.
Зачем это нужно
Главное препятствие в большинстве проектов "подключите ИИ к нашим данным" — это не проводка, а первый вопрос от владельца базы данных: что мешает ему прочитать или сломать то, что не следует? Этот сервер отвечает на этот вопрос в коде.
Related MCP server: Database Assistant MCP Server
Четыре независимых барьера
# | Барьер | Что предотвращает |
1 | Подключение открыто | любую запись, даже если все проверки выше него обойдены |
2 | Разбор запроса | несколько операторов, всё, что не является |
3 | Черный список ключевых слов |
|
4 | Белый список + маскировка + ограничения | таблицы, к которым вы не дали доступ, столбцы с PII, слишком большие результаты, неконтролируемые запросы |
Каждый выполненный оператор добавляется в журнал аудита с количеством строк и продолжительностью, чтобы владелец данных мог точно видеть, о чем спрашивала модель.
2026-08-18T11:22:41 6 rows in 1ms SELECT country, COUNT(*) FROM customers GROUP BY 1 LIMIT 201
2026-08-18T11:22:44 error: rejected DELETE FROM customersДоступные инструменты
Инструмент | Назначение |
| читаемые таблицы + количество строк |
| столбцы, типы, какие маскируются, 3 примера строк |
| один |
| поиск подстроки без написания SQL |
| нули, количество уникальных значений, минимум/максимум, топ-5 значений |
Плюс ресурс schema://tables, чтобы клиент мог загрузить всю схему, не используя вызов инструмента.
Быстрый старт
git clone https://github.com/dkautomation23/mcp-data-server.git
cd mcp-data-server
python -m venv .venv && . .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt
python -m mcp_data_server.seed # creates demo.db
cp .env.example .env # then point DATABASE_PATH at your file
python -m mcp_data_server # serves over stdioPython 3.10+. Демонстрационная база данных содержит таблицы customers, orders, order_items и намеренно конфиденциальную таблицу internal_notes, используемую ниже для демонстрации блокировки доступа через белый список.
Подключение к Claude Desktop
Добавьте в claude_desktop_config.json (полный пример в examples/claude_desktop_config.json):
{
"mcpServers": {
"business-data": {
"command": "python",
"args": ["-m", "mcp_data_server"],
"cwd": "C:/path/to/mcp-data-server",
"env": {
"DATABASE_PATH": "C:/path/to/your.db",
"ALLOWED_TABLES": "customers,orders,order_items",
"MASKED_COLUMNS": "customers.email,customers.phone"
}
}
}
}Подключение к Claude Code
claude mcp add business-data -- python -m mcp_data_serverКак выглядит сессия
Реальный вывод работающего сервера (см. examples/demo_session.md для полной стенограммы):
// run_sql("SELECT status, COUNT(*) n, ROUND(SUM(total_eur)) revenue FROM orders GROUP BY 1 ORDER BY 3 DESC")
{
"sql": "SELECT status, COUNT(*) n, ROUND(SUM(total_eur)) revenue FROM orders GROUP BY 1 ORDER BY 3 DESC LIMIT 201",
"columns": ["status", "n", "revenue"],
"rows": [["paid", 92, 149914.0], ["pending", 39, 64596.0], ["refunded", 31, 45911.0]],
"row_count": 3, "truncated": false, "elapsed_ms": 0
}
// run_sql("DELETE FROM customers")
{ "error": "only SELECT (or WITH ... SELECT) statements are allowed" }
// run_sql("SELECT * FROM internal_notes")
{ "error": "table 'internal_notes' is not in the allowlist (allowed: customers, orders, order_items)" }
// run_sql("SELECT id, name, email FROM customers LIMIT 2")
{ "rows": [[1, "Customer 001", "***"], [2, "Customer 002", "***"]] }Конфигурация
Переменная | По умолчанию | Назначение |
|
| Файл SQLite для открытия (всегда открывается только для чтения) |
| все | Белый список, разделенный запятыми; всё остальное невидимо |
| – | Список |
|
| Жесткое ограничение на вызов; результаты сверх него помечаются как |
|
| Более длинный запрос отменяется |
|
| Журнал только для добавления каждого оператора; пустое значение отключает его |
Тесты
pytest -q............................... [100%]
31 passed in 1.77sТри уровня: проверки SQL (инъекции, второй оператор, сокрытие в комментариях, запрещенные таблицы), уровень базы данных на реальном заполненном файле (включая попытку записи, которую отклоняет сам SQLite), и семь тестов, управляющих сервером через реальный протокол MCP — тот же процесс рукопожатия, list_tools и call_tool, который выполняет десктопный клиент.
Адаптация к инфраструктуре клиента
Postgres / MySQL: замените подключение в
db.pyна пулированный драйвер и сессиюSET TRANSACTION READ ONLY; уровень валидации остается неизменным.Бизнес-специфичные инструменты: добавьте функцию с
@mcp.tool()вserver.py— хорошо названныйtop_customers(period)лучше, чем заставлять модель писать SQL.HTTP-транспорт вместо stdio:
mcp.run(transport="streamable-http"), затем поместите его за свою собственную аутентификацию.
Лицензия
MIT — см. LICENSE.
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
- Alicense-qualityAmaintenanceProvides a read-only PostgreSQL SQL surface for LLM agents via MCP, with defense-in-depth security layers for safe database queries.3MIT
- FlicenseAqualityCmaintenanceEnables read-only exploration and querying of PostgreSQL or MySQL databases via MCP, with schema discovery, safe SQL validation, natural language to SQL conversion, and CSV export.111
- Alicense-qualityBmaintenanceEnables governed, agent-agnostic data exploration by allowing users to ask natural language questions through MCP-compatible agents, executing safe, permission-scoped queries against data sources and returning interactive charts.48Apache 2.0
- Flicense-qualityCmaintenanceEnables read-only access to company data across PostgreSQL, MongoDB Atlas, and flat files through MCP tools, allowing AI assistants to query and retrieve information via natural language.
Related MCP Connectors
Official Microsoft MCP Server to query Microsoft Entra data using natural language
A paid remote MCP for AI SDK data query MCP, built to return verdicts, receipts, usage logs, and aud
Query PostgreSQL databases in plain English — LLM-generated, safety-validated SQL.
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/dkautomation23/mcp-data-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server