Skip to main content
Glama

smu-rule-mcp

Неофициальный MCP-сервер, позволяющий AI-ассистентам получать доступ к правилам Системы управления нормативными документами Университета Санмён (rule.smu.ac.kr).

Осуществляет поиск по 301 нормативному документу, 5 196 статьям и 2 029 приложениям и формам на уровне отдельных статей.

⚠️ Этот проект является неофициальным инструментом и не связан с Университетом Санмён. Он не был одобрен, спонсирован или сертифицирован. Для получения официального содержания нормативных документов обязательно обращайтесь к оригинальному тексту. Подробное уведомление см. в NOTICE.md.

나: 휴학은 최대 몇 년까지 돼?
AI: 학칙 제28조(휴학기간 및 복학)에 따르면 일반휴학은 1년 또는 학기 단위로…

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

Требуется Node.js версии 22 или выше (установите LTS-версию с nodejs.org). Команды одинаковы для Windows, macOS и Linux.

git clone https://github.com/gsmtc01/smu-rule-mcp
cd smu-rule-mcp
npm run setup

Однократный запуск npm run setup выполнит установку зависимостей, сборку, загрузку данных и регистрацию клиента. Вы сможете выбрать клиента для регистрации во время выполнения. Файлы конфигурации автоматически резервируются перед изменением, а другие уже зарегистрированные MCP-серверы не затрагиваются.

npm run setup -- --client claude-desktop   # 물어보지 않고 바로 등록
npm run setup -- --print                   # 설정 JSON만 출력(직접 붙여넣기)

После установки полностью закройте и снова запустите клиент. Настройки MCP считываются только при запуске.

Related MCP server: korean-law-mcp

Настройка для конкретных клиентов

Этот сервер работает в локальном (stdio) режиме на вашем ПК. Клиент запускает процесс по мере необходимости, поэтому отдельный сервер или учетная запись не требуются.

Клиент

Поддержка

Необходимые компоненты

Claude Desktop

Поддерживается

npm run setup

Claude Code

Поддерживается

npm run setup

Codex CLI

Поддерживается

npm run setup -- --print с последующим созданием TOML

Cursor / Windsurf и др.

Поддерживается

npm run setup

Claude Web (claude.ai)

Не поддерживается

См. ниже

ChatGPT (Веб, Десктоп, Work)

Не поддерживается

См. ниже

Claude Desktop

npm run setup -- --client claude-desktop

Для ручной настройки отредактируйте файл конфигурации напрямую.

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "smu-rule": {
      "command": "node",
      "args": ["<저장소 경로>/dist/mcp/server.js"]
    }
  }
}

Рекомендуется указывать абсолютный путь к node (which node / where node). GUI-приложения могут не наследовать PATH оболочки и не найти node. Обратную косую черту в путях Windows следует удваивать, например "C:\\Users\\...".

Claude Code

npm run setup -- --client claude-code

Регистрируется в mcpServers файла ~/.claude.json. Формат аналогичен Claude Desktop. Если вы используете и Claude Desktop, регистрируйте только в одном месте. Настройки десктопного приложения могут применяться и к сессии Claude Code, что приведет к дублированию регистрации.

Codex CLI

Codex использует TOML. Добавьте в ~/.codex/config.toml.

[mcp_servers.smu-rule]
command = "node"
args = ["<저장소 경로>/dist/mcp/server.js"]

Путь можно узнать с помощью npm run setup -- --print.

Cursor · Windsurf и др.

npm run setup -- --client cursor

Если клиент использует формат mcpServers, вставьте тот же JSON, что и для Claude Desktop, в соответствующий файл конфигурации.

ChatGPT (Веб · Десктопное приложение · Work)

В настоящее время использовать нельзя.

ChatGPT, включая десктопное приложение, поддерживает только удаленные MCP-серверы (HTTPS-адреса) и не поддерживает локальные stdio-серверы на вашем ПК. Для регистрации в режиме разработчика коннектора требуется адрес, доступный из интернета, а этот проект не предоставляет публичный сервер.

По той же причине нельзя использовать и Claude Web (claude.ai). Клиенты, работающие в браузере, не могут запускать программы на вашем ПК.

Из линейки ChatGPT только Codex CLI поддерживает локальные MCP, поэтому используйте его. В остальных случаях рекомендуем Claude Desktop или Claude Code. Установка проста, а файлы приложений сохраняются прямо на вашем ПК.

Примечание: Этот сервер содержит режим работы через HTTP при указании переменной PORT. Он предназначен для самостоятельного хостинга; до появления публичного сервера подключение веб-клиентов требует самостоятельного развертывания. При запуске на публичном адресе также открывается download_form, подключающийся к исходной системе, поэтому необходимо ограничить доступ.

Инструменты

Инструмент

Описание

Подключение к исходному серверу

search_regulation

Полнотекстовый поиск по статьям (FTS5)

Нет

get_regulation_text

Просмотр полного текста нормативного документа

Нет

list_regulations

Список по категориям и отделам

Нет

get_recent_amendments

Информация о последних изменениях и дополнениях

Нет

list_repealed

Отмененные нормативные документы

Нет

list_forms

Метаданные приложений и форм

Нет

download_form

Загрузка HWP-файлов приложений и форм

Да (только при первом запросе)

get_data_status

Время сбора и количество записей в локальной БД

Нет

Основное преимущество этого инструмента — возможность конкретизировать результаты поиска на уровне отдельных статей, а не целых нормативных документов.

Задавайте вопросы так.

휴학은 최대 몇 년까지 가능해?
학칙 제27조 보여줘
교원인사팀이 관리하는 규정 목록 뽑아줘
최근 3개월 안에 개정된 규정 알려줘
학칙 별지1 파일 받아줘

Структура

Структура, основанная на GitHub, с разделением сбора и запросов. Постоянно работающий сервер не требуется.

GitHub Actions (야간 크론)          사용자 기기 (stdio, 온디맨드)
  수집 → SQLite FTS 빌드     ──▶     Release에서 DB 내려받아 캐시
  → Release 애셋 업로드              · 검색/목록/전문 → 로컬 DB (원 서버 부담 0)
                                     · 별표 HWP → 필요 시에만 라이브 + 영구 캐시
  • Поиск, полный текст и метаданные обрабатываются из локальной базы данных, поэтому увеличение числа пользователей не создает нагрузки на исходный сервер.

  • Единственное реальное подключение к исходному серверу — это загрузка HWP-файлов приложений.

Обновление данных

npm run update-data

Сбор данных выполняется автоматически каждое утро, а результаты распространяются в виде релиза. Загрузите последние данные с помощью указанной выше команды. Текущее состояние данных можно проверить с помощью get_data_status.

Загрузка приложений и форм

Только download_form подключается к исходной системе. ID файла serverfile по сути является адресом содержимого, поэтому однажды загруженный файл кэшируется навсегда, и повторный запрос того же файла не использует сеть. Если загруженное содержимое не соответствует сигнатуре документа HWP (например, страница ошибки), оно не сохраняется и считается неудачным.

Кэш хранится по ID, но копия, передаваемая пользователю, помещается в удобное место с исходным именем файла. Место сохранения определяется в порядке: SMU_FORM_DIR > ~/Claude > ~/Downloads. Также можно указать его напрямую с помощью output_dir при вызове инструмента.

Исходные имена файлов обычно имеют вид <Приложение 1> (...), но символы < и > недопустимы в Windows, поэтому они сохраняются как [Приложение 1] (...). Проверка выполняется для всех 822 файлов (npm run check-filenames).

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

Переменная

Описание

SMU_DB_PATH

Прямое указание пути к базе данных нормативных документов

SMU_CACHE_DIR

Расположение кэша (по умолчанию: ~/.cache/smu-rule-mcp, в Windows %LOCALAPPDATA%)

SMU_FORM_DIR

Расположение для сохранения загруженных приложений

SMU_DATA_URL

Прямое указание URL для распространения данных

PORT

При указании запускает HTTP-сервер вместо stdio (для самостоятельного хостинга)

SMU_CRAWLER_DISABLED

Выключатель сборщика

Устранение неполадок

Инструменты не отображаются Полностью закройте клиент (⌘Q / через панель задач) и запустите снова. Настройки считываются только при запуске.

"Не удается найти базу данных нормативных документов" Выполните npm run update-data. Данные необходимо загрузить один раз при первом запуске.

Сервер не запускается только в GUI-приложении Замените command с node на абсолютный путь (which node / where node). GUI-приложения не наследуют PATH оболочки.

Ошибка о невозможности использования node:sqlite Версия Node ниже 22.5 или требуется флаг. Рекомендуется Node 24 или выше. npm run setup сначала проверяет это.

Загрузил файл приложения, но не могу найти Проверьте путь, указанный download_form. По умолчанию это ~/Downloads. Вы также можете указать нужное расположение с помощью output_dir.

Политика сбора данных

Целевая система не рассчитана на крупномасштабный автоматический трафик. Мы стремимся к нагрузке "не более одного обычного пользователя" и соблюдаем следующую политику. Значения жестко заданы в коде src/crawler/config.ts и не должны произвольно смягчаться.

Параметр

Значение

Одновременность

1 (последовательная обработка, параллельные запросы запрещены)

Задержка между запросами

По умолчанию 2 секунды, для тяжелых запросов (полный текст, вложения) — 3 секунды

Рандомизация задержки

К указанной задержке добавляется случайное время (по умолчанию до 1 сек, для тяжелых запросов до 2 сек)

Повторные попытки

Только для ошибок 5xx, тайм-аутов и сетевых ошибок: 3 попытки с ожиданием 2с → 4с → 8с

429/503

Соблюдение Retry-After, при отсутствии — ожидание 60 секунд

Автоматический выключатель

Немедленная остановка при 5 последовательных сбоях или 3 накопленных тайм-аутах

Время сбора

Ежедневно с 2:00 до 5:00 утра (KST)

User-Agent

Честный UA, включающий адрес репозитория (спуфинг запрещен)

Файлы приложений

Ленивая загрузка: массовый сбор запрещен, загружаются по одному по запросу с постоянным кэшированием

Выключатель

Переменная окружения SMU_CRAWLER_DISABLED

Бюджет запросов: однократный начальный сбор текста, последующие ежедневные инкрементальные обновления только для изменений. Массовая загрузка файлов приложений политикой не предусмотрена.

Конвейер данных

Сбор выполняется .github/workflows/crawl.yml ежедневно в 02:00 KST.

이전 Release 복원 → 증분 수집 → 무결성 검증 → gzip → Release(data-latest) 배포
  • Сначала восстанавливается предыдущий дистрибутив. Без этого каждый запуск приводил бы к полному пересбору, что является предварительным условием для инкрементального сбора (повторный сбор полного текста только для измененных редакций).

  • Если сборщик останавливается сам (вне временного окна, из-за выключателя или автоматического выключателя), развертывание пропускается, и рабочий процесс не считается неудачным.

  • Развертывание выполняется только после того, как scripts/verifyDb.mjs проверит минимальное количество записей, целостность индексов и отсутствие резкого уменьшения по сравнению с предыдущим запуском. Это предотвращает перезапись корректных данных частично неудачными результатами.

Выключатель: Установите переменную репозитория SMU_CRAWLER_DISABLED в true, чтобы остановить сбор.

Ручной запуск возможен на вкладке Actions → crawlRun workflow, опция force позволяет обойти временные ограничения.

Данные и лицензия

  • Исходный код: MIT

  • Данные нормативных документов: Авторские права принадлежат Университету Санмён и не подпадают под действие лицензии MIT. Для соблюдения границ лицензии данные не фиксируются в репозитории, а распространяются отдельно в виде ресурсов релиза. → NOTICE.md

Контакты

Если представители Университета Санмён желают запросить корректировку или прекращение работы, пожалуйста, сообщите об этом через Issues. Мы оперативно отреагируем.

A
license - permissive license
-
quality - not tested
A
maintenance

Maintenance

Maintainers
Response time
Release cycle
1Releases (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

View all related MCP servers

Related MCP Connectors

  • Korean public procurement law: rule-engine rulings, statutes search, live court precedents

  • Korean public procurement law: rule-engine rulings, statutes search, live court precedents

  • Search company disclosures and financial statements from the Korean market. Retrieve stock profile…

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/gsmtc01/smu-rule-mcp'

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