MCP-сервер с несколькими базами данных
Обзор
DB MCP Server предоставляет стандартизированный способ для моделей ИИ одновременно взаимодействовать с несколькими базами данных. Созданный на основе фреймворка FreePeak/cortex , он позволяет помощникам ИИ выполнять SQL-запросы, управлять транзакциями, исследовать схемы и анализировать производительность в различных системах баз данных через унифицированный интерфейс.
Related MCP server: MCP Server
Основные концепции
Поддержка нескольких баз данных
В отличие от традиционных коннекторов баз данных, DB MCP Server может подключаться и взаимодействовать с несколькими базами данных одновременно:
{
"connections": [
{
"id": "mysql1",
"type": "mysql",
"host": "localhost",
"port": 3306,
"name": "db1",
"user": "user1",
"password": "password1"
},
{
"id": "postgres1",
"type": "postgres",
"host": "localhost",
"port": 5432,
"name": "db2",
"user": "user2",
"password": "password2"
}
]
}Динамическая генерация инструментов
Для каждой подключенной базы данных сервер автоматически генерирует специализированные инструменты:
// For a database with ID "mysql1", these tools are generated:
query_mysql1 // Execute SQL queries
execute_mysql1 // Run data modification statements
transaction_mysql1 // Manage transactions
schema_mysql1 // Explore database schema
performance_mysql1 // Analyze query performanceЧистая Архитектура
Сервер следует принципам чистой архитектуры и состоит из следующих слоев:
Уровень домена : основные бизнес-сущности и интерфейсы
Уровень репозитория : Реализации доступа к данным
Уровень варианта использования : бизнес-логика приложения
Уровень доставки : Внешние интерфейсы (инструменты MCP)
Функции
Одновременная поддержка нескольких баз данных : одновременное подключение к нескольким базам данных MySQL и PostgreSQL
Генерация инструментов для конкретной базы данных : автоматическое создание специализированных инструментов для каждой подключенной базы данных.
Чистая архитектура : модульная конструкция с четким разделением задач
Совместимость с OpenAI Agents SDK : полная совместимость для бесшовной интеграции помощника ИИ
Инструменты динамической базы данных : выполнение запросов, запуск операторов, управление транзакциями, исследование схем, анализ производительности.
Унифицированный интерфейс : единообразные шаблоны взаимодействия между различными типами баз данных
Управление соединениями : простая настройка для нескольких соединений с базой данных.
Поддерживаемые базы данных
База данных | Статус | Функции |
MySQL | ✅ Полная поддержка | Запросы, транзакции, анализ схемы, анализ производительности |
PostgreSQL | ✅ Полная поддержка (v9.6-17) | Запросы, транзакции, анализ схемы, анализ производительности |
TimescaleDB | ✅ Полная поддержка | Гипертаблицы, запросы временных рядов, непрерывные агрегаты, сжатие, политики хранения |
Варианты развертывания
Сервер DB MCP можно развернуть несколькими способами в зависимости от различных сред и потребностей интеграции:
Развертывание Docker
# Pull the latest image
docker pull freepeak/db-mcp-server:latest
# Run with mounted config file
docker run -p 9092:9092 \
-v $(pwd)/config.json:/app/my-config.json \
-e TRANSPORT_MODE=sse \
-e CONFIG_PATH=/app/my-config.json \
freepeak/db-mcp-serverПримечание : Монтируйте в
/app/my-config.json, так как в контейнере есть файл по умолчанию в/app/config.json.
Режим STDIO (интеграция с IDE)
# Run the server in STDIO mode
./bin/server -t stdio -c config.jsonДля интеграции Cursor IDE добавьте в .cursor/mcp.json :
{
"mcpServers": {
"stdio-db-mcp-server": {
"command": "/path/to/db-mcp-server/server",
"args": ["-t", "stdio", "-c", "/path/to/config.json"]
}
}
}Режим SSE (события, отправленные сервером)
# Default configuration (localhost:9092)
./bin/server -t sse -c config.json
# Custom host and port
./bin/server -t sse -host 0.0.0.0 -port 8080 -c config.jsonКонечная точка клиентского подключения: http://localhost:9092/sse
Установка исходного кода
# Clone the repository
git clone https://github.com/FreePeak/db-mcp-server.git
cd db-mcp-server
# Build the server
make build
# Run the server
./bin/server -t sse -c config.jsonКонфигурация
Файл конфигурации базы данных
Создайте файл config.json с подключениями к вашей базе данных:
{
"connections": [
{
"id": "mysql1",
"type": "mysql",
"host": "mysql1",
"port": 3306,
"name": "db1",
"user": "user1",
"password": "password1",
"query_timeout": 60,
"max_open_conns": 20,
"max_idle_conns": 5,
"conn_max_lifetime_seconds": 300,
"conn_max_idle_time_seconds": 60
},
{
"id": "postgres1",
"type": "postgres",
"host": "postgres1",
"port": 5432,
"name": "db1",
"user": "user1",
"password": "password1"
}
]
}Параметры командной строки
# Basic syntax
./bin/server -t <transport> -c <config-file>
# SSE transport options
./bin/server -t sse -host <hostname> -port <port> -c <config-file>
# Inline database configuration
./bin/server -t stdio -db-config '{"connections":[...]}'
# Environment variable configuration
export DB_CONFIG='{"connections":[...]}'
./bin/server -t stdioДоступные инструменты
Для каждой подключенной базы данных DB MCP Server автоматически генерирует следующие специализированные инструменты:
Инструменты запроса
Название инструмента | Описание |
| Выполнять запросы SELECT и получать результаты в виде табличного набора данных |
| Выполнение операторов манипулирования данными (INSERT, UPDATE, DELETE) |
| Начало, фиксация и откат транзакций |
Инструменты схемы
Название инструмента | Описание |
| Получите информацию о таблицах, столбцах, индексах и внешних ключах |
| Генерация SQL или кода из схемы базы данных |
Инструменты производительности
Название инструмента | Описание |
| Анализируйте производительность запросов и получайте предложения по оптимизации |
Инструменты TimescaleDB
Для баз данных PostgreSQL с расширением TimescaleDB доступны следующие дополнительные специализированные инструменты:
Название инструмента | Описание |
| Выполнение общих операций TimescaleDB |
| Преобразовать стандартную таблицу в гипертаблицу TimescaleDB |
| Список всех гипертаблиц в базе данных |
| Выполнение оптимизированных запросов временных рядов с сегментированием |
| Анализировать закономерности временных рядов данных |
| Создавайте материализованные представления, которые автоматически обновляются |
| Обновлять непрерывные агрегаты вручную |
Подробную документацию по инструментам TimescaleDB см. в TIMESCALEDB_TOOLS.md .
Примеры
Запрос к нескольким базам данных
-- Query the first database
query_mysql1("SELECT * FROM users LIMIT 10")
-- Query the second database in the same context
query_postgres1("SELECT * FROM products WHERE price > 100")Управление транзакциями
-- Start a transaction
transaction_mysql1("BEGIN")
-- Execute statements within the transaction
execute_mysql1("INSERT INTO orders (customer_id, product_id) VALUES (1, 2)")
execute_mysql1("UPDATE inventory SET stock = stock - 1 WHERE product_id = 2")
-- Commit or rollback
transaction_mysql1("COMMIT")
-- OR
transaction_mysql1("ROLLBACK")Изучение схемы базы данных
-- Get all tables in the database
schema_mysql1("tables")
-- Get columns for a specific table
schema_mysql1("columns", "users")
-- Get constraints
schema_mysql1("constraints", "orders")Поиск неисправностей
Распространенные проблемы
Ошибки подключения : проверьте сетевое подключение и учетные данные базы данных.
Ошибки прав доступа : убедитесь, что у пользователя базы данных есть соответствующие права доступа.
Проблемы с тайм-аутом : проверьте настройку
query_timeoutв вашей конфигурации.
Журналы
Включите подробное ведение журнала для устранения неполадок:
./bin/server -t sse -c config.json -vВнося вклад
Мы приветствуем вклад в проект DB MCP Server! Чтобы внести вклад:
Форк репозитория
Создайте ветку функций (
git checkout -b feature/amazing-feature)Зафиксируйте свои изменения (
git commit -m 'feat: add amazing feature')Отправить в ветку (
git push origin feature/amazing-feature)Открыть запрос на извлечение
Подробные инструкции см. в нашем файле CONTRIBUTING.md .
Лицензия
Данный проект лицензирован по лицензии MIT — подробности см. в файле LICENSE .