mcpField
E
ENT ONE (Edifice)

ENT ONE (Edifice)

ローカル
github.com科学・教育11 週間前に更新

ENT ONE (Edifice) について

Edifice上の学校ワークスペースENT ONEを保護者が利用するための非公式MCPサーバーです。対応アシスタントから連絡、宿題、ニュース、ファイルなどを読み書きでき、Rust製でデータをディスクに保存しません。

主な機能

  1. 01教師とのメッセージの閲覧と送信
  2. 02連絡帳の内容確認と署名
  3. 03宿題の確認と完了状態の変更
  4. 04学校ニュース、ブログ、カレンダーの閲覧
  5. 05書類やファイルのアップロードとダウンロード
  6. 06stdioまたはHTTPでの提供

活用シーン

  1. 01未読の教師メッセージを確認して返信を下書き
  2. 02連絡帳のお知らせを確認して署名
  3. 03子どもの宿題を確認して完了にする
  4. 04教師の受信箱に書類をアップロード

MCP 対応

MCPサーバーとして、メッセージ、宿題、ニュース、カレンダー、ファイルなどENT ONEの読み書きを行う48個のツールを公開します。stdioとStreamable HTTPに対応しています。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"edouard-claude-ent1": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"ENT1_IDENTIFIANT",
"-e",
"ENT1_MOT_DE_PASSE",
"-e",
"ENT1_URL",
"-e",
"ENT1_FUSEAU",
"ghcr.io/edouard-claude/ent1-mcp:0.1.1"
],
"env": {
"ENT1_IDENTIFIANT": "<ENT1_IDENTIFIANT>",
"ENT1_MOT_DE_PASSE": "<ENT1_MOT_DE_PASSE>",
"ENT1_URL": "<ENT1_URL>",
"ENT1_FUSEAU": "<ENT1_FUSEAU>"
}
}
}
}
起動コマンドdocker run -i --rm -e ENT1_IDENTIFIANT -e ENT1_MOT_DE_PASSE -e ENT1_URL -e ENT1_FUSEAU ghcr.io/edouard-claude/ent1-mcp:0.1.1
設定が必要な環境変数
ENT1_IDENTIFIANTENT login (same as on the ENT sign-in page)
ENT1_MOT_DE_PASSEシークレットENT password
ENT1_URLENT address
ENT1_FUSEAUTime zone of returned dates

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
ocighcr.io/edouard-claude/ent1-mcp:0.1.1

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

ent1-mcp

AI アシスタントから、お子さまのENTにアクセスできます。

ent1-mcpは、Edifice(旧 Open Digital Education)プラットフォーム上に構築された学校向けデジタルワークスペース、ENT ONE用の M C P(Model Context Protocol)サーバーです。Claude、ChatGPT、その他のMCP対応アシスタントを使って、保護者に代わりENTの情報を読み書きできます。教師とのメッセージ、連絡帳、課題、学校のお知らせ、クラスブログ、カレンダー、ロッカー、書類、フォームなどに対応しています。

Rustで記述されており、ブラウザーへの依存はありません。普段お使いの認証情報で接続し、情報は一切保存しません。

重要

非公式のコミュニティプロジェクトです。Edifice、フランス国民教育省、各地域の教育機関が開発、支援、承認しているものではありません。ENTのウェブアプリ自体が呼び出す内部APIを使用しているため、予告なく変更される可能性があります。


目次


依頼できること

「今週、ENTでは何がありましたか?」

「まだ署名していない連絡帳のお知らせはありますか?署名してください。」

「木曜日のLéaの宿題は何ですか?すでに終わったものにチェックを付けてください。」

「CM1の担任に、金曜日の午前中はLéaが欠席すること(言語聴覚士の診察)を伝えてください。送信前にメッセージを見せてください。」

「学校の最新のお知らせを3件要約して、重要な日付を私のリストに追加してください。」

「保険証明書を先生のロッカーに入れてください。」

アシスタントはツールを自動的に連携して使います。連絡先一覧から先生を探し、メッセージを作成して提示したうえで、送信します。

機能

ENT のアプリケーションごとに分類された48個のツールがあります。読み取りツールには readOnlyHint、削除ツールには destructiveHint が付与されています。MCP クライアントはこれらを使って、確認を求めるかどうかを判断します。

アプリケーションツール読み取り書き込み
アカウントprofil, deconnexion✅
最新情報fil_nouveautes✅
メッセージmessagerie_lister, messagerie_lire, messagerie_non_lus, messagerie_envoyer, messagerie_enregistrer_brouillon, messagerie_joindre_fichier, messagerie_telecharger_piece_jointe, messagerie_marquer, messagerie_deplacer, messagerie_supprimer, messagerie_restaurer, messagerie_rappeler, messagerie_dossiers, messagerie_creer_dossier✅✅
名簿annuaire_rechercher, annuaire_fiche✅
連絡帳carnet_lister, carnet_signer, carnet_repondre✅✅
課題ノートcahier_lister, cahier_lire, cahier_marquer(課題の完了/未完了)✅✅
ニュースactualites_lister, actualites_fils, actualites_lire, actualites_commenter✅✅
ブログblog_lister, blog_billets, blog_commentaires, blog_commenter, blog_supprimer_commentaire✅✅
カレンダーcalendrier_lister, calendrier_evenements✅
ドキュメントスペースdocuments_lister, documents_telecharger, documents_deposer✅✅
ロッカーcasier_lister, casier_destinataires, casier_deposer, casier_telecharger, casier_supprimer✅✅
フォームformulaires_lister, formulaires_lire✅リンク
Wikiwiki_lister, wiki_lire_page✅

参考情報:

  • すべてプレーンテキストです。 ENT の HTML は読み取り時にテキストに変換され、書き込み時には入力したテキストがエスケープされて段落に変換されます。HTML インジェクションは発生しません。
  • 構造化されたレスポンスです。 各ツールはテキストに加え、出力スキーマを備えた型付き JSON(structuredContent)を返します。
  • ファイルは Base64 形式で、送受信ともに1ファイルあたり最大10 MBです。
  • 日付はお使いのタイムゾーン(デフォルトは Indian/Reunion)で表示されます。
  • メッセージは60分間取り消し可能(messagerie_rappeler)で、ENT と同様です。

インストール

Cargo を使う場合

Rust 1.88 以降が必要です。

cargo install --git https://github.com/edouard-claude/ent1-mcp

バイナリ ent1-mcp は ~/.cargo/bin にインストールされます。

ソースから
git clone https://github.com/edouard-claude/ent1-mcp
cd ent1-mcp
cargo build --release
# binaire : target/release/ent1-mcp
Docker を使う場合

イメージはリリースごとに GitHub Container Registry に公開されます。デフォルトではバイナリと同様に stdio で通信します。

docker run --rm -i -e ENT1_IDENTIFIANT -e ENT1_MOT_DE_PASSE ghcr.io/edouard-claude/ent1-mcp

HTTP モードの場合:

docker run --rm -p 8080:8080 \
  -e ENT1_TRANSPORT=http -e ENT1_ECOUTE=0.0.0.0:8080 \
  -e ENT1_IDENTIFIANT -e ENT1_MOT_DE_PASSE -e ENT1_MCP_JETON \
  ghcr.io/edouard-claude/ent1-mcp
公式 MCP レジストリから

サーバーは MCP レジストリに io.github.edouard-claude/ent1-mcp という名前で登録されています。レジストリを利用するクライアントでは、設定が必要な変数とともに直接表示されます。

設定

すべて環境変数で設定します。シークレットはコマンドライン引数として渡せません。プロセス一覧に表示されてしまうためです。

変数必須デフォルト役割
ENT1_IDENTIFIANT✅*ENT のログイン ID(例:prenom.nom)
ENT1_MOT_DE_PASSE✅*ENT のパスワード
ENT1_URLhttps://ent1d.ac-reunion.frお使いの ENT のアドレス
ENT1_FUSEAUIndian/Reunion返される日付のタイムゾーン
ENT1_TRANSPORTstdiostdio(ローカルクライアント)または http(リモートサーバー)
ENT1_ECOUTE127.0.0.1:8080HTTP モードでの待ち受けアドレス
ENT1_MCP_JETONHTTP モードでは必須HTTP モードのアクセストークン。32 文字以上
ENT1_HOTESループバックHTTP で許可する公開ホスト名。カンマ区切り
RUST_LOGent1_mcp=infoログレベル(標準エラー出力に書き込まれます)

.env.exemple にテンプレートがあります。

起動時に、サーバーは ENT にログインします。認証情報に誤りがある場合は、最初のツール呼び出し時ではなく、すぐに通知されます。

* どちらも設定されていなくてもサーバーは起動します(調査や参照に便利です)。ツール一覧を表示し、各ツールはアカウントが設定されていないことを応答します。

アシスタントとの接続

Claude Desktop

設定 → 開発者 → 設定を編集 を開き、次の内容を追加します。

{
  "mcpServers": {
    "ent": {
      "command": "/Users/vous/.cargo/bin/ent1-mcp",
      "env": {
        "ENT1_IDENTIFIANT": "prenom.nom",
        "ENT1_MOT_DE_PASSE": "votre-mot-de-passe"
      }
    }
  }
}

Claude Desktop を再起動すると、ENT のツールがコネクターのメニューに表示されます。

Claude Code
claude mcp add ent --env ENT1_IDENTIFIANT=prenom.nom --env ENT1_MOT_DE_PASSE=votre-mot-de-passe -- ent1-mcp
HTTP モード(リモートアシスタント、API)

お使いのマシン上で動作しないアシスタントの場合は、HTTPS リバースプロキシの背後でサーバーを Streamable HTTP モードで起動します。

export ENT1_TRANSPORT=http
export ENT1_ECOUTE=0.0.0.0:8080
export ENT1_HOTES=ent-mcp.mondomaine.fr
export ENT1_MCP_JETON="$(openssl rand -hex 32)"
ent1-mcp

エンドポイントは https://ent-mcp.mondomaine.fr/mcp で、Authorization: Bearer <jeton> ヘッダーによって保護されています。ヘルスチェックは /sante で応答します。

Claude API の MCP コネクターを使用する例:

"mcp_servers": [{
  "type": "url",
  "url": "https://ent-mcp.mondomaine.fr/mcp",
  "name": "ent",
  "authorization_token": "<jeton>"
}]
claude.ai と ChatGPT(ウェブおよびモバイル)

claude.ai と ChatGPT のカスタムコネクターは固定トークンを受け付けず、OAuth 2.1 が必要です。そのため、現在の HTTP モードでは利用できません。これはプロジェクトの次のステップです(ロードマップを参照)。親がそれぞれの ENT 認証情報を入力するログインページを用意し、アシスタントに認証情報を渡さずに済むようにします。

セキュリティとプライバシー

ENTには子どものデータが含まれています。このプロジェクトは、その前提に立っています。

サーバーの動作

  • 何も保存しません。メッセージ、ドキュメント、識別子をディスクに保存することはありません。ENTのセッション(Cookie)はメモリ上に保持され、停止すると消去されます。
  • パスワードは環境変数からのみ読み込まれ、secrecy型でラップされたままです。ログ、エラーメッセージ、Debugには表示されません。
  • ENTが認証情報を拒否した場合、アカウントがロックされないよう、サーバーは再起動するまですべての試行を停止します。
  • 再接続は直列化されます。セッションの有効期限切れを検知したリクエストが10件あっても、接続は1回だけ実行されます。
  • アシスタントから渡された識別子は、URLに含める前に検証されるため、ENTの別のルートに呼び出しを転送することはできません。
  • すべての書き込み処理には、Webアプリケーションと同じようにENTのCSRF対策トークン(X-XSRF-TOKEN)が付与されます。
  • HTTPでは、必須トークンを一定時間で比較し、DNSリバインディング対策(許可ホストのリスト)を適用します。また、コード全体でunsafeは禁止されています。

知っておくべきこと

  • アシスタントが読み取った内容(メッセージ、単語、子どもや教員の名前)は、アシスタントのプロバイダー(Anthropic、OpenAIなど)に送信されます。各プロバイダーのプライバシーポリシーを確認し、可能であれば会話を学習に使用しないよう設定してください。
  • アシスタントはあなたに代わって操作します。メッセージを送信する前に必ず表示するよう指示してください。サーバーの指示でもそのように促しており、ほとんどのクライアントでは書き込みツールを使う前に確認が求められます。
  • HTTPモードをHTTPSもトークンもなしで公開しないでください。

脆弱性を見つけた場合は、公開Issueではなく、非公開でご報告ください(SECURITY.mdを参照)。

その他のEdifice ENT

ENT ONEは、オープンソースプラットフォームEdificeの派生版であり、別の名称(NEO、他のアカデミーのONE、自治体のENTなど)でも利用されています。使用されているルートは共通基盤のものなので、ENT1_URLを変更すれば、ent1-mcpは他でも動作するはずです。テスト済みなのはレユニオンのインスタンス(ent1d.ac-reunion.fr)のみです。フィードバックをお待ちしています。

ÉduConnectによるログイン、または二要素認証を必須とするENTには、現時点では対応していません(既知の制限を参照)。

アーキテクチャ

  Assistant (Claude, ChatGPT…)
          │  MCP : stdio ou Streamable HTTP (+ jeton)
          ▼
 ┌──────────────────────────────┐
 │ ent1-mcp                     │
 │  outils/   48 outils MCP     │  un module par application de l'ENT
 │  texte.rs  HTML ⇄ texte      │
 │  ent/      client HTTP       │  session, reconnexion, XSRF, identifiants typés
 └──────────────┬───────────────┘
                │  HTTPS, cookie de session
                ▼
        ENT ONE / Edifice
   (/conversation, /schoolbook, /homeworks, /actualites, /blog, /rack…)
  • 接続:POST /auth/loginでログインフォームを送信し、その後セッションCookieを取得します。401応答、またはログインページへのリダイレクトを検知すると再接続し、リクエストを1回だけ再送します。
  • プロセスごとに1アカウント:ENTクライアントは、プロセス内のすべてのMCPセッションで共有されます。複数の家族にサービスを提供するには、アカウントごとにプロセスを起動してください(またはOAuthモードの実装をお待ちください)。
  • スタック:rmcp(公式MCP SDK)、reqwest + rustls、axum、tokio、schemars、html2text、jiff。

開発

cargo build
cargo test
cargo clippy --all-targets -- -D warnings   # lints pedantic activés dans Cargo.toml
cargo fmt --check
実際のENTに対して検証する

scripts/verifier.pyスクリプトはサーバーを起動し、すべての読み取りツールを呼び出して、内容を表示せずに概要(返された項目数、エラー)を表示します。ENTには何も書き込みません。

cargo build --release
export ENT1_IDENTIFIANT=prenom.nom
read -rs ENT1_MOT_DE_PASSE && export ENT1_MOT_DE_PASSE
python3 scripts/verifier.py
MCPインスペクターで探索する
npx @modelcontextprotocol/inspector target/release/ent1-mcp
ツールを追加する
  1. ENTのWebアプリケーションでネットワークリクエストを特定します(ブラウザーの開発者ツールの「ネットワーク」タブを使用)。
  2. 対応するsrc/outils/<application>.rsモジュールに#[tool(...)]を付けてメソッドを追加し、アシスタント向けの明確なフランス語の説明と、適切な注釈(read_only_hint、destructive_hintなど)を設定します。
  3. 危険な識別子を拒否するent::chemin(&[...])を使ってパスを構築します。
  4. 出力はフランス語のSerialize + JsonSchema構造体にします。

既知の制限事項

  • ÉduConnect、FranceConnect、二要素認証:対応しているのは、ENTのユーザー名とパスワードによるログインのみです。
  • 初回ログイン:新しい利用規約への同意やパスワードの変更など、ENTで操作が必要な場合はサーバーが通知します。ブラウザーで一度操作してください。
  • フォーム:質問の読み取りと回答ページへのリンクに対応しています。回答の入力はブラウザーで行います。
  • カレンダーとWiki:読み取り専用です。連絡帳では「完了」のチェックボックスのみ変更できます(ENTと同様です)。
  • 未文書化のAPI:ENTの更新によってツールが動作しなくなる場合があります。検証スクリプトを使えば、すぐに検出できます。

ロードマップ

  • claude.aiとChatGPT向けのOAuth 2.1:認可サーバーの組み込み(クライアントの動的登録、PKCE)、ENTログインページ、保護者ごとに1つのENTセッション。
  • アシスタントからのフォーム回答。
  • 個人カレンダーへのイベント作成。
  • MCPエリシテーション:送信前のネイティブな確認。
  • Dockerイメージの公開(GHCR)と公式MCPレジストリへの登録。
  • コンパイル済みバイナリ(macOS、Linux、Windows)。
  • 模擬ENTサーバーでの統合テスト。

貢献

フランス語での貢献を歓迎します。issue、他の学区からのフィードバック、新しいツール、ドキュメントの修正などをお寄せください。CONTRIBUTING.mdをご覧ください。

ライセンス

次のいずれかを選べるデュアルライセンスです:MITまたはApache 2.0。

「ONE」、「Edifice」および学区名は、それぞれの所有者に帰属します。本プロジェクトはそれらと提携していません。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。