smu-rule-mcp
smu-rule-mcp
Servidor MCP no oficial que permite consultar las regulaciones del Sistema de Gestión de Regulaciones de la Universidad Sangmyung (rule.smu.ac.kr) desde un asistente de IA.
Busca a nivel de artículo: 301 regulaciones, 5,196 artículos, 2,029 anexos y formularios.
⚠️ Este proyecto es una herramienta no oficial, no afiliada a la Universidad Sangmyung. No cuenta con aprobación, patrocinio ni certificación. El contenido de las regulaciones oficiales debe verificarse siempre en la fuente original. Consulte NOTICE.md para más detalles.
나: 휴학은 최대 몇 년까지 돼?
AI: 학칙 제28조(휴학기간 및 복학)에 따르면 일반휴학은 1년 또는 학기 단위로…Inicio rápido
Requiere Node.js 22 o superior (instale la versión LTS desde nodejs.org). Los comandos son los mismos en Windows, macOS y Linux.
git clone https://github.com/gsmtc01/smu-rule-mcp
cd smu-rule-mcp
npm run setupCon un solo npm run setup se completan la instalación de dependencias, la compilación, la descarga de datos y el registro del cliente.
Durante la ejecución, elija el cliente a registrar. El archivo de configuración se respalda automáticamente antes de modificarlo, y no se alteran otros servidores MCP ya registrados.
npm run setup -- --client claude-desktop # 물어보지 않고 바로 등록
npm run setup -- --print # 설정 JSON만 출력(직접 붙여넣기)Una vez instalado, cierre completamente el cliente y vuelva a abrirlo. La configuración MCP se lee solo al iniciar el cliente.
Related MCP server: korean-law-mcp
Configuración por cliente
Este servidor funciona de forma local (stdio). El cliente inicia el proceso cuando lo necesita, por lo que no requiere un servidor ni cuenta adicionales.
Cliente | Soporte | Requisitos |
Claude Desktop | Sí |
|
Claude Code | Sí |
|
Codex CLI | Sí |
|
Cursor / Windsurf, etc. | Sí |
|
Claude Web (claude.ai) | No | Ver más abajo |
ChatGPT (Web, app escritorio, Work) | No | Ver más abajo |
Claude Desktop
npm run setup -- --client claude-desktopPara hacerlo manualmente, edite directamente el archivo de configuración.
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"smu-rule": {
"command": "node",
"args": ["<저장소 경로>/dist/mcp/server.js"]
}
}
}Se recomienda usar la ruta absoluta de node como command (which node / where node).
Las aplicaciones GUI no heredan el PATH del shell, por lo que a veces no encuentran node.
En rutas de Windows, escriba las barras invertidas duplicadas: "C:\\Users\\...".
Claude Code
npm run setup -- --client claude-codeSe registra en mcpServers de ~/.claude.json. El formato es igual que el de Claude Desktop.
Si usa Claude Desktop junto con Claude Code, regístrelo solo en uno. La configuración de la aplicación de escritorio puede aplicarse también a la sesión de Claude Code, provocando un registro duplicado.
Codex CLI
Codex usa TOML. Agréguelo a ~/.codex/config.toml.
[mcp_servers.smu-rule]
command = "node"
args = ["<저장소 경로>/dist/mcp/server.js"]Puede ver la ruta con npm run setup -- --print.
Cursor · Windsurf, etc.
npm run setup -- --client cursorSi el cliente usa el formato mcpServers, simplemente coloque el mismo JSON que el de Claude Desktop en su archivo de configuración correspondiente.
ChatGPT (Web · app de escritorio · Work)
Actualmente no se puede usar.
ChatGPT, incluyendo su aplicación de escritorio, solo admite servidores MCP remotos (dirección HTTPS) y no soporta servidores stdio locales que se ejecutan en su PC. Para registrarse en el modo de desarrollador de conectores, se necesita una dirección accesible desde Internet, y este proyecto no opera un servidor público.
Por la misma razón, tampoco se puede usar en Claude Web (claude.ai). Los clientes que se ejecutan en el navegador no pueden ejecutar programas en su PC.
En la familia ChatGPT, solo Codex CLI admite MCP local, por lo que puede usar ese. De lo contrario, se recomienda Claude Desktop o Claude Code. La instalación es sencilla y los archivos adjuntos se guardan directamente en su PC.
Nota: Este servidor incluye un modo que se ejecuta como HTTP si se le proporciona
PORT. Está pensado para quienes quieran alojarlo ellos mismos; hasta que haya un servidor público, cada usuario debe implementar su propia conexión para clientes web. Si lo expone en una dirección pública, eldownload_formque accede al sistema original también quedará abierto, así que debe establecer restricciones de acceso.
Herramientas
Herramienta | Descripción | Acceso al servidor original |
| Búsqueda de texto completo a nivel de artículo (FTS5) | Ninguno |
| Consulta del texto completo de una regulación | Ninguno |
| Listado por categoría y departamento | Ninguno |
| Información de las últimas modificaciones | Ninguno |
| Regulaciones derogadas | Ninguno |
| Metadatos de anexos y formularios | Ninguno |
| Descarga de anexos/formularios en formato HWP | Sí (solo la primera vez) |
| Punto de recolección y cantidad de la BD local | Ninguno |
La principal ventaja de esta herramienta es que los resultados de búsqueda se especifican a nivel de artículo, no de regulación completa.
Puede preguntar de esta manera.
휴학은 최대 몇 년까지 가능해?
학칙 제27조 보여줘
교원인사팀이 관리하는 규정 목록 뽑아줘
최근 3개월 안에 개정된 규정 알려줘
학칙 별지1 파일 받아줘Estructura
Estructura nativa de GitHub con recolección y consulta separadas. No requiere un servidor en ejecución constante.
GitHub Actions (야간 크론) 사용자 기기 (stdio, 온디맨드)
수집 → SQLite FTS 빌드 ──▶ Release에서 DB 내려받아 캐시
→ Release 애셋 업로드 · 검색/목록/전문 → 로컬 DB (원 서버 부담 0)
· 별표 HWP → 필요 시에만 라이브 + 영구 캐시Búsqueda, texto completo y metadatos se procesan desde la base de datos local, por lo que no se genera carga en el servidor original aunque aumenten los usuarios.
La única conexión real al servidor original es para la descarga de archivos HWP de anexos.
Actualización de datos
npm run update-dataLa recolección se ejecuta automáticamente cada madrugada y los resultados se distribuyen como Release. Ejecute el comando anterior para recibir los datos más recientes. Puede verificar el momento de los datos actuales con get_data_status.
Descarga de anexos y formularios
Solo download_form se conecta al sistema original. El ID de serverfile es prácticamente una dirección de contenido, por lo que los archivos ya descargados se almacenan en caché permanente; si se solicita el mismo archivo de nuevo, no se usa la red. Si el contenido descargado no coincide con la firma de un documento de Hancom (por ejemplo, página de error), no se guarda y se trata como fallo.
El caché se almacena por ID, pero la copia que se entrega al usuario se coloca en una ubicación de fácil acceso con el nombre de archivo original. La ubicación de almacenamiento se determina en el orden: SMU_FORM_DIR > ~/Claude > ~/Downloads, y también se puede especificar directamente con output_dir al llamar a la herramienta.
El nombre de archivo original suele tener la forma <Anexo 1> (...), pero como < y > no se pueden usar en Windows, se guarda como [Anexo 1] (...). Se verifica para todos los 822 archivos (npm run check-filenames).
Variables de entorno
Variable | Significado |
| Especifica la ruta de la base de datos de regulaciones |
| Ubicación de la caché (por defecto: |
| Ubicación donde colocar los anexos descargados |
| Especifica la URL de distribución de datos |
| Si se especifica, ejecuta como servidor HTTP en lugar de stdio (para autoalojamiento) |
| Interruptor de apagado del recolector |
Solución de problemas
No se ven las herramientas Cierre completamente el cliente (⌘Q / desde la barra de tareas) y vuelva a abrirlo. La configuración se lee solo al iniciar.
"No se encuentra la base de datos de regulaciones"
Ejecute npm run update-data. Es necesario descargar los datos la primera vez.
El servidor no se inicia solo en la aplicación GUI
Cambie command de node a la ruta absoluta (which node / where node).
Las aplicaciones GUI no heredan el PATH del shell.
Error de que no se puede usar node:sqlite
Es una versión anterior a Node 22.5 o una que requiere una bandera. Se recomienda Node 24 o superior.
npm run setup verifica esto al inicio.
Descargué un archivo de anexo pero no lo encuentro
Verifique la ruta que download_form le indicó. El valor predeterminado es ~/Downloads.
También puede especificar la ubicación deseada con output_dir.
Política de recolección
El sistema de destino no está diseñado para manejar tráfico automatizado a gran escala.
Nuestro objetivo es mantener una carga equivalente a "1 usuario normal o menos", siguiendo las políticas a continuación.
Los valores están fijados en código en src/crawler/config.ts y no deben modificarse arbitrariamente.
Elemento | Valor |
Concurrencia | 1 (procesamiento en serie, sin solicitudes paralelas) |
Retardo entre solicitudes | 2 segundos por defecto; 3 segundos para solicitudes pesadas (texto completo, adjuntos) |
Aleatorización del retardo | Se añade un tiempo aleatorio al retardo anterior (máx. 1 segundo por defecto, máx. 2 segundos para solicitudes pesadas) |
Reintentos | Solo para errores 5xx, timeouts y errores de red: 3 veces, espera 2s → 4s → 8s |
429/503 | Respetar |
Disyuntor | Si hay 5 fallos consecutivos o 3 timeouts acumulados, detenerse inmediatamente |
Horario de recolección | Diariamente de 2:00 a 5:00 a.m. (KST) |
User-Agent | UA honesto que incluye la dirección del repositorio (sin suplantación) |
Archivos de anexos | Lazy: no se recopilan en lote, se reciben uno por uno a petición y se almacenan en caché permanente |
Interruptor de apagado | Variable de entorno |
Presupuesto de solicitudes: 1 recolección de texto inicial, luego incrementos diarios solo de cambios. Por política, no se realiza la descarga masiva de archivos de anexos.
Canalización de datos
La recolección la realiza .github/workflows/crawl.yml todos los días a las 02:00 KST.
이전 Release 복원 → 증분 수집 → 무결성 검증 → gzip → Release(data-latest) 배포Primero se restaura la distribución anterior. Sin esto, cada ejecución sería una recolección completa, por lo que es un requisito previo para la recolección incremental (solo se vuelve a recolectar el texto completo de las regulaciones cuyas versiones han cambiado).
Si el recolector se detiene por sí mismo (fuera del horario, interruptor de apagado, disyuntor), se omite la distribución y el flujo de trabajo no se marca como fallido.
Solo se despliega después de que
scripts/verifyDb.mjsverifique el número mínimo de registros, la consistencia de índices y la ausencia de una caída abrupta con respecto a la ejecución anterior. Esto evita que resultados parcialmente fallidos sobrescriban datos válidos.
Interruptor de apagado: establezca la variable de repositorio SMU_CRAWLER_DISABLED en true para detener la recolección.
La ejecución manual se puede realizar desde la pestaña Actions → crawl → Run workflow, y se puede omitir la restricción horaria con la opción force.
Datos y licencia
Código fuente: MIT
Datos de regulaciones: Los derechos de autor pertenecen a la Universidad Sangmyung y no están cubiertos por la licencia MIT. Para mantener los límites de licencia, los datos no se confirman en el repositorio, sino que se distribuyen por separado como activos de Release. → NOTICE.md
Contacto
Si los representantes de la Universidad Sangmyung desean solicitar ajustes o la suspensión del funcionamiento, por favor comuníquense a través de Issues para una respuesta rápida.
This server cannot be installed
Maintenance
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
- FlicenseAqualityBmaintenanceEnables AI systems to search, retrieve, and analyze Korean legal information from the National Law Information API (law.go.kr), including laws, administrative rules, English translations, and law-ordinance linkages.261
- Flicense-qualityDmaintenanceEnables searching and retrieving Korean laws, precedents, and administrative rules through the National Law Information Center Open API, optimized for AI agents.
- AlicenseAqualityDmaintenanceEnables searching and retrieving regulations from the Hansung University regulation management system.49MIT
- AlicenseBqualityBmaintenanceEnables AI to search and retrieve regulations from Dongguk University's integrated rule management system.5MIT
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…
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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