Skip to main content
Glama
dochaocn

sqlite-readonly-mcp

by dochaocn

sqlite-readonly-mcp

Сервер SQLite в режиме только для чтения для протокола Model Context Protocol, работающий на удаленном сервере Linux. Использует Streamable HTTP (/mcp), аутентификацию через Bearer Token, а результаты запросов возвращаются в виде JSON-текста. Разработан для размещения за Nginx (HTTPS), при этом вышестоящий сервер прослушивает только локальный хост.

Функции

  • Инструмент sqlite_query: выполнение одиночного запроса SELECT / WITH / EXPLAIN, возвращает JSON в формате { rows, rowCount }.

  • Инструмент list_tables: вывод списка имен таблиц (за исключением системных).

  • SQLite: better-sqlite3 с флагами readonly + fileMustExist; на уровне приложения ограничено выполнение только одного оператора и проверка префикса запроса.

  • GET /health: только для локального доступа, используется для проверки работоспособности (см. src/server.ts).

  • Передача данных: Streamable HTTP (/mcp) + устаревший SSE (GET /sse, POST /messages) для обеспечения обратной совместимости с Cursor при необходимости.

Related MCP server: PostgreSQL MCP Server

Переменные окружения

Переменная

Обязательно

Описание

SQLITE_PATH

Да

Абсолютный путь к файлу базы данных

BEARER_TOKEN

Да

Статический Bearer-токен (можно также использовать READONLY_TOKEN)

HOST

Нет

По умолчанию 127.0.0.1

PORT

Нет

По умолчанию 3333

ALLOWED_HOSTS

Нет

Список разрешенных заголовков Host через запятую; должен включать внешний домен Nginx. По умолчанию 127.0.0.1,localhost,[::1]

SQLITE_MAX_ROWS

Нет

Максимальное количество строк за один запрос, по умолчанию 5000

Локальная сборка и запуск

npm install
npm run build
export SQLITE_PATH=/path/to/db.sqlite
export BEARER_TOKEN='your-secret-token'
export ALLOWED_HOSTS='127.0.0.1,localhost'
node dist/server.js

Разработка и отладка: npm run dev

Nginx и systemd

См. deploy/nginx.example.conf, deploy/sqlite-readonly-mcp.service, deploy/sqlite-readonly-mcp.env.example.

Основные моменты: передача заголовков Authorization, Accept, Content-Type, mcp-session-id на вышестоящий сервер; отключение proxy_buffering для SSE/потоковых ответов. В примерах уже включены **/sse**, **/messages** (устаревший SSE-откат) вместе с Streamable HTTP /mcp для обратного проксирования.

Запуск от имени пользователя root (рекомендуемый пример)

Для упрощения настройки прав доступа на чтение к файлу SQLite и родительскому каталогу, в примере сервис запускается от имени root (в unit-файле systemd не указаны User= / Group=, по умолчанию используется root).

  1. Разместите код и артефакты сборки, например, в /opt/sqlite-readonly-mcp, и выполните npm ci --omit=dev и npm run build.

  2. Скопируйте файл окружения и заполните переменные:

 sudo cp deploy/sqlite-readonly-mcp.env.example /etc/sqlite-readonly-mcp.env
 sudo chmod 600 /etc/sqlite-readonly-mcp.env
  1. Установите и активируйте unit-файл (при необходимости измените WorkingDirectory и абсолютный путь к node в ExecStart):

 sudo cp deploy/sqlite-readonly-mcp.service /etc/systemd/system/
 sudo systemctl daemon-reload
 sudo systemctl enable --now sqlite-readonly-mcp
 sudo systemctl status sqlite-readonly-mcp

Если вы ранее добавляли User=mcp, удалите эту строку, затем выполните daemon-reload и restart.

Совет по безопасности: взлом процесса root несет более серьезные последствия, поэтому обязательно используйте HTTPS, Bearer-токены, прослушивание локального хоста + Nginx, брандмауэр; если требуются минимальные привилегии, вернитесь к использованию выделенного пользователя и настройте права доступа к файлу данных и путям отдельно.

Ручная проверка (curl)

MCP требует, чтобы клиент принимал как application/json, так и text/event-stream:

curl -sS -D - \
  -H "Authorization: Bearer $BEARER_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-11-25","capabilities":{},"clientInfo":{"name":"curl","version":"1.0"}}}' \
  "https://mcp.example.com/mcp"

Неверный токен должен возвращать 401.

Клиент Cursor

В настройках MCP в Cursor укажите HTTPS URL для этого удаленного сервиса (например, https://mcp.example.com/mcp). Если требуется Bearer-токен, проверьте, поддерживает ли текущая версия Cursor настройку пользовательских заголовков для удаленных MCP; если нет, потребуется добавить локальный шлюз с фиксированным заголовком Authorization (см. описание рисков решения).

Эксплуатация

Подробности см. в docs/RUNBOOK.md.

Лицензия

MIT (в соответствии с @modelcontextprotocol/sdk; действуют лицензии соответствующих зависимостей).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

No tool schema history has been recorded yet.

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A lightweight MCP server that provides read-only access to SQLite databases, allowing users to execute SELECT queries, list tables, and describe table schemas.
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A production-ready MCP server that enables safe, read-only SQL SELECT queries against PostgreSQL databases with built-in security validation. It features connection pooling, automatic row limits, and structured logging to ensure secure and reliable database interactions.
    29
    ISC
  • A
    license
    Not graded
    quality
    F
    maintenance
    Read-only MCP server for SQL databases (SQL Server, Postgres, SQLite) with multi-server support and three-layer safety using AST validation and linting.
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Custom MCP server connected to a read-only SQLite database, exposing a schema resource and a query tool for safe data retrieval.
    -

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/dochaocn/sqlite-readonly-mcp'

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