MCP server for Eltern-Portal — substitution plans, parent letters, bulletin board, and school calendar
Project description
Eltern-Portal MCP Server
An MCP server that provides access to German school Eltern-Portal data. Enables AI assistants to fetch substitution plans, parent letters, bulletin board announcements, and school calendar events.
Tools
| Tool | Description |
|---|---|
check_login |
Verify that credentials are valid |
get_vertretungsplan |
Fetch the current substitution plan (uses Claude Haiku for HTML parsing) |
list_elternbriefe |
List all parent letters with metadata |
get_elternbrief |
Fetch a specific parent letter by number or title (PDF converted to markdown) |
get_schwarzes_brett |
Fetch bulletin board announcements |
get_termine |
Fetch upcoming school events and calendar entries (Schulaufgabenplan) |
Prerequisites
- Python 3.10+
- An Eltern-Portal parent account
- An Anthropic API key (for vertretungsplan HTML parsing)
Installation
cd plugins/elternportal
pip install -r elternportal_mcp/requirements.txt
Configuration
The server loads credentials in this priority order:
1. Config file (recommended)
Create ~/.mcp-server-config/elternportal_mcp/.env:
URL=https://yourschool.eltern-portal.org
USER=your@email.com
PASSWORD=your-password
ANTHROPIC_API_KEY=sk-ant-...
This is the simplest setup. The server reads this file on startup and uses the values as defaults. No other configuration needed.
2. Environment variables (override)
Environment variables take precedence over the config file. Both long and short names are supported:
| Long name (MCP config) | Short name (.env file) | Description |
|---|---|---|
ELTERNPORTAL_URL |
URL |
School-specific Eltern-Portal URL |
ELTERNPORTAL_USER |
USER |
Parent account email |
ELTERNPORTAL_PASSWORD |
PASSWORD |
Parent account password |
ANTHROPIC_API_KEY |
ANTHROPIC_API_KEY |
For Claude Haiku HTML parsing |
3. Plugin .mcp.json (auto-configured via marketplace)
When installed as a Cowork plugin, the .mcp.json is auto-discovered. It uses ${VAR} syntax to pull from the environment. Set the env vars via ~/.claude/settings.json:
{
"env": {
"ELTERNPORTAL_URL": "https://yourschool.eltern-portal.org",
"ELTERNPORTAL_USER": "your@email.com",
"ELTERNPORTAL_PASSWORD": "your-password",
"ANTHROPIC_API_KEY": "sk-ant-..."
}
}
Manual MCP client config
For non-plugin setups, add to your .mcp.json:
{
"elternportal": {
"command": "python",
"args": ["-m", "elternportal_mcp"],
"cwd": "/path/to/plugins/elternportal",
"env": {
"ELTERNPORTAL_URL": "https://yourschool.eltern-portal.org",
"ELTERNPORTAL_USER": "your@email.com",
"ELTERNPORTAL_PASSWORD": "your-password",
"ANTHROPIC_API_KEY": "sk-ant-..."
}
}
}
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file elternportal_mcp-2.1.0.tar.gz.
File metadata
- Download URL: elternportal_mcp-2.1.0.tar.gz
- Upload date:
- Size: 9.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9b3f7dae0ea5b0db7da846064b2ac709408390db62172f11c00bd78bef8d7128
|
|
| MD5 |
e394e2387c3a07d212644f471befdbe2
|
|
| BLAKE2b-256 |
3df05f03b38b85c969b1036dd2346c488aba40be7da92f11eb617e6ef8bff206
|
Provenance
The following attestation bundles were made for elternportal_mcp-2.1.0.tar.gz:
Publisher:
publish-elternportal.yml on andasv/andrei-skill-marketplace
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
elternportal_mcp-2.1.0.tar.gz -
Subject digest:
9b3f7dae0ea5b0db7da846064b2ac709408390db62172f11c00bd78bef8d7128 - Sigstore transparency entry: 1243121257
- Sigstore integration time:
-
Permalink:
andasv/andrei-skill-marketplace@34a5a1245a659016dc30871604541cc3200f1c1a -
Branch / Tag:
refs/tags/elternportal-mcp-v2.1.0 - Owner: https://github.com/andasv
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-elternportal.yml@34a5a1245a659016dc30871604541cc3200f1c1a -
Trigger Event:
push
-
Statement type:
File details
Details for the file elternportal_mcp-2.1.0-py3-none-any.whl.
File metadata
- Download URL: elternportal_mcp-2.1.0-py3-none-any.whl
- Upload date:
- Size: 12.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
37ac3c4096c645226677029a6a462f398e09d6ceb8c7bb8b659f0cce9c89f921
|
|
| MD5 |
146bd1c93d7b51547d9bc6bc957cb2a7
|
|
| BLAKE2b-256 |
c13ae52cc2b845f0ac71327db1e575cf916015cd795b4ae3180ca7d5487e9e5e
|
Provenance
The following attestation bundles were made for elternportal_mcp-2.1.0-py3-none-any.whl:
Publisher:
publish-elternportal.yml on andasv/andrei-skill-marketplace
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
elternportal_mcp-2.1.0-py3-none-any.whl -
Subject digest:
37ac3c4096c645226677029a6a462f398e09d6ceb8c7bb8b659f0cce9c89f921 - Sigstore transparency entry: 1243121283
- Sigstore integration time:
-
Permalink:
andasv/andrei-skill-marketplace@34a5a1245a659016dc30871604541cc3200f1c1a -
Branch / Tag:
refs/tags/elternportal-mcp-v2.1.0 - Owner: https://github.com/andasv
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-elternportal.yml@34a5a1245a659016dc30871604541cc3200f1c1a -
Trigger Event:
push
-
Statement type: