Honcho
Memory that reasons: continual learning for stateful agents. Better context, fewer tokens.
作者による説明(英語の原文)
Read + write MCP server for OpenEMIS — free open-source school management system. 675 resources.
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
OPENEMIS_BASE_URL, OPENEMIS_API_KEY, OPENEMIS_USERNAME, OPENEMIS_PASSWORD, OPENEMIS_TIMEOUT_MS, OPENEMIS_CORE_IN_OPERATOR「秘密」と表示された値は、あなたのアカウントの鍵です。絶対に人に教えたり、チャットに貼り付けたりしないでください。
必要なもの
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます
{
"mcpServers": {
"openemis-pro": {
"command": "npx",
"args": [
"-y",
"openemis-mcp-pro"
],
"env": {
"OPENEMIS_BASE_URL": "your-value",
"OPENEMIS_API_KEY": "your-value",
"OPENEMIS_USERNAME": "your-value",
"OPENEMIS_PASSWORD": "your-value",
"OPENEMIS_TIMEOUT_MS": "your-value",
"OPENEMIS_CORE_IN_OPERATOR": "your-value"
}
}
}
}ターミナルでこれを実行します
claude mcp add openemis-pro --env OPENEMIS_BASE_URL=your-value --env OPENEMIS_API_KEY=your-value --env OPENEMIS_USERNAME=your-value --env OPENEMIS_PASSWORD=your-value --env OPENEMIS_TIMEOUT_MS=your-value --env OPENEMIS_CORE_IN_OPERATOR=your-value -- npx -y openemis-mcp-pro動かす前に、空欄の値を入力してください。
プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"openemis-pro": {
"command": "npx",
"args": [
"-y",
"openemis-mcp-pro"
],
"env": {
"OPENEMIS_BASE_URL": "your-value",
"OPENEMIS_API_KEY": "your-value",
"OPENEMIS_USERNAME": "your-value",
"OPENEMIS_PASSWORD": "your-value",
"OPENEMIS_TIMEOUT_MS": "your-value",
"OPENEMIS_CORE_IN_OPERATOR": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"openemis-pro": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"openemis-mcp-pro"
],
"env": {
"OPENEMIS_BASE_URL": "your-value",
"OPENEMIS_API_KEY": "your-value",
"OPENEMIS_USERNAME": "your-value",
"OPENEMIS_PASSWORD": "your-value",
"OPENEMIS_TIMEOUT_MS": "your-value",
"OPENEMIS_CORE_IN_OPERATOR": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
OPENEMIS_USERNAME envOPENEMIS_TIMEOUT_MS envOPENEMIS_CORE_IN_OPERATOR envこの設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
このサーバーのつなぎ方と、各アプリの公式ドキュメントに基づきます。2026年11月10日に確認。
パソコン上で動かせるアプリ
ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月11日にチェック
レジストリ名は、リポジトリを所有するGitHubアカウント tixuz で確認済みです
コードの最終更新:5 か月前
このリポジトリはまだGitHubから読み取っていません
これはパソコンで動くため、インターネット上のエンドポイントはありません
パソコンで動き、代わりにローカルの設定を使います
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック2項目のうち2項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
入力が必要なもの:OPENEMIS_BASE_URL, OPENEMIS_API_KEY, OPENEMIS_PASSWORD
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
GitHubリポジトリの最終更新は5 か月前、最新バージョン(1.1.0)がレジストリに届いたのは6 か月前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにNode.jsも必要です。
同じカテゴリには:Honcho, ShipSwift, Pm Claude Skills
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:↓ 週あたりのダウンロードi★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
Memory that reasons: continual learning for stateful agents. Better context, fewer tokens.
1310 professional Agent Skills + workflow recipes — searchable & fetchable over MCP.
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
title: openemis-mcp-pro — Read + Write MCP Server for OpenEMIS School Management description: openemis-mcp-pro is the read and write MCP server that bridges AI assistants to the OpenEMIS school management information system — 678 resources, 3361 endpoints, 40 playbooks. keywords:
A natural-language bridge between MCP-aware agents (Claude, Codex, Cursor, etc.) and any OpenEMIS school — with full read + write access.
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-pro server adds full read + write access plus per-user authentication on top of any OpenEMIS school.
Translations: Русский · Español · हिन्दी · العربية
Built on top of the published OpenEMIS Core API (reference docs at api.openemis.org/core) and verified end-to-end against the public demo at [demo.openemis.org/core](https://demo.openemis.org/core) with real credentials, real data, real round-trips.
Ask in English:
*"How many current students are at Avory Primary?"*
The agent plans the calls, this MCP delivers the data, and you get the answer:
*"Avory Primary School (code P1002) has 553 currently enrolled students."*
You never write a line of code. You never see JSON. You just ask.
Status: v1.0.0 — full CRUD for non-workflow resources. Read queries work against every OpenEMIS v5 resource. Write tools (create/update/delete) are live for all resources that do not flow through the CakePHP Workflow plugin. Workflow-controlled resources (attendance, staff leave) are blocked at the tool level and redirect to the appropriate playbook.
openemis-mcp-pro is the read + write MCP server that connects AI assistants to the OpenEMIS school management system. It exposes 678 resources (students, attendance, risks, staff, exams, infrastructure) across 40 curated playbooks — 26 read and 14 write/auth. The pro distribution adds direct write tools (openemis_create, openemis_update, openemis_delete), HTTP server mode for ChatGPT Custom GPT, and per-user authentication on top of the free read-only distribution.
The OpenEMIS Core REST API is large — the v5 surface alone exposes 3,361 endpoints across 678 resources (Core 5.13.0). No AI agent can hold that in context, and raw Swagger-style introspection floods a conversation with noise that has nothing to do with the user's actual question.
This MCP solves that in two ways:
openemis_discover(topic) tool narrows to the ~20–30 endpoints relevant to what the user is actually asking about ("attendance", "students", "assessment") — powered by a small curated knowledge pack of Domain-*.md notes.openemis_get tool covers list + singleton + filtered search across every resource. The agent supplies resource + optional id + optional params (_fields, _conditions, orderby, page, limit) and the rest of the OpenEMIS CakePHP-style query DSL maps straight through.The net effect: agents answer natural-language questions in 2–4 tool calls, not 30.
| Tool | Since | What it does |
|---|---|---|
openemis_health | v0.1 | Pings the configured instance and reports reachability. Performs a real login round-trip — if this passes, CRUD will work. |
openemis_list_domains | v0.1 | Lists the curated OpenEMIS domains — Attendance, Assessment, Staff, Student, Institution, Schedule, Examination, Report — each with a one-line summary. The agent uses this to figure out *where* a question lives. |
openemis_discover | v0.1 | Input: a topic string. Output: up to 30 endpoints relevant to that topic, drawn from the domain knowledge pack and the per-instance manifest. Keeps conversations small regardless of how large the underlying API is. |
openemis_list_playbooks | v0.2 | Lists all 40 curated workflow playbooks with id, title, domain, and audience. The agent uses this to find the right step-by-step guide for a user-level task. |
openemis_get_playbook | v0.2 | Input: a playbook id. Output: the full playbook — resources, ordered steps, guidance notes, and example queries. |
openemis_get | v0.1 | Unified read tool. { resource, id?, params? } — if id is present, fetches the singleton; otherwise lists with any combination of _fields, _conditions, orderby, order, page, limit, plus any ad-hoc filter key. |
openemis_create | v0.3.0 | Create a new record. { resource, body } — non-workflow resources only. Workflow-controlled resources (e.g. institution-staff-leave) are blocked and will redirect to the appropriate playbook. |
openemis_update | v0.3.0 | Update an existing record by id. { resource, id, body } — non-workflow resources only. |
openemis_delete | v0.3.0 | Delete a record by id. { resource, id } — non-workflow resources only. |
A representative natural-language question like *"how many teachers at Avory Primary, how many vacant positions?"* resolves to three openemis_get calls — chained by the agent, narrowed by _conditions, delivered back as a single English answer. A write request like *"enrol a new student"* uses openemis_get_playbook to load the step-by-step guide, then openemis_create for each write step.
Tested against OpenEMIS Core 5.13.0 (master, June 2026). Earlier 5.7 – 5.12 deployments are also supported — the API surface is backwards-compatible.
openemis_get accepts params.ids = "1,2,3" for batch lookups. Core 5.10+ carries POCOR-9660 (?id=1,2,3 and _conditions= :IN(...) 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) without the native operator? Force the legacy parallel fan-out:
OPENEMIS_CORE_IN_OPERATOR=off
For composite-PK or view resources — where ids does not apply — use _conditions= :IN(1,2,3) instead; it filters any field by a value list and works regardless of this flag. Filtering on a field that does not exist on a resource now returns HTTP 400 (Core 5.10+, POCOR-9697), so use exact field names.
Every claim in this README was proven against the public demo instance before being written:
POST /api/v5/login with { username, password, api_key } → JWT cached, 331 charsGET /api/v5/institutions?limit=200&_fields=id,name,code → 24 institutions incl. "Avory Primary School" (id=6, code P1002)GET /api/v5/institution-students?institution_id=6&student_status_id=1&limit=1 → pagination reports last_page: 553 → 553 currently enrolled studentsGET /api/v5/academic-periods → 7 pages of real academic-year dataGET /api/v5/absence-types → EXCUSED, UNEXCUSED, LATE, etc.The sample scripts/smoke-login.mjs shipped with this repo performs the login test step-by-step so you can confirm reachability against your own instance before wiring it into Claude Code.
openemis-mcp speaks the Model Context Protocol over stdio — any MCP-compatible client works:
Stdio mode (local machine) — connects as a subprocess:
| Agent | How to connect |
|---|---|
Claude Code (claude CLI) | claude mcp add — primary tested client, all 9 tools available |
| Cursor | Add to .cursor/mcp.json — full tool access |
| Cline / Continue (VS Code) | Add server in MCP settings |
| Codex | Via gemmy-and-qwenny bridge |
| Any MCP client | Point at node dist/server.js with env vars set |
HTTP server mode (OPENEMIS_TRANSPORT=http, install once on Oracle/VPS) — connects by URL:
| Client | How to connect |
|---|---|
| Claude Code (remote) | claude mcp add --transport http --url http://your-server:3000/mcp --header "Authorization: Bearer " |
| Cursor / Cline | Add remote MCP URL in settings |
| ChatGPT (Custom GPT) | Import schema from http://your-server:3000/openapi.json → Actions → Bearer token |
| Any HTTP client | REST API at /api/* — see Teacher Guide |
Requires Node 22+ (for built-in fetch and AbortController) and Python 3.10+ (for the manifest builder and playbook generator scripts in mcp-openemis-gen/). The MCP server itself is Node-only; Python is only needed if you rebuild the manifest from source.
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 documents every variable. At minimum you need the three credentials your OpenEMIS admin issues:
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
OPENEMIS_TIMEOUT_MS=30000 OPENEMIS_VAULT_PATH=/absolute/path/to/domain-notes OPENEMIS_MANIFEST_PATH=/absolute/path/to/manifest.jsonl
The server logs in lazily on the first authenticated tool call, POSTing to /api/v5/login, parsing the JWT out of data.token, and caching it in memory. On a 401 it re-logs in and retries once.
OPENEMIS_VAULT_PATH points at the folder containing the curated Domain-*.md notes used by openemis_discover. If missing, discovery degrades gracefully to keyword matching against the manifest alone.
OPENEMIS_MANIFEST_PATH points at the JSONL output of the companion builder in ../mcp-openemis-gen/. If absent, the discovery tools return a friendly "manifest not built yet" hint — they don't crash.
set -a && source .env && set +a
node scripts/smoke-login.mjs
Expected:
[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 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"
claude mcp list | grep openemis
Any new Claude Code session in this project will see all nine tools automatically.
Set OPENEMIS_TRANSPORT=http to run as a persistent HTTP server instead of a local subprocess. Install once on your server; every MCP-compatible client (Claude Code, Cursor, Cline, Windsurf) connects by URL.
On your server:
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