Skip to main content
Glama
aminyx

mcp-devdb

by aminyx

mcp-devdb

CI

Безопасный MCP-сервер только для чтения для локальных баз данных разработки. Программным агентам постоянно нужно видеть вашу базу разработки — схему, примеры данных, планы запросов, размеры таблиц — но наивный коннектор к базе данных дает им полный доступ на запись. mcp-devdb — это защищенная альтернатива: сервер Model Context Protocol, который предоставляет инструменты интроспекции за укрепленным SQL-шлюзом только для чтения, маскированием столбцов, ограничениями результатов и посессионным бюджетом запросов.

Бэкенды в v1: PostgreSQL (через postgres) и SQLite (через better-sqlite3). Интерфейс адаптера нейтрален к движку, поэтому MySQL можно добавить позже.

Быстрый старт

  1. Создайте mcp-devdb.json рядом с местом, где будет запускаться сервер (см. mcp-devdb.example.json):

{
  "databases": {
    "app": { "url": "postgres://dev:dev@localhost:5432/app_development" },
    "cache": { "url": "sqlite:./data/cache.db" }
  }
}
  1. Запустите его:

npx mcp-devdb --config ./mcp-devdb.json

Сервер общается по MCP через stdio; укажите вашему MCP-клиенту эту команду. Строки подключения находятся только в файле конфигурации или переменных окружения ("url": "env:MY_DB_URL", или резервный вариант MCP_DEVDB_URL без файла конфигурации) — модель никогда не может их предоставить.

Claude Code

claude mcp add devdb -- npx mcp-devdb --config /absolute/path/to/mcp-devdb.json

Claude Desktop (claude_desktop_config.json)

{
  "mcpServers": {
    "devdb": {
      "command": "npx",
      "args": ["mcp-devdb", "--config", "/absolute/path/to/mcp-devdb.json"]
    }
  }
}

Related MCP server: MCP PostgreSQL

Инструменты

Инструмент

Входные данные

Что возвращает

list_tables

database?

Схемы, таблицы, представления с оценками количества строк и размерами на диске

describe_table

database?, table

Столбцы, типы, допустимость NULL, значения по умолчанию, первичный ключ, внешние ключи, индексы

sample_rows

database?, table, limit? (макс. 50)

Первые N строк; ячейки длиннее 200 символов усекаются; чувствительные столбцы маскируются как ***

run_query

database?, sql

Защищенный запрос только для чтения; ограничение строк (200) + ограничение байт (256 КиБ); расходует бюджет запросов

explain_query

database?, sql

План выполнения — PostgreSQL EXPLAIN (FORMAT JSON), SQLite EXPLAIN QUERY PLAN; расходует бюджет запросов

db_overview

database?

Имя базы данных, размер, количество таблиц, самые большие таблицы, расширения (PG)

database необязателен, когда настроена ровно одна база данных; при нескольких укажите нужную.

Конфигурация

mcp-devdb.json в рабочем каталоге или любой путь через --config:

{
  "databases": {
    "app": {
      "url": "postgres://dev:dev@localhost:5432/app_development",
      "allowTables": ["users", "orders", "public.events_*"],
      "denyTables": ["audit_log"]
    },
    "billing": { "url": "env:BILLING_DEV_DATABASE_URL" }
  },
  "maskPatterns": ["password", "secret", "token", "key", "hash", "ssn", "card"],
  "queryBudget": 100,
  "rowLimit": 200,
  "byteLimit": 262144,
  "statementTimeoutMs": 5000
}
  • allowTables / denyTables — названия без учета регистра с подстановочными знаками *; правила, содержащие точку, соответствуют schema.table. Запрет имеет приоритет; непустой список разрешений является исключительным.

  • maskPatterns — регулярные выражения без учета регистра, сопоставляемые с именами столбцов.

  • Флаги CLI: --config <path>, --no-mask (отключить маскирование столбцов), --help, --version.

Модель безопасности (кратко)

Полная модель угроз описана в SECURITY.md. Вкратце:

  • Шлюз только для чтения: каждый оператор run_query/explain_query токенизируется (кавычки, экранирование E'...', комментарии, строки в долларовых кавычках) и должен начинаться с SELECT / WITH / EXPLAIN / SHOW / VALUES; многооператорный ввод и ключевые слова записи/DDL где-либо на верхнем уровне отклоняются — CTE, за которым следует INSERT, обнаруживается; SELECT 'DROP TABLE x' не является ложным срабатыванием.

  • Принудительное применение на уровне движка: файлы SQLite открываются только для чтения; сеансы PostgreSQL работают с default_transaction_read_only=on, явными транзакциями BEGIN READ ONLY и тайм-аутами операторов.

  • Маскирование столбцов включено по умолчанию (--no-mask для отказа), ограничения результатов и посессионный бюджет запросов (по умолчанию 100; при исчерпании вам сообщат о необходимости перезапустить сервер).

  • Учетные данные никогда не попадают к модели: строки подключения поступают только из локального конфига/окружения и удаляются из каждого сообщения об ошибке.

Смоук-тест

scripts/verify-stdio.mjs создает временную базу данных SQLite, запускает node dist/cli.js и выполняет реальное рукопожатие MCP через stdio с помощью сырого JSON-RPC. Фактический вывод:

$ node scripts/verify-stdio.mjs
initialize -> mcp-devdb 0.1.0 (protocol 2025-06-18)
tools/list -> db_overview, describe_table, explain_query, list_tables, run_query, sample_rows
tools/call list_tables ->
{
  "database": "demo",
  "dialect": "sqlite",
  "tableCount": 2,
  "tables": [
    {
      "schema": null,
      "name": "orders",
      "type": "table",
      "rowEstimate": 3,
      "sizeBytes": 4096,
      "sizePretty": "4.0 KiB"
    },
    {
      "schema": null,
      "name": "users",
      "type": "table",
      "rowEstimate": 2,
      "sizeBytes": 4096,
      "sizePretty": "4.0 KiB"
    }
  ]
}
tools/call run_query "DROP TABLE users" -> isError=true
  Query rejected by read-only guard: Only read-only statements are allowed; the statement must start with one of: SELECT, WITH, EXPLAIN, SHOW, VALUES
SMOKE TEST PASSED

Ограничения

  • MySQL пока нет. Интерфейс DbAdapter в src/adapters/types.ts — точка расширения.

  • Только базы данных разработки. Шлюз блокирует запись на уровне SQL, но SELECT все равно может вызывать плохо помеченные функции или функции расширений с побочными эффектами (например, dblink, открывающий собственное соединение не только для чтения). Допустимо для баз данных разработки; никогда не направляйте это на продакшн. См. SECURITY.md.

  • Шлюз консервативен: столбцы без кавычек, названные как запрещенные ключевые слова (например, столбец, буквально названный update), отклоняются — заключите их в кавычки ("update"), чтобы продолжить.

  • SELECT ... FOR UPDATE отклоняется (он берет блокировки строк).

  • Подсчет строк в SQLite использует COUNT(*); на огромных файлах list_tables может работать медленно.

Разработка

npm install
npm run lint && npm run typecheck && npm test && npm run build
node scripts/verify-stdio.mjs

Лицензия

MIT — Copyright (c) 2026 Aminyx

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

  • A
    license
    B
    quality
    D
    maintenance
    A lightweight Postgres MCP server for safe database exploration and query analysis, read-only by default, with multi-database support.
    4
    3
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A read-only MCP server for PostgreSQL that enables safe database introspection and querying via natural language.
    539
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Read-only MCP server that lets AI agents safely query SQLite, PostgreSQL, and MySQL/MariaDB. Enforces read-only transactions with column masking, row caps, query timeouts, EXPLAIN-based cost rejection, and rate limiting.
    7
    32
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Read-only MCP server for SQL databases (SQLite/PostgreSQL) that enables listing tables, describing schemas, and executing SELECT queries with safety guardrails.
    MIT

View all related MCP servers

Related MCP Connectors

  • MCP server for managing Prisma Postgres.

  • MCP server for interacting with the Supabase platform

  • Query PostgreSQL databases in plain English — LLM-generated, safety-validated SQL.

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/aminyx/mcp-devdb'

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