korean-special-education-curriculum-mcp
MCP для учебной программы специального образования Кореи
Это сервер MCP, предназначенный только для чтения, для поиска по базовым, общим и предметно-ориентированным учебным программам средней и старшей школы в рамках пересмотренной учебной программы специального образования Республики Корея 2022 года, с указанием источников.
Текущая версия — v0.1.0-candidate. Официальные оригинальные тексты не распространяются в репозитории; вместо этого воспроизводится локальный поисковый корпус, привязанный к официальным уведомлениям, приложениям, хешам файлов и расположению страниц.
Быстрый старт
Требуются Git и Node.js версии 20 или выше. После клонирования репозитория выполните следующую команду.
git clone <이 저장소의 GitHub URL>
cd korean-special-education-curriculum-mcp
npm install
npm run sources:prepare
npm run check
npm run test:mcpsources:prepare автоматически загружает и структурирует материалы, доступные по публичным URL-адресам. Если отсутствуют дополнительные материалы, требующие входа в систему издателя, выводится только предупреждение, и подготовка остальных материалов продолжается. Фактический объем доступного серверу и недостающие материалы можно проверить с помощью get_coverage_report.
Методы подключения и примеры для различных операционных систем для новых пользователей описаны в docs/USER_GUIDE.md.
Related MCP server: ClassCraftMCP
Сфера применения
Средняя и старшая школа
Базовая учебная программа
Общая учебная программа
Предметно-ориентированная учебная программа
Уведомление Министерства образования № 2022-34 и последующие уведомления о внесении изменений
Текущая эталонная дата — 2026-08-19, а в качестве базиса для специального образования принимается уведомление Национальной комиссии по образованию № 2026-2. Для проверки взаимосвязи применения общих предметов в вариантах общей и предметно-ориентированной учебных программ также собирается уведомление № 2024-3.
Текущая реализация
Подготовлено 81 официальных источников: 35 законодательных учебных программ, 1 разъяснение, 17 материалов для оценивания, 28 исследовательских и контрольно-проверочных материалов.
Действующих законодательных единиц — 29: приложения 1, 2 и 3 по специальному образованию, а также 26 приложений к обычной общеобразовательной учебной программе, применяемых в средней и старшей школе
Проверка сигнатур файлов, запись SHA-256, конечного URL-адреса и времени сбора данных
Конвертация HWP/HWPX/PDF в Markdown и структурированные сегменты с помощью
kordocЛокальный поисковый корпус: 26 354 страницы, 112 889 сегментов
Фильтры по типу учебного заведения (средняя/старшая школа) и типу учебной программы (базовая/общая/предметно-ориентированная)
Фильтр
materialKind, разделяющий законодательные оригиналы, разъяснения, материалы по достижениям/оцениванию и исследовательские материалыMCP STDIO только для чтения, включающий URL источника, номер уведомления, номер страницы и путь по разделу
Разработка
npm install
npm run sources:prepare
npm run check
npm run test:mcp
npm run serveРезультаты загрузки и извлечения официальных документов исключены через .gitignore. Информация для воспроизведения записывается в sources/official/source-receipts.json.
Законодательные учебные программы и публичные дополнительные материалы загружать отдельно не нужно. npm run sources:prepare загружает их с официальных URL-адресов, проверяет и преобразует. Материалы с доступом для членов Edunet являются необязательными; в каталоге в поле manualAcquisition указываются исходное имя файла и путь внутри ZIP-архива. Если у вас есть такие исходные файлы, поместите их по указанным в sources/official/files/ английским именам — они будут включены в полный корпус. В случае их отсутствия сборщик выводит список необходимых файлов и целевых имён, после чего продолжает обработку остальных материалов, которые могут быть собраны автоматически.
Строгая проверка наличия всех материалов в локальной системе выполняется следующей командой.
npm run check:fullИнструменты MCP
list_official_sources: список действующих базисов, источников, статусов готовности и количества сегментовget_coverage_report: готовность и отсутствие действующих законодательных оригиналов и дополнительных материаловsearch_curriculum: поиск с фильтрами по ключевым словам, ступени школы, типу учебной программы, предмету и типу материалаget_curriculum_chunk: получение контекста и расположения исходного текста по результатам поискаfind_achievement_standard: поиск по кодам стандартов достижения
Подключение MCP
Сервер запускается как локальный STDIO-сервер. После сборки используйте следующую команду в .codex/config.toml в области проекта или в настройках MCP для Codex.
node <absolute-project-path>/dist/src/server.jsПример конфигурации проекта Codex:
[mcp_servers.korean-special-education-curriculum]
command = "node"
args = ["<absolute-project-path>/dist/src/server.js"]Перед подключением сервера один раз выполните npm run sources:prepare и npm run build.
После подключения рекомендуется сначала запросить определение границ следующим образом:
특수교육 MCP의 get_coverage_report로 현재 수록 범위를 확인해줘.Примеры последующих запросов:
고등학교 기본 교육과정 국어 성취기준을 고시 원문, 쪽수, URL과 함께 찾아줘.
[12국어01-02]의 원문과 성취기준 해설을 구분해서 보여줘.
진로와 직업 과목에서 안전과 관련된 내용을 고시 원문만 대상으로 검색해줘.Сфера применения данных
Включаются все одиннадцать приложений, применяемых к средней и старшей школе (приложения 3, 4, 7, 12, 14, 18, 19, 22, 23-39, 41) из общей учебной программы, на которые ссылается приложение 2 уведомления Национальной комиссии по образованию № 2026-2. 29 действующих законодательных документов проходят независимую проверку полноты в get_coverage_report. Шесть предыдущих уведомлений сохранены для проверки истории изменений и источников, но исключены из поиска по умолчанию.
Материалы по разъяснению, оцениванию и исследованиям не имеют той же юридической силы, что и законодательные учебные программы, поэтому они отдельно обозначены как особый тип материалов. Индексируются следующие категории: 26 единиц, входящих в исследование проекта учебной программы специального образования 2022 года, проведённое Национальным институтом специального образования, в части средней/старшей школы; отчёт о расследовании и проверке национальной учебной программы специального образования за 2025 год; руководство по оцениванию и материалы по оцениванию базовой учебной программы; материалы по уровням достижений для старшей школы за 2026 год; материалы по уровням достижений в области сайта здравоохранения и профессионального обучения, а также по гарантии минимального уровня достижений. Материалы с доступом для членов Edunet обрабатываются локально только при наличии исходников и не хранятся в Git. Известные пробелы в рамках определённого специального набора дополнительных материалов для специального образования могут быть проверены в get_coverage_report как 0.
Права и уведомление об отсутствии одобрения
Этот проект не является официальным продуктом Министерства образования, Национальной комиссии по образованию или NCIC. Официальные документы подчиняются условиям использования каждого первоисточника, и лицензия MIT этого репозитория не распространяется на официальные документы. Подробности см. в PROVENANCE.md, ACKNOWLEDGEMENTS.md, THIRD_PARTY_NOTICES.md.
О способах отправки сообщений об ошибках и внесения вклада см. в CONTRIBUTING.md, о сообщении о проблемах безопасности — в SECURITY.md.
Available Tools
5 toolsfind_achievement_standard성취기준 코드 조회ARead-onlyIdempotent
예: 9국어01-01 또는 [12진로01-01] 같은 성취기준 코드를 찾아 출처와 문맥을 반환합니다.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | ||
| limit | No | ||
| curriculumType | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is known. The description adds that it returns 'source and context,' but doesn't disclose any other behaviors like pagination or error cases, so it's adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One concise sentence with an example, no fluff. It's efficient and front-loaded, earning every character it uses.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With three parameters and no output schema, the description provides the core purpose and output type, but lacks parameter semantics and usage timing. It's sufficient for a simple lookup but leaves gaps for the optional parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description provides no parameter explanations beyond examples of code formats. The limit and curriculumType parameters are entirely unexplained, leaving the agent to guess their semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool finds achievement standard codes and returns their source and context, with concrete examples of code formats. This is specific and distinct from sibling tools by focusing on code lookup rather than broader curriculum search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for finding achievement standard codes, but it doesn't explicitly state when to prefer this over search_curriculum or other siblings. No exclusions or alternative guidance is provided, so usage context is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_coverage_report교육과정 수록 범위·완전성 확인ARead-onlyIdempotent
중·고등학교 특수교육 고시 원문과 준용 일반교육과정 별책의 수록 완전성, 아직 별도 수집 중인 보조자료 범위를 보고합니다.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, and non-destructive behavior. The description adds context about 'still being collected separately,' indicating the report may reflect incomplete data. However, it does not clarify the report's format, limitations, or any side effects beyond what annotations imply, so it adds modest value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, but it packs substantial detail about the report's content. It is not overly verbose, though splitting into two sentences could improve readability. The core information is front-loaded before the verb, which is acceptable in Korean. Overall, it earns its length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, no output schema), the description sufficiently conveys what the report covers. It mentions completeness of certain documents and scope of auxiliary materials, which is the core purpose. Without an output schema, some might expect a clearer description of the return format, but for a simple report tool, this is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is no schema to elaborate. The description provides no parameter-related information, which is appropriate. Baseline for 0 parameters is 4, and the description does not need to compensate for missing parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool reports on the completeness of curriculum inclusion and scope of auxiliary materials, which is a clear purpose (a coverage report). It distinguishes from sibling tools that focus on listing, searching, or chunk retrieval. However, it lacks specificity about exactly which documents are covered and the nature of 'auxiliary materials,' so it's not a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for checking coverage/completeness, but it does not explicitly state when to use it versus alternatives, nor does it mention any exclusions. Given the existence of sibling tools (search, list), some inference is possible, but no direct guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_curriculum_chunk교육과정 원문 청크 조회ARead-onlyIdempotent
검색 결과의 sourceId와 chunkId로 해당 원문 청크와 정확한 출처 위치를 조회합니다.
| Name | Required | Description | Default |
|---|---|---|---|
| chunkId | Yes | ||
| maxChars | No | ||
| sourceId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds value by stating that it returns the '원문 청크와 정확한 출처 위치' (original text chunk and exact source location), which is behavioral information not present in the annotations. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that clearly communicates the tool's purpose and inputs without wasted words. It is concise and efficient, with no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple retrieval tool with 3 parameters and no output schema, the description adequately states what is returned (chunk and source location) but lacks details about maxChars behavior, error conditions, or response format. Given the absence of an output schema, more detail about the return value would improve completeness, but the description is minimally acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It mentions sourceId and chunkId as inputs but does not explain their meanings beyond the names, and completely omits maxChars, which controls chunk length. The agent cannot infer syntax or purpose of maxChars from the description, leaving a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb ('조회합니다' - retrieves) and resource ('educational curriculum chunk'), and explicitly mentions the inputs (sourceId and chunkId) and outputs (original text chunk and exact source location). It distinguishes itself from siblings like search_curriculum by targeting a specific chunk from search results.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for use after a search ('검색 결과의'), providing clear context that it retrieves a chunk given IDs. It does not explicitly name alternatives or exclusions, but the purpose is evident from the phrasing, making it clear when to use it versus a search tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_official_sources공식 출처 및 준비 상태 확인ARead-onlyIdempotent
현행 기준일, 고시·별책, 원문 URL, 추출 여부와 청크 수를 나열합니다.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety. The description adds context about the output fields, but does not disclose additional behavioral traits such as whether it returns all sources, pagination, or ordering. With annotations in place, the description provides minimal extra value but does not contradict them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence that front-loads the action and lists the key outputs. Every word is meaningful, with no filler or redundancy. It is appropriately sized for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's lack of parameters, output schema, and straightforward nature, the description is mostly complete. It identifies all the data points returned, but could be slightly more explicit about the scope (e.g., 'all official sources' or 'current official sources') and whether any filtering applies. However, for a simple listing tool, this is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. There is no parameter information to add, but the description clarifies what the tool returns, which indirectly helps users understand the tool's scope. Since there are no parameters, the description fully covers the semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states what the tool lists: current base date, notifications/supplements, original URL, extraction status, and chunk count. The verb '나열합니다' (list) is specific and the resource is explicit, distinguishing it from sibling tools like search_curriculum or get_curriculum_chunk, which have different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It does not mention scenarios where it should be preferred, nor any exclusions or prerequisites. The description only states what it does, leaving usage decisions to inference from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_curriculum특수교육 교육과정 검색ARead-onlyIdempotent
중·고등학교 특수교육 교육과정 고시 원문 또는 별도 해설서 청크를 검색합니다. 결과마다 자료 유형, 고시·자료명, 쪽수, 목차 경로와 공식 출처 URL을 반환합니다.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | 검색어 또는 성취기준 코드 | |
| subject | No | 교과명 필터(예: 국어, 진로와 직업) | |
| sourceIds | No | 특정 공식 문서만 검색 | |
| schoolLevel | No | 중학교 또는 고등학교 필터 | |
| materialKind | No | statutory=고시 원문, commentary=해설서 | statutory |
| curriculumType | No | ||
| includeSuperseded | No | 현행 검색에서 제외된 구 총론 포함 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false. The description adds value by specifying the document types searched (고시 원문 vs 해설서) and the exact return fields (자료 유형, 고시·자료명, 쪽수, 목차 경로, 공식 출처 URL), providing useful behavioral context without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two efficient sentences: the first defines the action and scope, the second enumerates the return fields. There is no repetition, fluff, or irrelevant detail, making it easy to parse at a glance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter tool with no output schema, the description adequately communicates the search domain and result format. It does not describe search semantics like fuzzy matching or pagination, but the annotations and schema defaults (e.g., materialKind default, limit bounds) fill in most gaps, making it complete enough for agent selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75%, meaning most parameters are already explained. The description maps major concepts (중·고등학교, 고시 원문/해설서) to schoolLevel and materialKind parameters, but leaves limit and curriculumType untouched. Since the schema carries most of the semantic weight, the description adds only modest value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('검색합니다' – searches) and resource ('중·고등학교 특수교육 교육과정 고시 원문 또는 별도 해설서 청크'), with clear scope. It distinguishes itself from siblings like get_curriculum_chunk and find_achievement_standard by focusing on cross-document search and listing result fields.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through the search verb and scope but does not explicitly state when to use this tool over siblings or when not to use it. There is no mention of alternatives like list_official_sources or get_curriculum_chunk, so the agent must infer selection from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
v0.1.0-candidate- First observed
find_achievement_standard - First observed
get_coverage_report - First observed
get_curriculum_chunk - First observed
list_official_sources - First observed
search_curriculum
TDQS
Scored across 5 tools
The tools are mostly distinct: coverage report, source listing, search, chunk retrieval, and achievement standard lookup. However, search_curriculum and find_achievement_standard could overlap when searching for specific standards, though the latter is more targeted.
Tool names follow a consistent verb_noun pattern (get_, list_, search_, find_). Minor deviation: 'get_coverage_report' and 'get_curriculum_chunk' both use 'get' but target different resources, which is acceptable.
Five tools is well-scoped for a specialized curriculum server, covering search, retrieval, source listing, coverage reporting, and standard lookup without redundancy.
The surface covers core operations: listing sources, searching, retrieving chunks, and finding standards. Minor gaps like direct browsing of curriculum structure or filtering by grade/subject are not present, but the provided tools likely suffice for typical queries.
Maintenance
Related MCP Connectors
Read-only MCP server for ClassQuill, a tutoring-business-management platform.
Read-only MCP server for the WebAssembly spec: instructions, types, sections, search, proposals.
Search and retrieve published Alkemata articles, pages, and guidance through a read-only MCP server.
Read-only MCP server for searching Japan government procurement bid information from the KKJ portal.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceThis MCP server enables searching Korean construction standards (KDS/KCS), laws from the Ministry of Government Legislation, administrative rules and interpretations, and optionally local water/wastewater design manuals to generate grounded evidence packages for engineering answers.2MIT
- FlicenseNot gradedqualityBmaintenanceAn MCP server for creating and validating lesson plans based on the 2022 revised Korean middle school math curriculum, providing context, validation, and rendering tools.-
- FlicenseNot gradedqualityBmaintenanceA server that enables checking and managing learning paths based on the 2022 Korean national curriculum, including child profile management, curriculum search, prerequisite tracing, and learning check creation with deterministic state assessment.1-
- AlicenseNot gradedqualityDmaintenanceProvides access to the Korean elementary 2022 revised curriculum learning graph, enabling users to search and retrieve curriculum standards, learning topics, prerequisites, and roadmaps from a fully local database.152 npm13MIT