Skip to main content
Glama
YAMA-TANA
by YAMA-TANA

EDUCATION_SCOPE_MCP

日本の学校教育で、ある知識・用語・解法がどの学校段階・学年・教科の範囲かを判定し、LLMの説明が指定学年を超えていないか監査するMCPサーバーです。

文部科学省の学習指導要領コード表(小学校 82V12 / 中学校 83V11 / 高等学校 84V10)を取得・正規化して検索でき、手作業seedは自然な別名と前提知識グラフの補助データとして併用します。

MCP Registry

  • Registry name: io.github.YAMA-TANA/education-scope-mcp

  • Display name: Education Scope MCP

  • Version: 0.2.0

  • OCI image: ghcr.io/yama-tana/education-scope-mcp:0.2.0

  • Transport: stdio

Registry description:

Classify Japanese school curriculum scope, audit explanations against grade limits, and search 16,887 normalized MEXT curriculum-code entries.

server.json はOfficial MCP Registry向けのmanifestです。.github/workflows/publish-mcp.yml がOCIイメージをGHCRへ公開し、GitHub Actions OIDCでRegistryへ送信します。追加のRegistry用シークレットは不要です。

Related MCP server: taxonomy-mcp

MCP tools

  • classify_knowledge_scope — 「三平方の定理」「微分」「現在完了」などの教育範囲を判定

  • check_answer_scope — 「中2までで説明して」に高校・中3範囲が混ざっていないか監査

  • search_curriculum — 学校段階・教科・領域・キーワードで公式コード表を検索

  • get_prerequisites — そのトピックを理解するための前提知識を取得

  • list_supported_scopes — 監査に指定できる上限学年を取得

  • get_dataset_status — 全量MEXTデータがロード済みか、コード表別件数とともに確認

classify_knowledge_scope("三平方の定理")

{
  "bestMatch": {
    "stage": "中学校",
    "grade": 3,
    "subject": "数学",
    "topic": "三平方の定理"
  }
}

check_answer_scope("三平方の定理を使います。", "中2")

{
  "withinTarget": false,
  "exceedsTarget": [
    {
      "stage": "中学校",
      "grade": 3,
      "topic": "三平方の定理"
    }
  ]
}

セットアップ

Node.js 20以上。

npm install
npm test

stdio MCP

npm run build
npm start

MCPクライアント設定例:

{
  "mcpServers": {
    "education-scope": {
      "command": "node",
      "args": ["/absolute/path/EDUCATION_SCOPE_MCP/dist/src/index.js"]
    }
  }
}

Docker / OCI

docker run --rm -i ghcr.io/yama-tana/education-scope-mcp:0.2.0

Remote HTTP MCP

npm run build
PORT=3000 npm run start:http
  • MCP endpoint: http://localhost:3000/mcp

  • health check: http://localhost:3000/health

HTTP実装はMCP TypeScript SDK v2の createMcpHandler を使用しています。

文科省データを全量取り込む

npm run import:mext

このコマンドは3つの公式CSVを取得し、raw保存だけでなくMCPが直接読める正規化済みデータまで生成します。

data/mext/raw/
  elementary-82V12.json
  junior-high-83V11.json
  high-school-84V10.json
  index.json

data/mext/normalized/
  curriculum-items.json
  summary.json

curriculum-items.json が存在すれば、MCP起動時に自動で読み込みます。存在しない環境でもseed-onlyモードで起動できます。現在どちらのモードかは get_dataset_status で確認できます。

公式コード表から保持する主な情報:

{
  stage,
  grade,
  grades,
  subject,
  course,
  domain,
  topic,
  aliases,
  curriculumCode,
  codeTable,
  itemNumber,
  sectionPath,
  source
}

学年は16桁の学習指導要領コードの学年・段階欄を解釈します。複数学年にまたがるコードは grades に全学年を保持し、学年上限監査では安全側に倒すため、その範囲の上端を grade として使用します。高等学校は学年を推測して付与しません。

自動更新

.github/workflows/refresh-mext.yml は文科省CSVを取得し、正規化・テスト・件数検証を通過した場合だけ data/mext/normalized/ をmainへコミットします。毎月1日の定期更新と手動実行に対応しています。

raw CSV由来JSONはGit管理対象外で、MCPが必要とする正規化済みJSONだけをリポジトリに保持します。

判定設計

公式コード表は「何を扱うか」の一次根拠として優先し、src/data.ts のseedは次の補助用途に残しています。

  • 「三平方」「ピタゴラスの定理」のような自然なalias

  • 概念間の前提知識グラフ

  • 公式データをまだ生成していない環境のフォールバック

check_answer_scope は未登録概念を自動的に「範囲内」とは判定しません。既知概念を1件も検出できない文章は unknownTextPresent: true として安全側に倒します。

データソース

文部科学省「教育データ標準」学習指導要領コード表:

License

MIT

Available Tools

6 tools
check_answer_scopeA

説明文や解答に、指定した学年より後で学ぶ既知概念が混ざっていないか監査します。『中2までで説明して』のような制約チェック向けです。未登録概念は安全判定せず未判定にします。

ParametersJSON Schema
NameRequiredDescriptionDefault
answerYes監査したい説明文・解答
targetYes許可する知識範囲の上限

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full behavioral burden. It usefully discloses a genuine behavioral trait — unregistered concepts are not passed as safe but reported as undetermined — which is non-obvious. However it says nothing about the output shape or the strictness of the grade-boundary comparison, leaving gaps for an annotation-free tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with the core action and then two supporting clarifications. No filler, though the final sentence slightly overlaps purposes already implied by the first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-param tool with full schema coverage and no annotations, the description covers purpose, a usage scenario, and one edge-case behavior. It omits any indication of the return value (no output schema exists), which an agent would benefit from knowing before invoking it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with only 2 documented params, so the baseline is 3. The description's gloss (auditing a 説明文/解答 against a specified grade's known concepts) mirrors the schema's own descriptions rather than adding new parameter-level meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Concrete verb (監査する/audit) plus a clearly bounded resource: whether an answer's explanation contains known concepts taught after a given grade. The scope sense is distinct from get_prerequisites or search_curriculum, though it doesn't explicitly separate itself from the similarly named classify_knowledge_scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a concrete usage context ('中2までで説明して' style constraint checks), so an agent knows this is the constraint-verification tool. It stops short of naming when-not-to-use or explicitly routing to a sibling like classify_knowledge_scope.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

classify_knowledge_scopeC

日本の学校教育において、指定した知識・用語・解法が主にどの学校段階・学年・教科で扱われるかを判定します。文部科学省の正規化済み学習指導要領コード表が利用可能な場合はそれを優先します。

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo曖昧な場合に返す候補数
queryYes判定したい知識、用語、解法、文法事項など

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It discloses one behavioral trait (prioritizing the MEXT code table if available), but omits critical details such as whether the operation is read-only, how ambiguous cases are resolved, or what confidence or ranking the output contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences: the first front-loads the purpose, and the second adds a relevant caveat about data source priority. It is compact with no wasted words, though the caveat could be integrated more tightly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotations, the description should at least sketch the return format or confidence behavior. It does not describe what the output looks like (e.g., a ranked list of scopes), nor does it explain how the limit parameter affects ambiguous cases, leaving a significant gap for an agent invoking the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully documents both parameters (query and limit). The description adds no parameter-level meaning beyond what the schema provides, which is the expected baseline when schema coverage is high.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (判定します) and resource (specified knowledge/term in Japanese school education), clarifying it determines the school stage/grade/subject. It does not explicitly differentiate from siblings like check_answer_scope, but the scope is clear enough for an agent to understand the core function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions prioritizing the MEXT normalized curriculum code table when available, but this is a data-source preference rather than a when-to-use guideline. It offers no explicit guidance on when to choose this tool over alternatives such as check_answer_scope or search_curriculum.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_dataset_statusA

文部科学省の正規化済み全量データがロードされているか、コード表ごとの件数とともに返します。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It discloses that the tool returns a load status and per-code-table counts, which is useful, but it does not mention read-only nature, permissions, side effects, or any other behavioral traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with no wasted words. It front-loads the core purpose and appends the return detail without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter status tool with no output schema, the description adequately explains what is returned (load status and per-code-table counts). It could be slightly more complete by clarifying the output format, but it is sufficient for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline score of 4 applies. There are no parameter semantics to clarify beyond what the empty schema already indicates.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (returns) and resource (whether MEXT normalized full data is loaded, with counts per code table). It is clear enough to distinguish from the sibling tools, which focus on curriculum scope and search, but it does not explicitly name or contrast with any sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, nor any context about prerequisites or timing. It only states what is returned, leaving usage entirely implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_prerequisitesB

指定したトピックを理解するための前提知識を返します。公式コード表に概念依存関係がない場合は、同梱seedの前提知識グラフを補助的に使用します。

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNo前提知識を何段階たどるか
topicYes対象トピック

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It does reveal one non-obvious trait: the fallback to a bundled seed graph when the primary source is incomplete. But it omits return structure, error behavior for unknown topics, and any performance or data-freshness caveats.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences: the core purpose is front-loaded and the fallback caveat follows. No redundant restatement of the tool name or schema fields.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read tool with no output schema and no annotations, the description covers the purpose and a notable data-source nuance but leaves the shape of the returned graph and behavior on missing topics unspecified. Adequate but with clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the two parameters (topic, depth) are already documented in the schema, including the depth range and default. The description adds no syntax, format, or example beyond what the schema provides, making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: it returns ('返します') prerequisite knowledge ('前提知識') for a named topic. The purpose is unambiguous and the sibling names (classify_knowledge_scope, search_curriculum, etc.) are functionally distinct, but the description does not explicitly differentiate itself from them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It discloses a data-source fallback condition – when the official code table lacks concept dependencies, the bundled seed graph is used supplementarily – which implies usage context. However, it never states when to prefer this tool over siblings like search_curriculum or classify_knowledge_scope, nor any prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_supported_scopesA

check_answer_scope で指定できる教育範囲の上限一覧を返します。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. The verb '返します' implies a read-only listing operation with no side effects, but it does not explicitly confirm read-only behavior, absence of mutations, or any auth/rate-limit characteristics. It is minimally adequate for a simple 0-parameter helper.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with no wasted words, front-loading what is returned and the consuming tool. Appropriate for a simple 0-parameter listing tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters and no output schema, the description sufficiently explains what the tool returns and its relationship to check_answer_scope. It does not specify the return format (e.g., array of scope identifiers), which would be helpful but is not strictly required for this low-complexity tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so there are no parameter semantics to explain. Per the rubric, a 0-parameter tool receives a baseline of 4; the description adds no misleading parameter information.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('返します' / returns) and resource ('教育範囲の上限一覧' / list of educational scope limits), and explicitly ties it to check_answer_scope. This distinguishes it from siblings such as classify_knowledge_scope and check_answer_scope itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It implies usage by naming check_answer_scope as the consumer of the returned scopes, so an agent can infer this should be called to discover valid inputs. However, there is no explicit when-to-use, when-not-to-use, or ordering guidance relative to alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_curriculumB

教育範囲データから、教科・学校段階・領域・キーワードで項目を検索します。公式データでは学習指導要領コードも結果に含まれます。

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNo検索語。省略時はフィルタのみ
stageNo学校段階
domainNo領域名。例: 図形、関数、文法
subjectNo教科・科目名。例: 数学、数学II、英語

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It does disclose one non-obvious output trait — that official data includes 学習指導要領コード in results — but says nothing about result limits, ordering, or the read-only nature of the operation, which the agent must infer.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, front-loaded with the search scope and closed with the distinguishing output detail. No filler or repetition of structured fields.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

It covers what is searched and one output variation, but with no output schema and no annotations the description should say more about result shape, result count, and read-only behavior. Adequate but with clear gaps for a five-parameter search tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 80% schema description coverage, the schema already documents query, stage, domain and subject. The description restates those same dimensions without adding format, syntax, or matching-behavior detail, and never mentions the limit parameter. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb (検索 / search) and resource (教育範囲データ / curriculum scope data), then enumerates the filter dimensions (教科・学校段階・領域・キーワード). An agent can tell it apart from siblings like classify_knowledge_scope or get_prerequisites, though it never names an alternative explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus the sibling tools, nor any exclusions or prerequisites. Usage is only implied by the word 検索; the useful detail that filters alone work when the query is omitted lives in the schema, not the description.

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.

  1. 6 tool updatesv0.2.0
    • First observedcheck_answer_scope
    • First observedclassify_knowledge_scope
    • First observedget_dataset_status
    • First observedget_prerequisites
    • First observedlist_supported_scopes
    • First observedsearch_curriculum

TDQS

A3.6/5.0

Scored across 6 tools

Disambiguation4/5

Each tool has a fairly distinct role: classify_knowledge_scope grades a single term, check_answer_scope audits text against a grade limit, and search_curriculum queries the data. There is mild overlap between classify_knowledge_scope and search_curriculum (both can surface grade/subject for a term), but the descriptions differentiate input and output clearly.

Naming Consistency5/5

All six tools use a consistent snake_case verb_noun pattern (classify_/check_/search_/get_/list_/get_), with clear action verbs and noun objects. No mixed conventions or vague names.

Tool Count5/5

Six tools is well-scoped for a curriculum-scope lookup domain. Each tool earns its place: two core lookups, one audit, one prerequisite graph, and two meta/status helpers.

Completeness4/5

The surface covers the key lifecycle: classifying scope, auditing text, searching curriculum, prerequisites, and data-status checks. Minor gaps exist (e.g., no explicit tool to list all subjects/grade progression beyond search), but core agent workflows are supported.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to query Japanese public data (laws, corporations, statistics) from official government APIs, returning normalized English metadata with source attribution.
    1
    MIT