Skip to main content

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

Metadata

Release files for elternportal-mcp 2.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for elternportal-mcp 2.1.0
File Size Uploaded
elternportal_mcp-2.1.0.tar.gz 9.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for elternportal-mcp 2.1.0
File Interpreter ABI Platform
elternportal_mcp-2.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 22.1 kB

Release files / elternportal_mcp-2.1.0.tar.gz

Download URL elternportal_mcp-2.1.0.tar.gz
Size 9.6 kB
Tags Source
SHA-256 checksum
How to use checksums
9b3f7dae0ea5b0db7da846064b2ac709408390db62172f11c00bd78bef8d7128
BLAKE2b-256 checksum
How to use checksums
3df05f03b38b85c969b1036dd2346c488aba40be7da92f11eb617e6ef8bff206
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 6, 2026.

Transparency log

Release files / elternportal_mcp-2.1.0-py3-none-any.whl

Download URL elternportal_mcp-2.1.0-py3-none-any.whl
Size 12.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
37ac3c4096c645226677029a6a462f398e09d6ceb8c7bb8b659f0cce9c89f921
BLAKE2b-256 checksum
How to use checksums
c13ae52cc2b845f0ac71327db1e575cf916015cd795b4ae3180ca7d5487e9e5e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 6, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

2.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page