Openemis

io.github.tixuz由 GitHub 账号 tixuz 发布v1.1.0更新于 Oct 24, 2026

Read-only MCP server for OpenEMIS — free open-source school management system. 675 resources.

已验证STDIO仅桌面知识与记忆数据与分析

概览

AI 生成的概览

只读的 MCP 桥接服务,让助手用自然语言查询 OpenEMIS 学校管理系统中的学生、考勤、教职工、考试和基础设施数据。

可以做什么
  • 检测与已配置 OpenEMIS 实例的连通性,并列出精选领域或 playbook
  • 按主题发现相关接口,保持对话上下文精简
  • 加载只读 playbook,获取步骤、资源与注意事项
  • 读取任意资源,支持列表或单条记录、过滤条件与批量 id
  • 覆盖考勤、评估、学生与教职工档案、基础设施、餐食、风险、课表、审计日志和招生队列状态
适用场景
适合管理或使用 OpenEMIS 学校实例的人,让助手直接回答招生、考勤、成绩、人员、风险或基础设施方面的问题,而无需手写 API 调用。它只读,因此更适合查询与报表,而非录入数据。
运行要求
以 Node.js 22+ 本地进程通过 stdio 运行(npm 包 openemis-mcp)。需要 OpenEMIS 实例的基础地址和登录凭据:OPENEMIS_BASE_URL、OPENEMIS_USERNAME、OPENEMIS_PASSWORD 与 OPENEMIS_API_KEY,其中 API 密钥由 OpenEMIS 管理员签发。需要能访问该实例的网络。
安装前请注意
它通过环境变量保存学校登录凭据和 API 密钥,需妥善保管。开启详细日志(OPENEMIS_LOG_VERBOSE)会把包含学生姓名、入学信息等租户个人数据的工具结果写入日志;该功能默认关闭,仅应在自有实例或获得同意时启用。此处不提供写操作,写操作会指向另一个付费产品。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Openemis,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README


title: "openemis-mcp — AI bridge for OpenEMIS school management" description: "Free, read-only MCP server that connects AI assistants to OpenEMIS school management. Query student attendance, risks, staff, and 678 resources." keywords:

  • OpenEMIS
  • school management system
  • education management
  • student attendance
  • student risks
  • MCP server

[openemis-mcp logo — AI bridge for OpenEMIS school management]

openemis-mcp — AI bridge for OpenEMIS school management

Free, read-only MCP bridge between AI agents and any OpenEMIS school.

OpenEMIS is a free, open-source school management information system developed by UNESCO and KORDIT. It runs the day-to-day administration of every kind of educational institution — kindergartens, primary schools, secondary schools, secondary vocational institutions, technical colleges, and universities — managing students, staff, attendance, assessment, infrastructure, meals, scholarships, examinations, training, and ministry-level reporting. This MCP gives AI agents read-only access to the data in any OpenEMIS school so you can ask questions in plain English and get answers in seconds.

Built on the published OpenEMIS Core API (reference: api.openemis.org/core) and verified against the public demo at demo.openemis.org/core.

What this is: openemis-mcp is a free MCP server that connects AI assistants (Claude, Cursor, Codex) to the OpenEMIS school management system. It exposes 678 resources — students, student attendance, student risks, staff, exams, infrastructure — across 26 curated read-only playbooks, plus 14 redirect stubs for write operations.

Ask in plain English:

"How many current students are at Avory Primary?"

The agent plans the calls, this MCP delivers the data:

"Avory Primary School has 97 currently enrolled students across 6 classes."

No code. No JSON. Just ask.


What's included (free, MIT)

ToolWhat it does
openemis_healthPing the configured instance — real login round-trip
openemis_list_domainsList the 9 curated domains (Attendance, Assessment, Staff, Student…)
openemis_discoverTopic → up to 30 scoped endpoints. Keeps conversations small
openemis_list_playbooksList all 40 playbooks — 26 read-only here, 14 stubs that redirect to mcp-pro
openemis_get_playbookLoad a playbook by id — full steps, resources, gotcha notes
openemis_getUnified read: list or singleton, any resource, any filter

26 read-only playbooks covering attendance, assessment, student profiles, staff profiles, infrastructure, meals, risk dashboards, class reports, timetables, audit logs, school accreditation / registration, admission and enrolment queue state, and a primer on how the OpenEMIS workflow plugin powers every multi-step approval — each verified against the v5 manifest at 100% resource coverage. 14 additional playbook stubs are discoverable here but redirect to openemis-mcp-pro for the actual write/auth steps.

Translations: Русский · Español · हिन्दी · العربية — the original 17 view playbooks also translated in all four languages; 9 newer playbooks (added in v1.1.0 for Core 5.10.0, plus the two workflow playbooks) are English-only for now.

✏️ Write operations (creating/updating records in OpenEMIS) require openemis-mcp-pro. This free server is intentionally read-only — post, put, and delete are not available.

What's in Pro

openemis-mcp-pro adds write tools, remote hosting, and ChatGPT compatibility on top of this free read-only server.

FreeIndividual ProInstitution ProCountry Pro
Read tools (all 678 resources, Core 5.13.0)✅✅✅✅
26 read playbooks (17 × 5 languages + 9 EN)✅✅✅✅
14 write / auth playbooks (mark-attendance, enrol, set-accreditation…)stub✅✅✅
stdio mode (Claude Code, Cursor, Cline)✅✅✅✅
HTTP server mode (Oracle / VPS — install once, connect by URL)—✅✅✅
OpenAPI adapter (ChatGPT Custom GPT, any REST client)—✅✅✅
Direct write — single record—✅✅✅
Institution audit trail——✅✅
Workflow route execution——✅✅
Institution-admin approval gate——✅✅
Batch ops within one institution——✅✅
Multi-institution batch ops———✅
Ministry approval gates———✅
Cross-institution oversight———✅

HTTP server mode lets you install Pro once on an Oracle Always Free ARM instance and connect from any device — no per-machine setup. The built-in OpenAPI adapter means teachers can use ChatGPT (or any AI assistant) to mark attendance and look up student records by importing a single schema URL. See the ChatGPT Teacher Guide for step-by-step setup.

→ Pricing: [email protected]


Install

Requires Node 22+.

bash
git clone https://github.com/tixuz/openemis-mcp.gitcd openemis-mcpnpm installnpm run buildcp .env.example .env$EDITOR .env

Configure

env
OPENEMIS_BASE_URL=https://demo.openemis.org/coreOPENEMIS_USERNAME=adminOPENEMIS_PASSWORD=your_passwordOPENEMIS_API_KEY=your_api_key

Smoke test

bash
set -a && source .env && set +anode scripts/smoke-login.mjs

Register with Claude Code

bash
claude mcp add openemis \  --env OPENEMIS_BASE_URL="https://your-instance/core" \  --env OPENEMIS_USERNAME="…" \  --env OPENEMIS_PASSWORD="…" \  --env OPENEMIS_API_KEY="…" \  -- node "$(pwd)/dist/server.js"

Works with any MCP-compatible client: Claude Code, Cursor, Cline, Codex (via gemmy-and-qwenny), or any stdio MCP client.

Verbose logging (optional)

Capture every tool call and its response as JSONL — useful for debugging, tuning playbooks, or sharing a bug report.

bash
# stderr (visible in your MCP client's log panel)OPENEMIS_LOG_VERBOSE=1 node dist/server.js
# write to a fileOPENEMIS_LOG_VERBOSE=1 OPENEMIS_LOG_FILE=/tmp/openemis.jsonl node dist/server.js

Each line is a JSON object: {ts, type:"tool_call"|"tool_result"|"tool_error", tool, args?, result?, latency_ms, ...}. Credential-shaped keys (password, authorization, api_key, token, secret) are redacted automatically.

⚠️ Privacy: tool_result entries contain the actual OpenEMIS data returned to the agent — student names, staff IDs, enrollment details. Enable only on instances you own, or with explicit consent. Default is OFF.

🌐 Remote / server install: openemis-mcp-pro adds an HTTP server mode — install once on Oracle Always Free and every AI assistant (Claude Code, Cursor, ChatGPT) connects by URL with no per-machine setup. See the ChatGPT Teacher Guide for how to let teachers mark attendance via ChatGPT.


Playbooks

24 read-only workflow guides — see docs/playbooks/. Write-side playbooks (mark attendance, enrol a student, set school accreditation, etc.) are discoverable here as stubs that point at openemis-mcp-pro.

Read playbooks (school data lookups)

#PlaybookDomainTranslations
1Count Vacant PositionsStaffRU · ES · HI · AR
2View Student TimetableScheduleRU · ES · HI · AR
3Student DashboardStudentRU · ES · HI · AR
4Institution SummaryInstitutionRU · ES · HI · AR
5View Latest AttendanceAttendanceRU · ES · HI · AR
6View Student ProfileStudentRU · ES · HI · AR
7View Student MarksAssessmentRU · ES · HI · AR
8View Class ReportReportRU · ES · HI · AR
9View TimetableScheduleRU · ES · HI · AR
10View Full Institution ProfileInstitutionRU · ES · HI · AR
11View Full Class ProfileStudentRU · ES · HI · AR
12View a Staff Member's Full ProfileStaffRU · ES · HI · AR
13Enhance Student ProfileStudentRU · ES · HI · AR
14View Institution InfrastructureInstitutionRU · ES · HI · AR
15View Institution MealsInstitutionRU · ES · HI · AR
16View Student Risk Profile and Welfare CasesStudentRU · ES · HI · AR
17View Institution Risk Summary and Alert RulesInstitutionRU · ES · HI · AR

New in v1.2.0 (OpenEMIS Core 5.13.0)

  • List-filtering via the native IN operator (POCOR-9660). _conditions=<field>:IN(1,2,3) filters any field by a value list — including non-PK and composite-PK resources — so a class roster is one call: query institution-class-students by institution_class_id, then security-users with _conditions=id:IN(101,102,103). params.ids="1,2,3" now collapses to a single ?id=1,2,3 round-trip by default (set OPENEMIS_CORE_IN_OPERATOR=off only for pre-5.10 cores).
  • Stricter filter validation (POCOR-9697). Filtering on a field that does not exist on a resource now returns HTTP 400 instead of being silently ignored — use exact field names from the Resource Reference.
  • 3 new read-only Runtime resources (POCOR-9694): tasks, task-jobs, task-failures — the OpenEMIS Runtime queue / job / failure projection. 678 resources · 3,361 endpoints total.

New in v1.1.0 (OpenEMIS Core 5.10.0)

Loaded via openemis_get_playbook — full English content in data/playbooks.json. Translations and per-playbook markdown docs land in a follow-up release.

#PlaybookDomainWhat it does
18diagnose-alert-deliveryAlertsAnswer "did this alert actually go out?" — walks the POCOR-9509 dispatch pipeline.
19view-school-accreditationInstitutionRead institution-accreditations records (POCOR-9610), derive Active/Expired/Future status.
20view-school-registrationInstitutionRead institution-registrations history with valid_from..valid_to windows.
21view-institution-budgetInstitutionList institution-budgets per academic period, resolve budget types.
22query-student-absence-historyAttendanceAggregate absences via institution-student-absences + absence-days.
23query-user-activity-audit-logSecurityQuery the POCOR-9697 user_activities per-field audit trail.
24view-class-rosterInstitutionWalk institution-classes → institution-class-students → student details.
25view-admission-and-enrolment-queue-stateWorkflowAnswer "where is this future student in the admission/enrolment queue?" — resolves status_id → workflow_step name, current assignee, full transition history.
26explain-workflow-systemWorkflowPrimer for "why does this approval take 4 steps?" — explains workflow_models, steps, statuses, transitions, role-based assignees, and why the plugin makes approval chains configurable per tenant.

Write / auth playbooks (stubs — install mcp-pro)

mark-student-attendance, mark-staff-attendance, enroll-new-student, record-behavior-incident, submit-exam-marks, generate-student-report-card-pdf, generate-institution-statistics-pdf, add-institution-asset, record-infrastructure-repair, add-meal-programme, resolve-my-identity, set-school-accreditation, set-school-registration, mark-student-meal-participation — all redirect agents to openemis-mcp-pro, which ships openemis_create / openemis_update / openemis_delete and per-user authentication.

Core compatibility

Tested against OpenEMIS Core 5.13.0 (master, June 2026). 5.7 – 5.12 deployments are also supported — the public REST surface is backwards-compatible.

Capability flag — POCOR-9660 multi-id GET

openemis_get accepts params.ids = "1,2,3" for batch lookups. Core 5.10+ carries POCOR-9660 (?id=1,2,3 support in CrudApiController), so the handler collapses the batch into a single round-trip by default. Pointing at an older Core (5.7 – 5.9) that lacks the native operator? Force the legacy parallel fan-out:

bash
OPENEMIS_CORE_IN_OPERATOR=off

For composite-PK or view resources — where ids does not apply — use _conditions=<field>:IN(1,2,3) instead; it filters any field by a value list and works regardless of this flag.

Architecture

Agent (Claude / Cursor / Codex / …)        │ MCP stdioopenemis-mcp  ←  6 read tools + 26 read playbooks + 14 redirect stubs        │ HTTPS + Bearer JWTOpenEMIS Core API  /api/v5/{resource}   (3,361 endpoints across 678 resources)

Domain-scoped discovery keeps conversations small — openemis_discover("attendance") returns the 20–30 endpoints relevant to attendance, not all 3,361.

🖥️ Server / HTTP mode (install once on Oracle, connect from anywhere including ChatGPT) is available in openemis-mcp-pro.


Docs

  • Resource Reference — all 678 resources with method availability (Core 5.13.0)
  • Playbooks — 17 view playbooks in 5 languages + 9 newer English-only playbooks (translations follow)
  • GLOSSARY.md — key terms: OpenEMIS, MCP, attendance, student risks, and more
  • FAQ.md — common questions about school management with OpenEMIS MCP
  • ACKNOWLEDGEMENTS.md — the AI team that built this

Licence

MIT © 2026 Khindol Madraimov

Not affiliated with OpenEMIS or its maintainers. Third-party bridge to the public Core API. Credentials stay on your machine.

来源:README.md,提交 f88a80f

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v1.1.0最新Sep 16, 2026

评分

已满足适用检查项的 40%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分

    请在仓库或注册中心条目中声明许可证。