openemis-pro について
openemis-proは、AIアシスタントと学校管理システムOpenEMISをつなぐ読み書き対応のMCPサーバーです。トピック別のAPI探索や手順ガイドを備え、非ワークフローリソースを操作できます。
主な機能
- 01トピック別のAPIエンドポイント探索
- 02OpenEMISリソースの読み取りと絞り込み
- 03非ワークフロー記録の作成・更新・削除
- 04読み書き用プレイブック40件
- 05stdioとHTTPでの接続
活用シーン
- 01生徒・職員・出席データの照会
- 02生徒登録などの作業で手順ガイドを利用
- 03HTTP経由でリモートMCPクライアントに接続
MCP 対応
MCPサーバーとして、互換クライアントにOpenEMISの探索、読み取り、書き込み、プレイブック用ツールを公開します。ローカルstdioとHTTP接続に対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y openemis-mcp-proOPENEMIS_BASE_URLBase URL of your OpenEMIS instance (e.g., https://demo.openemis.org/core)OPENEMIS_API_KEYシークレットOpenEMIS API key (issued by the OpenEMIS admin). Required for every upstream login.OPENEMIS_USERNAMEOpenEMIS login username. Optional — if unset, server fails closed and requires openemis_login at runtime.OPENEMIS_PASSWORDシークレットOpenEMIS login password. Pairs with OPENEMIS_USERNAME for env-default auth.OPENEMIS_TIMEOUT_MSRequest timeout in milliseconds (default 30000)OPENEMIS_CORE_IN_OPERATORSet to 1 to enable native IN-operator batch GETs once your OpenEMIS Core has POCOR-9660 deployed.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
12掲載時のツール一覧 · 2 週間前に更新
このツールにパラメーターはありません。
詳細
title: openemis-mcp-pro — OpenEMIS 学校管理向け読み取り+書き込み MCP サーバー description: openemis-mcp-pro は、AI アシスタントと OpenEMIS 学校管理情報システムをつなぐ読み取り・書き込み対応の MCP サーバーです。678 件のリソース、3361 件のエンドポイント、40 件のプレイブックを備えています。 keywords:
- OpenEMIS
- 学校管理システム
- 教育管理
- 生徒の出席状況
- 生徒のリスク
- MCP サーバー
- 書き込みツール
openemis-mcp-pro — OpenEMIS 学校管理向け読み書き対応 AI ブリッジ
MCP 対応エージェント(Claude、Codex、Cursor など)とあらゆる OpenEMIS 学校をつなぐ自然言語ブリッジです。読み書きの両方に完全対応しています。
OpenEMIS は、UNESCO と KORDIT が開発した無料のオープンソース 学校管理情報システム です。幼稚園、小学校、中学校、中等職業教育機関、専門学校、大学など、あらゆる種類の教育機関の日常的な管理を担い、生徒、職員、出席状況、評価、施設、食事、奨学金、試験、研修、教育省向けの報告を管理します。この MCP-pro サーバーは、あらゆる OpenEMIS 学校に完全な読み書きアクセスとユーザーごとの認証を追加します。
翻訳: Русский · Español · हिन्दी · العربية
公開されている OpenEMIS Core API(リファレンスドキュメント:api.openemis.org/core)を基盤とし、実際の認証情報とデータを使って、公開デモ demo.openemis.org/core に対する一連の処理をエンドツーエンドで検証済みです。
英語で質問してください。
「Avory Primary に現在在籍している生徒は何人ですか?」
エージェントが呼び出しを計画し、この MCP がデータを提供すると、答えが返ってきます。
「Avory Primary School(コード P1002)には、現在553人の生徒が在籍しています。」
コードを一行も書く必要はありません。JSON を見る必要もありません。質問するだけです。
ステータス: v1.0.0 — ワークフローを介さないリソースで 完全な CRUD に対応しています。読み取りクエリは、すべての OpenEMIS v5 リソースで動作します。書き込みツール(作成/更新/削除)は、CakePHP Workflow プラグインを介さないすべてのリソースで利用できます。ワークフローによって制御されるリソース(出席状況、職員の休暇)はツールレベルでブロックされ、適切なプレイブックに誘導されます。
これは何か
openemis-mcp-pro は、AI アシスタントと OpenEMIS 学校管理システムをつなぐ、読み書き対応の MCP サーバーです。40 件の厳選されたプレイブック(読み取り26件、書き込み/認証14件)を通じて、678 件のリソース(生徒、出席状況、リスク、職員、試験、施設)を公開します。Pro 版では、無料の読み取り専用版に加えて、直接書き込みを行うツール(openemis_create、openemis_update、openemis_delete)、ChatGPT Custom GPT 向けの HTTP サーバーモード、ユーザーごとの認証が追加されています。
このプロジェクトの目的
OpenEMIS Core REST API は大規模で、v5 だけでも 678 個のリソースにまたがる 3,361 個のエンドポイントが公開されています(Core 5.13.0)。AI エージェントがそのすべてをコンテキストに保持することはできません。また、Swagger 形式の生のイントロスペクションでは、ユーザーの実際の質問とは無関係な情報が会話に大量に流れ込みます。
この MCP は、次の 2 つの方法でこの問題を解決します。
- ドメインを絞り込んだ探索。 API 全体をエージェントのコンテキストに読み込ませる代わりに、
openemis_discover(topic)ツールで、ユーザーが実際に尋ねている内容(「出席」「生徒」「評価」など)に関連する約 20~30 個のエンドポイントに絞り込みます。これは、厳選されたDomain-*.mdのメモで構成される、小規模なナレッジパックを利用します。 - 単一で組み合わせ可能な取得ツール。 1 つの
openemis_getツールで、すべてのリソースに対する一覧取得、単一レコードの取得、条件付き検索を実行できます。エージェントがresource、省略可能なid、省略可能なparams(_fields、_conditions、orderby、page、limit)を指定すると、残りは OpenEMIS の CakePHP 形式のクエリ DSL にそのまま渡されます。
その結果、エージェントは 30 回ではなく、2~4 回のツール呼び出しで自然言語の質問に回答できます。
ツール
| ツール | 対応開始バージョン | 機能 |
|---|---|---|
openemis_health | v0.1 | 設定済みのインスタンスに ping を送り、到達可能かどうかを報告します。実際のログイン往復を実行するため、このチェックに成功すれば CRUD も利用できます。 |
openemis_list_domains | v0.1 | 厳選された OpenEMIS ドメイン(出席、評価、職員、生徒、教育機関、時間割、試験、レポート)を、それぞれ 1 行の要約とともに一覧表示します。エージェントはこれを使って、質問がどの領域に該当するかを判断します。 |
openemis_discover | v0.1 | 入力:トピック文字列。出力:ドメインのナレッジパックとインスタンスごとのマニフェストから取得した、そのトピックに関連する最大 30 個のエンドポイント。基盤となる API の規模に関係なく、会話をコンパクトに保ちます。 |
openemis_list_playbooks | v0.2 | 厳選された 40 個のワークフロー手順書をすべて、ID、タイトル、ドメイン、対象ユーザーとともに一覧表示します。エージェントはこれを使って、ユーザーレベルのタスクに適した手順ガイドを見つけます。 |
openemis_get_playbook | v0.2 | 入力:手順書の ID。出力:リソース、順序付きの手順、ガイダンスのメモ、クエリの例を含む手順書全体。 |
openemis_get | v0.1 | 統合された読み取りツールです。{ resource, id?, params? } — id が指定されている場合は単一レコードを取得し、そうでない場合は _fields、_conditions、orderby、order、page、limit を任意に組み合わせて一覧を取得します。任意の追加フィルターキーも指定できます。 |
openemis_create | v0.3.0 | 新しいレコードを作成します。{ resource, body } — ワークフロー対象外のリソースのみが対象です。ワークフローで管理されるリソース(例:institution-staff-leave)はブロックされ、適切な手順書に誘導されます。 |
openemis_update | v0.3.0 | ID を指定して既存のレコードを更新します。{ resource, id, body } — ワークフロー対象外のリソースのみが対象です。 |
openemis_delete | v0.3.0 | ID を指定してレコードを削除します。{ resource, id } — ワークフロー対象外のリソースのみが対象です。 |
たとえば、「Avory Primary の教師は何人で、空きポジションはいくつありますか?」 のような自然言語の質問は、エージェントが連鎖して実行する 3 回の openemis_get 呼び出しに解決されます。_conditions で絞り込み、最終的に 1 つの英語の回答として返されます。「新しい生徒を入学させて」 のような書き込みリクエストでは、openemis_get_playbook で手順ガイドを読み込んでから、書き込み手順ごとに openemis_create を使用します。
コアの互換性
OpenEMIS Core 5.13.0(master、2026 年 6 月)でテスト済みです。以前の 5.7~5.12 のデプロイ環境もサポートされており、API は後方互換性があります。
機能フラグ — POCOR-9660 の複数 ID GET
openemis_get は一括検索用に params.ids = "1,2,3" を受け付けます。Core 5.10 以降には POCOR-9660(CrudApiController での ?id=1,2,3 および _conditions=<field>:IN(...) のサポート)が含まれているため、ハンドラーはデフォルトで一括検索を 1 回のラウンドトリップにまとめます。ネイティブ演算子に対応していない旧バージョンの Core(5.7~5.9)を使用していますか?従来の並列ファンアウトを強制するには、次のようにします。
OPENEMIS_CORE_IN_OPERATOR=off
ids が適用されない複合主キーまたはビューのリソースでは、代わりに _conditions=<field>:IN(1,2,3) を使用してください。これは任意のフィールドを値リストで絞り込み、このフラグの設定にかかわらず機能します。リソースに存在しないフィールドで絞り込むと HTTP 400 が返されるようになりました(Core 5.10 以降、POCOR-9697)。正確なフィールド名を使用してください。
demo.openemis.org での検証
この README の記述はすべて、公開デモインスタンスで確認してから記載しています。
{ username, password, api_key }を指定してPOST /api/v5/login→ JWT がキャッシュされます(331 文字)GET /api/v5/institutions?limit=200&_fields=id,name,code→ 24 校の教育機関("Avory Primary School" (id=6, code P1002)を含む)GET /api/v5/institution-students?institution_id=6&student_status_id=1&limit=1→ ページネーションでlast_page: 553と報告 → 現在在籍中の学生は 553 人GET /api/v5/academic-periods→ 実際の学年度データが 7 ページ分GET /api/v5/absence-types→EXCUSED、UNEXCUSED、LATEなど
このリポジトリに含まれるサンプル scripts/smoke-login.mjs は、ログインテストを手順ごとに実行します。Claude Code に接続する前に、ご自身のインスタンスへの接続を確認できます。
対応エージェント
openemis-mcp は stdio 経由で Model Context Protocol を使用するため、MCP 対応クライアントであればどれでも利用できます。
Stdio モード(ローカルマシン) — サブプロセスとして接続します。
| エージェント | 接続方法 |
|---|---|
Claude Code(claude CLI) | claude mcp add — 主要な検証済みクライアント。9 つのツールすべてを利用可能 |
| Cursor | .cursor/mcp.json に追加 — すべてのツールを利用可能 |
| Cline / Continue(VS Code) | MCP 設定でサーバーを追加 |
| Codex | gemmy-and-qwenny ブリッジ経由 |
| 任意の MCP クライアント | 環境変数を設定し、node dist/server.js を指定 |
HTTP サーバーモード(OPENEMIS_TRANSPORT=http、Oracle/VPS に一度インストール)— URL で接続します。
| クライアント | 接続方法 |
|---|---|
| Claude Code(リモート) | claude mcp add --transport http --url http://your-server:3000/mcp --header "Authorization: Bearer <token>" |
| Cursor / Cline | 設定でリモート MCP URL を追加 |
| ChatGPT(カスタム GPT) | http://your-server:3000/openapi.json からスキーマをインポート → Actions → Bearer トークン |
| 任意の HTTP クライアント | /api/* の REST API — Teacher Guide を参照 |
インストール
Node 22 以降(組み込みの fetch および AbortController 用)と、Python 3.10 以降(mcp-openemis-gen/ 内のマニフェストビルダーおよびプレイブック生成スクリプト用)が必要です。MCP サーバー自体は Node のみで動作します。Python が必要なのは、ソースからマニフェストを再構築する場合だけです。
GitHub から
git clone https://github.com/tixuz/openemis-mcp.git
cd openemis-mcp
npm install
npm run build
cp .env.example .env
$EDITOR .env
設定
.env.example にすべての変数が記載されています。最低限、OpenEMIS 管理者から発行される次の 3 つの認証情報が必要です。
OPENEMIS_BASE_URL=https://demo.openemis.org/core # or your own instance
OPENEMIS_USERNAME=admin
OPENEMIS_PASSWORD=your_password
OPENEMIS_API_KEY=your_api_key
# Optional
OPENEMIS_TIMEOUT_MS=30000
OPENEMIS_VAULT_PATH=/absolute/path/to/domain-notes
OPENEMIS_MANIFEST_PATH=/absolute/path/to/manifest.jsonl
サーバーは、認証が必要なツールが最初に呼び出されたときにログインします。/api/v5/login に POST し、data.token から JWT を解析して、メモリにキャッシュします。401 が返された場合は再ログインし、1 回だけ再試行します。
OPENEMIS_VAULT_PATH は、openemis_discover が使用する、厳選された Domain-*.md ノートを含むフォルダーを指定します。存在しない場合、ディスカバリー機能はマニフェストのみを対象としたキーワードマッチングに適切にフォールバックします。
OPENEMIS_MANIFEST_PATH は、../mcp-openemis-gen/ にある付属ビルダーが生成する JSONL 出力を指定します。存在しない場合、ディスカバリーツールは「マニフェストがまだビルドされていません」という分かりやすいヒントを返し、クラッシュすることはありません。
接続のスモークテスト
set -a && source .env && set +a
node scripts/smoke-login.mjs
想定される結果:
[Test] Loading config...
[OK] Config loaded: baseUrl=https://demo.openemis.org/core
[Test] Creating client...
[OK] Client created
[Test] Attempting login...
[OpenEMIS] Login successful; cached JWT (331 chars)
[OK] Login successful
Claude Code への登録
claude mcp add openemis \
--env OPENEMIS_BASE_URL="https://your-openemis/core" \
--env OPENEMIS_USERNAME="…" \
--env OPENEMIS_PASSWORD="…" \
--env OPENEMIS_API_KEY="…" \
--env OPENEMIS_VAULT_PATH="/absolute/path/to/vault" \
-- node "$(pwd)/dist/server.js"
# Verify
claude mcp list | grep openemis
# Expected: openemis: node /…/dist/server.js - ✓ Connected
このプロジェクトで新しい Claude Code セッションを開始すると、9 つのツールすべてが自動的に利用可能になります。
サーバーモード(Oracle Always Free/任意の VPS)
OPENEMIS_TRANSPORT=http を設定すると、ローカルのサブプロセスではなく、常時稼働する HTTP サーバーとして実行できます。サーバーに一度インストールすれば、すべての MCP 対応クライアント(Claude Code、Cursor、Cline、Windsurf)が URL 経由で接続できます。
サーバー上で:
git clone https://github.com/tixuz/openemis-mcp-pro.git
cd openemis-mcp-pro
npm install && npm run build
cp .env.example .env
$EDITOR .env # set credentials + OPENEMIS_TRANSPORT=http + OPENEMIS_AUTH_TOKEN
node dist/server.js
サーバーモード用の .env:
OPENEMIS_BASE_URL=https://your-openemis/core
OPENEMIS_USERNAME=admin
OPENEMIS_PASSWORD=your_password
OPENEMIS_API_KEY=your_api_key
OPENEMIS_TRANSPORT=http
OPENEMIS_PORT=3000
# Generate: node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
OPENEMIS_AUTH_TOKEN=your-secret-token-here
Claude Code から接続(リモート):
claude mcp add openemis-remote \
--transport http \
--url "http://your-server:3000/mcp" \
--header "Authorization: Bearer your-secret-token-here"
ヘルスプローブ(監視/稼働状況の確認用):
curl http://your-server:3000/health
# {"ok":true,"transport":"http","baseUrl":"https://your-openemis/core"}
⚠️ ポートを外部に公開する前に、必ず
OPENEMIS_AUTH_TOKENを設定してください。 設定しない場合、IP アドレスにアクセスできる人なら誰でもエンドポイントに接続できます。
アーキテクチャ
┌────────────────────────┐
│ Agent (Claude / …) │ "How many current students at Avory?"
└───────────┬────────────┘
│ MCP stdio (JSON-RPC)
┌───────────▼────────────┐
│ openemis-mcp │ ← nine typed tools, ZodRawShape schemas
│ • openemis_health │
│ • openemis_list_dom… │ ← reads Domain-*.md from vault
│ • openemis_discover │ ← topic → ≤30 scoped endpoints
│ • openemis_list_play… │ ← list all 40 workflow playbooks
│ • openemis_get_playbk │ ← load a playbook by id
│ • openemis_get / _create / _update / _delete │
└───────────┬────────────┘
│ HTTPS + Bearer JWT (cached, auto-refresh on 401)
┌───────────▼────────────┐
│ OpenEMIS Core API │ api.openemis.org/core (reference)
│ /api/v5/{resource} │ demo.openemis.org/core (tested)
└────────────────────────┘
最初のコード行から適用されている設計原則:
- ドメインを絞り、すべてを一度に取得しません。 マニフェストは数千のエンドポイントにまで増える可能性がありますが、エージェントのコンテキストには限りがあります。
openemis_discover(topic)が絞り込みの役割を担い、各会話で必要な範囲だけを表示します。 - v0.3.0 で書き込みツールに対応しました。 すべてのワークフロー以外のリソースで
openemis_create/openemis_update/openemis_deleteを利用できます。ワークフローによって制御されるリソース(attendance、staff-attendance)はツールレベルでブロックされ、適切なプレイブックに誘導されます。 - 呼び出し間でステートを保持しません。 メモリ内にキャッシュされるのは JWT のみです。ディスクへの永続化も、分析も、外部へのデータ送信も行いません。
- 実際の API を薄くラップします。 このブリッジで新しい概念を作ることはありません。
resource名は kebab-case の v5 パスで、クエリパラメーターにはネイティブの_conditions/_fieldsDSL を使用します。curl で書く内容をそのまま 1 対 1 で変換できます。
ドキュメント
- リソースリファレンス — HTTP メソッドの対応状況と書き込みステータスを含む、全 678 リソース(Core 5.13.0)
- プレイブック — 厳選された 40 のワークフローガイド(読み取り 26 件・書き込み/認証 14 件)
- ChatGPT 教師向けガイド — ChatGPT Custom GPT から教師が出席を記録できるようにする方法
- プレイブック作成手順 — 新しいプレイブックを追加するための 4 ステップの手順
- 用語集 — OpenEMIS と教育管理に関する主要用語の定義
- よくある質問 — OpenEMIS とこの MCP サーバーに関するよくある質問
プレイブック
| # | プレイブック | ドメイン | 対象ユーザー | 翻訳 |
|---|---|---|---|---|
| 1 | 空席数を数える | 職員 | admin, hr | RU · ES · HI · AR |
| 2 | 生徒の出席を記録する | 出席 | teacher, admin | RU · ES · HI · AR |
| 3 | 職員の出席を記録する | 職員 | admin, hr, teacher | RU · ES · HI · AR |
| 4 | 生徒の時間割を表示する | スケジュール | parent, student | RU · ES · HI · AR |
| 5 | 生徒ダッシュボード | 生徒 | parent, student | RU · ES · HI · AR |
| 6 | 生徒の成績表PDFを生成する | レポート | teacher, admin | RU · ES · HI · AR |
| 7 | 新しい生徒を登録する | 生徒 | admin, registrar | RU · ES · HI · AR |
| 8 | 行動上の問題を記録する | 生徒 | teacher, admin | RU · ES · HI · AR |
| 9 | 試験の成績を提出する | 評価 | teacher | RU · ES · HI · AR |
| 10 | 教育機関の概要 | 教育機関 | admin, parent | RU · ES · HI · AR |
| 11 | 教育機関の統計PDFを生成する | レポート | admin | RU · ES · HI · AR |
| 12 | 最新の出席状況を表示する | 出席 | teacher, admin, parent | RU · ES · HI · AR |
| 13 | 生徒のプロフィールを表示する | 生徒 | teacher, admin | RU · ES · HI · AR |
| 14 | 生徒の成績を表示する | 評価 | teacher, admin, parent | RU · ES · HI · AR |
| 15 | クラスレポートを表示する | レポート | teacher, admin | RU · ES · HI · AR |
| 16 | 時間割を表示する | スケジュール | teacher, admin, student | RU · ES · HI · AR |
| 17 | 教育機関の詳細プロフィールを表示する | 教育機関 | admin, parent, public | RU · ES · HI · AR |
| 18 | クラスの詳細プロフィールを表示する | 生徒 | teacher, admin | RU · ES · HI · AR |
| 19 | 職員の詳細プロフィールを表示する | 職員 | admin, hr | RU · ES · HI · AR |
| 20 | 生徒のプロフィールを充実させる | 生徒 | teacher, admin, counsellor | RU · ES · HI · AR |
| 21 | 教育機関のインフラを表示する | 教育機関 | admin, facilities | RU · ES · HI · AR |
| 22 | 教育機関の食事を表示する | 教育機関 | admin, nutritionist, parent | RU · ES · HI · AR |
| 23 | 生徒のリスクプロフィールを表示する | 生徒 | admin, counsellor, teacher | RU · ES · HI · AR |
| 24 | 教育機関のリスク概要を表示する | 教育機関 | admin, ministry | RU · ES · HI · AR |
| 25 | 設備または資産を追加する ✏️ | インフラ | admin, accountant, facilities | RU · ES · HI · AR |
| 26 | インフラの修理を記録する ✏️ | インフラ | admin, accountant, facilities | RU · ES · HI · AR |
| 27 | 新しい食事プログラムを追加する ✏️ | 食事 | admin, accountant, nutritionist | RU · ES · HI · AR |
| 28 | 自分の本人情報を解決する(ユーザーごとの認証)🔐 | 認証 | teacher, admin, staff | RU · ES · HI · AR |
| 29 | diagnose-alert-delivery (POCOR-9509) | アラート | admin, ministry | ドキュメントは後日追加 |
| 30 | view-school-accreditation (POCOR-9610) | 教育機関 | admin, ministry, principal | ドキュメントは後日追加 |
| 31 | view-school-registration (POCOR-9610) | 教育機関 | admin, ministry, principal | ドキュメントは後日追加 |
| 32 | view-institution-budget (Core 5.10.0) | 教育機関 | admin, finance | ドキュメントは後日追加 |
| 33 | query-student-absence-history (Core 5.10.0) | 出席 | teacher, admin, parent, counsellor | ドキュメントは後日追加 |
| 34 | query-user-activity-audit-log (POCOR-9697) | セキュリティ | admin, security, ministry | ドキュメントは後日追加 |
| 35 | view-class-roster (Core 5.10.0) | 教育機関 | teacher, admin, homeroom | ドキュメントは後日追加 |
| 36 | set-school-accreditation ✏️ (POCOR-9610) | 教育機関 | admin, ministry | ドキュメントは後日追加 |
| 37 | set-school-registration ✏️ (POCOR-9610) | 教育機関 | admin, ministry | ドキュメントは後日追加 |
| 38 | mark-student-meal-participation ✏️ | 食事 | teacher, admin, nutritionist | ドキュメントは後日追加 |
| 39 | view-admission-and-enrolment-queue-state 🔄 | ワークフロー | admin, registrar, parent, principal | ドキュメントは後日追加 |
| 40 | explain-workflow-system 🔄 | ワークフロー | admin, principal, developer, consultant | ドキュメントは後日追加 |
**新しいプレイブック(29~40)**は、
data/playbooks.jsonに英語の完全な内容を含めて提供され、openemis_get_playbookを通じて読み込まれます。プレイブックごとの Markdown ドキュメントと RU/ES/HI/AR 翻訳は、後続のリリースで追加されます。
ロードマップ
v0.4.0 — ブラウザー認証(予定)
現在、認証情報を使用するには、OpenEMIS 管理者が手動で発行した api_key が必要です。v0.4.0 では、手動での認証情報設定をすべて不要にする、オプションの openemis_browser_auth ツールを追加します。
- このツールはローカルの Playwright ブラウザーを起動します — 事前に対象 URL を指定する必要はありません。
- ユーザーは OpenEMIS インスタンスに移動し、通常どおりログインします。
- Playwright がすべてのネットワークトラフィックを監視します。
POST */api/v5/loginまたはPOST */api/v4/loginへのレスポンス(どちらも同一の JWT を返します)を検知すると、次の処理を行います。- リクエスト URL からベース URLを自動的に抽出します(例:
https://dev-demo.openemis.org/core/api/v5/login→ ベースhttps://dev-demo.openemis.org/core)。OPENEMIS_BASE_URLを事前に設定する必要はありません。 - レスポンス本文から JWT を抽出します。
- リクエスト URL からベース URLを自動的に抽出します(例:
- どちらもメモリにキャッシュされ、その後のすべての CRUD 呼び出しで使用されます。
これにより、OPENEMIS_BASE_URL、OPENEMIS_USERNAME、OPENEMIS_PASSWORD、OPENEMIS_API_KEY が不要になります。ユーザーはブラウザーを開いてログインするだけです。再設定なしで、開発、ステージング、本番環境を含む、あらゆる OpenEMIS インスタンス、ドメイン、サブドメインで動作します。
.env ベースの認証情報も引き続き完全にサポートされます — 既存の構成に変更はありません。ブラウザー認証は新しいツールからオプトインして利用できます。
v0.5.0 — リスクダッシュボード ✅
view-student-risks と view-institution-risks — 提供済みです。リスクスコア、基準ごとの内訳、福祉関連案件、アラートルール、配信ログを利用できます。
v0.6.0 — ワークフロールート (Institution Pro + Country Pro)
現在の書き込みツール(openemis_create、openemis_update、openemis_delete)は、一度に 1 つの操作を実行します。ワークフロールートでは、この機能をさらに拡張し、MCP が完全な複数ステップのプレイブックを自動的にオーケストレーションして、各ステップ間で状態を引き継ぎ、各段階でコミット前の検証を実施します。
新しいツール: openemis_run_workflow { playbook_id, params, dry_run? } — プレイブック ID と構造化された入力パラメーターを受け取り、すべてのステップを順番に実行して、構造化された実行ログを返します。ドライランモードでは、何も書き込まずに変更内容を報告します。
ワークフロールートは Individual Pro より上位のプランで利用できます。これは、機関または国全体の規模での AI による一括書き込みには監督が必要なためです。30 人の生徒を採点する教師にはスピードが必要ですが、20 校にまたがる 500 人の生徒を登録する地区事務所には、監査と承認が必要です。
| 機能 | Individual Pro | Institution Pro | Country Pro |
|---|---|---|---|
| 直接書き込み(単一レコード) | ✅ | ✅ | ✅ |
| 機関監査証跡 | — | ✅ | ✅ |
| ワークフロールートの実行 | — | ✅ | ✅ |
| 機関管理者による承認ゲート | — | ✅ | ✅ |
| 1 つの機関内での一括操作 | — | ✅ | ✅ |
| 複数機関にまたがる一括操作 | — | — | ✅ |
| 省庁による承認ゲート | — | — | ✅ |
| 機関横断の監督ダッシュボード | — | — | ✅ |
| 部分的な失敗時のロールバック | — | — | ✅ |
プラン
| 無料 | 個人 Pro | 機関 Pro | 国 Pro | |
|---|---|---|---|---|
| 対象範囲 | すべてのユーザー | 1 人 | 1 校 | 省庁/国 |
| ライセンス | MIT | BSL 1.1 | BSL 1.1 | BSL 1.1 |
| 読み取りツール(全 678 リソース、Core 5.13.0) | ✅ | ✅ | ✅ | ✅ |
| 厳選された 40 のプレイブック(読み取り 26・書き込み/認証 14・翻訳付き 28) | ✅ | ✅ | ✅ | ✅ |
| stdio モード(Claude Code、Cursor、Cline) | ✅ | ✅ | ✅ | ✅ |
| HTTP サーバーモード(Oracle/VPS へのインストール) | — | ✅ | ✅ | ✅ |
| OpenAPI アダプター(ChatGPT Custom GPT、あらゆる REST クライアント) | — | ✅ | ✅ | ✅ |
| 直接書き込み — 単一レコード | — | ✅ | ✅ | ✅ |
| 機関の監査証跡 | — | — | ✅ | ✅ |
| ワークフローのルート実行 | — | — | ✅ | ✅ |
| 機関管理者による承認ゲート | — | — | ✅ | ✅ |
| 1 つの機関内でのバッチ操作 | — | — | ✅ | ✅ |
| 複数機関にまたがるバッチ操作 | — | — | — | ✅ |
| 省庁の承認ゲート | — | — | — | ✅ |
| 機関横断の監督 | — | — | — | ✅ |
| 部分的な失敗時のロールバック | — | — | — | ✅ |
→ 料金とアクセス: [email protected]
ライセンス
MIT — © 2026 Khindol Madraimov
謝辞
人間の指示のもと、連携する AI エージェントチームが開発しました。チーム全員についてはACKNOWLEDGEMENTS.mdをご覧ください。メンバーは、Adviser Arastu、Marshal Sunny、Samurai Haiku、Xéphyrin Xirdal、Captain Nemo、Coddy (GPT-5)、Miniqwenco (Qwen 2.5 Coder 7B)、Miniqwen (Qwen 3.5 9B)、Gemmy (Gemma 4e4b)です。それぞれが、アーキテクチャ、コード、分析、多言語翻訳において異なる役割を担っています。
OpenEMIS またはそのメンテナーとは無関係です。これは公開 Core API と通信するサードパーティ製ブリッジです。認証情報とデータはお使いのマシン上に保持されます。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。