Skip to main content
Glama
Vanity-1

edu-db-readonly-mcp

by Vanity-1

Edu DB Readonly MCP — шлюз только для чтения к учебной базе данных

Python 3.10+ MCP FastMCP

Безопасный MCP-шлюз только для чтения для учебных бизнес-баз данных. С помощью официального FastMCP SDK «учебная база (студенты / курсы / оценки / выбор курсов)» раскрывается как набор MCP-инструментов, позволяя LLM-агенту безопасно запрашивать бизнес-данные, но запрещая все операции записи — от уровня протокола до уровня базы данных.

В отличие от обёрток над ChatGPT, универсальных MCP-серверов и чистых RAG-демо, этот проект сосредоточен на инженерном контуре «безопасно открыть бизнес-базу для чтения агентом» — это практический кейс на стыке безопасности данных и внедрения MCP.


Ключевые преимущества (можно рассказать на собеседовании)

Аспект безопасности

Способ реализации

Защита от записи

Статическая лексическая проверка SQL: разрешены только SELECT/WITH, блокируются INSERT/UPDATE/DELETE/DROP/PRAGMA; запрещена многооператорная инъекция через точку с запятой

Подстраховка только для чтения

SQLite открывается в режиме mode=ro — даже если SQL пройдёт проверку, на уровне базы данных запись на диск невозможна

Защита от выгрузки всей базы

При отсутствии LIMIT автоматически принудительно добавляется ограничение (по умолчанию 100 строк), чтобы агент не выгрузил всю таблицу

Защита от инъекций

На уровне шлюза всё работает через параметризованные привязки, бизнес-инструменты используют фиксированные функции с белым списком запросов — устойчиво к конкатенационным инъекциям

Защита по таймауту

Медленные запросы, превышающие порог (по умолчанию 3 с), автоматически завершаются, чтобы «умный» агент не завис

Аутентификация

Опциональный READONLY_GATEWAY_TOKEN — при несовпадении токена запрос отклоняется

Аудит

Каждый запрос записывается в audit.log (время / инструмент / SQL / число строк / время выполнения) — вызовы можно отследить


Related MCP server: sql-safety-executor

Список инструментов (MCP)

Инструмент

Описание

list_tables

Выводит все бизнес-таблицы и число строк в них

describe_table

Возвращает поля / типы / первичные ключи указанной таблицы

query

Сырой SQL-шлюз только для чтения (проверка безопасности + LIMIT + таймаут)

get_student_profile

Профиль студента (основная информация + средний балл + детали оценок по выбранным курсам)

get_course_stats

Число студентов на курсе / средний балл / максимум и минимум / процент сдачи

get_enrollment_summary

Сводный отчёт по оценкам выбранных курсов, с фильтром по году / учебному сезону

query демонстрирует возможности «сырого SQL-шлюза», остальные — отраслевые безопасные функции-обёртки для учебных задач (фиксированные параметризованные запросы — безопаснее и ближе к бизнесу, чем сырой SQL).


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

# 1. 安装依赖
pip install -r requirements.txt

# 2. 初始化教务演示库
python scripts/init_db.py

# 3. 运行命令行演示(连 stdio MCP,展示 6 个工具 + 写操作被拦截)
python scripts/demo_client.py

# 4. 启动为 MCP Server(供 Claude / Cursor / 任意 MCP 客户端接入)
python -m src.server
# 开启鉴权:
#   READONLY_GATEWAY_TOKEN=your_secret python -m src.server

Примеры запросов: профиль студента, статистика курса CS205, сводка по учебным сезонам…


Тестирование

pytest tests/            # 22 个用例:写防护/注入/多语句/截断/工具行为/审计

Структура каталога

edu-db-readonly-mcp/
├── README.md
├── pyproject.toml
├── requirements.txt
├── data/edu.db                 # 生成的教务演示库(只读打开)
├── scripts/
│   ├── init_db.py              # 建表 + 造种子数据(10学生/10课/32选课)
│   └── demo_client.py          # 命令行 MCP 演示
├── src/
│   ├── server.py               # FastMCP 入口,注册 6 个工具
│   ├── gateway/
│   │   ├── readonly_gateway.py # 核心:SQL 只读校验 + LIMIT + 超时
│   │   ├── auth.py             # token 鉴权
│   │   └── audit.py            # 审计日志
│   ├── db/connection.py        # mode=ro 连接 + 元数据读取
│   └── tools/
│       ├── query_tool.py       # 原始 SQL 网关
│       ├── schema_tools.py     # list_tables / describe_table
│       └── edu_workflows.py    # 教务业务封装工具
└── tests/
    ├── test_gateway_security.py   # 安全用例
    └── test_tools.py              # 工具行为用例

Проектный документ → docs/DESIGN.md


Описание для резюме (можно вставить)

MCP-шлюз только для чтения к учебной базе данных (FastMCP) Самостоятельно разработал безопасный MCP-сервер только для чтения для учебной базы. Спроектировал лёгкий SQL-шлюз только для чтения: статическая проверка пропускает только SELECT/WITH, блокирует DML/DDL и многооператорные инъекции через точку с запятой; при отсутствии LIMIT автоматически принудительно ограничивает число строк; параметризованные запросы защищают от инъекций; защита по таймауту потоков; подстраховка только для чтения через SQLite mode=ro; предоставляет инструменты самоанализа таблиц и бизнес-обёртки для учебных задач, поддерживает токен-аутентификацию и аудит через audit.log. 22 модульных теста покрывают сценарии безопасности: защиту от записи, инъекции, многооператорные запросы, усечение и др.; сквозное демо подтверждает, что операции записи блокируются на уровне протокола.

F
license - not found
Not graded
quality - not tested
C
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
    Not graded
    quality
    A
    maintenance
    Provides a read-only PostgreSQL SQL surface for LLM agents via MCP, with defense-in-depth security layers for safe database queries.
    3
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables LLMs to safely execute database queries via MCP tools, with security features including query restrictions, truncation, and timeout.
    6
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides read-only access to databases for MCP-compatible AI tools, allowing schema exploration and SELECT queries without exposing credentials or risking data changes.
    92
    3
    MIT

View all related MCP servers

Related MCP Connectors

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/Vanity-1/edu-db-readonly-mcp'

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