Skip to main content
Glama

MCP SQL Server

by JubinSaniei

MCP MSSQL Сервер

Это сервер Model Context Protocol (MCP) для взаимодействия с SQL Server. Он позволяет моделям больших языков (LLM) выполнять запросы SQL, запускать хранимые процедуры и исследовать схемы баз данных с повышенной безопасностью и надежностью.

Функции

  • Безопасное выполнение SQL-запросов : выполнение запросов SELECT в базах данных SQL Server. Все запросы анализируются и проверяются, чтобы гарантировать выполнение только операторов SELECT .

  • Поддержка хранимых процедур : выполнение хранимых процедур с параметризованными входными данными.

  • Исследование схемы : просмотр определений таблиц и столбцов базы данных с кэшированием результатов для повышения производительности.

  • Надежное управление соединениями : использует глобальный пул соединений для эффективного повторного использования соединений с базой данных с настраиваемой логикой повторных попыток и тайм-аутами.

  • Повышенная безопасность :

    • Анализ SQL-запросов и белый список только SELECT .

    • Переменная среды SQL_ALLOWED_DATABASES для внесения в белый список доступных баз данных.

    • Защита от распространенных шаблонов SQL-инъекций для переключения контекста базы данных.

    • Блокирует выполнение потенциально вредоносных системных процедур или команд в прямых запросах.

  • Настраиваемое кэширование : информация о схеме базы данных кэшируется с настраиваемым временем жизни (TTL).

  • Структурированное ведение журнала : интегрированный регистратор pino для подробных и структурированных журналов приложений.

  • Готовность к Docker : простое развертывание с помощью Docker.

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

Использование Docker (рекомендуется)

# Clone the repository (if you haven't already) git clone https://github.com/JubinSaniei/mcp-mssql # cd mcp-mssql # Copy example configuration and edit with your settings cp .env.example .env nano .env # Edit with your SQL Server details and other configurations # Start the Docker container docker-compose up -d

Полные инструкции по настройке Docker см. в файле README Docker .

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

Сервер настроен с использованием переменных окружения. Создайте файл .env в корневом каталоге (можно скопировать .env.example ), чтобы задать эти значения.

Подробное руководство по всем параметрам конфигурации и их настройке см. в разделе CONFIG .

Категория

Переменная

Описание

По умолчанию (из config.js)

Связь

SQL_SERVER

Имя хоста или IP-адрес SQL-сервера

localhost

SQL_PORT

Порт SQL-сервера

1433

SQL_USER

Имя пользователя SQL-сервера

sa

SQL_PASSWORD

Пароль SQL-сервера

Необходимый

SQL_DATABASE

Имя базы данных по умолчанию для подключения

master

Безопасность

SQL_ENCRYPT

Включить шифрование (установите значение

false

, чтобы отключить)

true

SQL_TRUST_SERVER_CERT

Сертификат сервера доверия (установите значение

false

, чтобы отключить)

true

SQL_ALLOWED_DATABASES

Список баз данных, разделенных запятыми, к которым серверу разрешен доступ. Если пусто, доступ менее ограничен (зависит от разрешений пользователя БД).

[]

(пустой список)

Тайм-ауты и повторные попытки

SQL_CONNECTION_TIMEOUT

Время ожидания соединения (мс)

30000

SQL_REQUEST_TIMEOUT

Время ожидания запроса (мс)

30000

SQL_MAX_RETRIES

Максимальное количество повторных попыток первоначального подключения

3

SQL_INITIAL_RETRY_DELAY

Начальная задержка (мс) перед повторной попыткой неудачного соединения

1000

SQL_MAX_RETRY_DELAY

Максимальная задержка (мс) для повторных попыток подключения (использует экспоненциальную задержку)

30000

Пул соединений

SQL_POOL_MAX

Макс. количество подключений в пуле

10

SQL_POOL_MIN

Мин. подключений в пуле

0

SQL_POOL_IDLE_TIMEOUT

Время ожидания простоя для соединений в пуле (мс)

30000

Кэширование

SQL_SCHEMA_CACHE_TTL

Время жизни кэша схемы (мс)

300000

(5 минут)

MCP-сервер

MCP_SERVER_NAME

Имя MCP-сервера

MSSQL Server

MCP_SERVER_VERSION

Версия сервера MCP

1.0.0

Ведение журнала

LOG_LEVEL

Уровень журнала для pino logger (например,

fatal

,

error

,

warn

,

info

,

debug

,

trace

,

silent

). Это считывается напрямую из

process.env

в

server.ts

, а не является частью

config.js

.

info

Использование с Клодом

Чтобы добавить этот MCP-сервер в Claude CLI:

# Add the MCP server using the config file claude mcp add-json mssql-mcp "$(cat claude-mcp-config.json)" # To add it globally claude mcp add-json -s user mssql-mcp "$(cat claude-mcp-config.json)" # Start a conversation with Claude using this MCP claude mcp mssql-mcp

В разговоре с Клодом вы можете:

  1. Выполнить запросы SELECT :

    <mcp:execute_query database="YourDatabaseName"> SELECT TOP 10 * FROM YourTable </mcp:execute_query>

    (Атрибут database является необязательным, если используется SQL_DATABASE по умолчанию или если SQL_ALLOWED_DATABASES подразумевает единственный выбор.)

  2. Выполнение хранимых процедур:

    <mcp:execute_StoredProcedure database="YourDatabaseName"> { "procedure": "YourSchema.YourProcedureName", "parameters": [ {"name": "Param1", "type": "NVarChar", "value": "SomeValue"}, {"name": "Param2", "type": "Int", "value": 123} ] } </mcp:execute_StoredProcedure>
  3. Изучите схему базы данных:

    <mcp:schema> YourDatabaseName </mcp:schema>

    (Если YourDatabaseName не указано, по умолчанию используется SQL_DATABASE , указанная в переменных среды.)

Обработка соединения

Этот сервер MCP использует глобальный, надежный пул соединений (встроенный пул библиотеки mssql ), управляемый DatabaseService .

  • Эффективность : соединения используются повторно, что снижает накладные расходы на установление нового соединения для каждого запроса.

  • Устойчивость : реализует логику повторных попыток с экспоненциальной задержкой для первоначального установления соединения.

  • Нет состояния сеанса между вызовами : в отличие от модели сеанса на пользователя, этот сервер не гарантирует, что последующие вызовы MCP (например, два отдельных вызова execute_query ) из LLM будут использовать то же самое базовое соединение с базой данных. Поэтому специфичное для сеанса состояние, такое как временные таблицы или переменные сеанса, созданные в одном вызове, могут быть недоступны в другом. Каждый вызов следует считать атомарным с точки зрения состояния сеанса. Команда USE [database] выдается в каждой операции, если целевая база данных отличается от базы данных по умолчанию пула, обеспечивая контекст для этой конкретной операции.

Разработка

Настройка локального развития

# Install dependencies npm install # Create and configure your .env file cp .env.example .env nano .env # Run the server directly (requires environment variables to be set) npm start # Run with TypeScript compiler watching for changes npm run dev

Заметки о безопасности

  • Только : сервер строго следит за тем, чтобы через инструмент execute_query можно было выполнять только запросы SELECT с использованием анализа SQL. Операторы DML (INSERT, UPDATE, DELETE) и DDL блокируются.

  • Выполнение хранимых процедур : хотя хранимые процедуры могут выполнять любые действия, разрешенные их разрешениями, их выполнение управляется отдельно.

  • Белый список баз данных : используйте переменную среды SQL_ALLOWED_DATABASES , чтобы ограничить, с какими базами данных сервер может взаимодействовать. Подробное объяснение этой функции и того, как она взаимодействует с SQL_DATABASE , см. DATABASE_WHITELISTING.md .

  • Блокировка системных процедур : прямое выполнение общих системных процедур (например, sp_ , xp_ ) и команд типа RECONFIGURE или WAITFOR DELAY через execute_query блокируется. Для законных системных взаимодействий следует использовать хранимые процедуры.

  • Проверка ввода : Имена баз данных для переключения контекста и имена хранимых процедур проходят проверку формата. Анализ SQL обеспечивает дополнительный уровень проверки для запросов.

  • Параметризованные входные данные : параметры хранимых процедур обрабатываются библиотекой mssql , которая обычно параметризует их для предотвращения SQL-инъекций.

Поиск неисправностей

Если у вас возникли проблемы:

  1. Проверьте логи контейнера: docker logs mssql-mcp (если используется Docker).

  2. Проверьте вывод консоли сервера на наличие журналов pino, если он запущен локально.

  3. Проверьте, что все необходимые переменные среды в файле .env установлены правильно, особенно SQL_PASSWORD , SQL_SERVER , SQL_USER и SQL_DATABASE .

  4. Если вы установили эту переменную, убедитесь, что базы данных, к которым вы пытаетесь получить доступ, указаны в SQL_ALLOWED_DATABASES .

  5. Подтвердите сетевое подключение к экземпляру SQL Server, на котором запущен сервер MCP.

  6. Тестовые скрипты ( test-mcp.sh , test-session-persistence.sh ) могут нуждаться в проверке/обновлении.

Подробную информацию об устранении неполадок Docker см. в файле README Docker .

-
security - not tested
-
license - not tested
-
quality - not tested

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Сервер Model Context Protocol, который позволяет крупным языковым моделям, таким как Claude, выполнять SQL-запросы, исследовать схемы баз данных и поддерживать постоянные соединения с базами данных SQL Server.

  1. Функции
    1. Быстрый старт
      1. Использование Docker (рекомендуется)
    2. Конфигурация
      1. Использование с Клодом
        1. Обработка соединения
          1. Разработка
            1. Настройка локального развития
          2. Заметки о безопасности
            1. Поиск неисправностей

              Related MCP Servers

              • -
                security
                -
                license
                -
                quality
                A Model Context Protocol server that enables Large Language Models to access and interact with database connections, including viewing schemas and performing CRUD operations on connected databases.
                Last updated -
                • Apple
              • A
                security
                -
                license
                A
                quality
                A Model Context Protocol server that enables executing SQL queries and managing connections with Microsoft SQL Server databases.
                Last updated -
                1
                54
                6
                MIT License
              • -
                security
                -
                license
                -
                quality
                A Model Context Protocol server that enables large language models like Claude to perform comprehensive interactions with Firebase Firestore databases, supporting full CRUD operations, complex queries, and advanced features like transactions and TTL management.
                Last updated -
                3
                4
                MIT License
              • -
                security
                -
                license
                -
                quality
                A Model Context Protocol server that enables LLMs like Claude to interact with SQLite and SQL Server databases, allowing for schema inspection and SQL query execution.
                Last updated -
                3,221
                204
                MIT License
                • Linux
                • Apple

              View all related MCP servers

              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/JubinSaniei/mcp-mssql'

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