Skip to main content
Glama
Tsadoq

EuropassMCP

by Tsadoq

EuropassMCP

Ein MCP-Server, der es einem KI-Agenten ermöglicht, einen Europass-Lebenslauf zu erstellen und ihn als strikt schema-konformes Europass-XML oder als PDF mit eingebettetem XML zu exportieren.

Der Europass-Lebenslauf ist das standardisierte Lebenslaufformat der Europäischen Union. Seine maschinenlesbare Form ist ein XML-Dokument, das der Europass-CV-XML-Schemadefinition Version 3.0.3 entspricht. Dieser Server stellt einem Agenten eine Handvoll kleiner, abschnittsbezogener Werkzeuge zur Verfügung, um einen solchen Lebenslauf im Laufe eines Gesprächs auszufüllen, und weigert sich, etwas zu exportieren, das das Schema ablehnen würde. So ist „fast gültig“ kein Zustand, den ein fertiges Dokument erreichen kann.

Inoffiziell

Dieses Projekt ist nicht verbunden mit, unterstützt von oder hergestellt von der Europäischen Union, der Europäischen Kommission oder Cedefop. Es enthält kein EU-Emblem und kein Europass-Wortzeichen; das von ihm erzeugte PDF ist eine unabhängige Nachbildung des Europass-Layouts, nicht das offizielle Dokument, und weist auf der Seite darauf hin. Europass ist eine Marke der Europäischen Union.

Das einzige Vermögensgut der Europäischen Union, das dieses Repository weiterverbreitet, ist das XML-Schema selbst, unter der EUPL-1.1-Lizenz, mit der seine Autoren es veröffentlicht haben. Siehe Lizenzierung.

Anforderungen

  • Python 3.11 oder neuer.

  • Ein MCP-Client, der einen Server über stdio starten kann.

  • Nur für den PDF-Export: vier Systembibliotheken, die pip nicht installieren kann. Siehe Mit PDF-Export.

Related MCP server: layerone-mcp

Installation

Eine Zeile

curl -fsSL https://raw.githubusercontent.com/Tsadoq/EuropassMCP/main/install.sh | bash

Das installiert uv, falls es fehlt, installiert den Server als uv-Werkzeug und registriert ihn bei Ihrem Client: über claude mcp add, wenn die Claude-Befehlszeilenschnittstelle in Ihrem PATH ist, andernfalls durch Zusammenführen eines einzelnen mcpServers-Eintrags in claude_desktop_config.json. Das Zusammenführen überschreibt diesen einen Eintrag und lässt jeden anderen Server in der Datei unberührt, sodass das zweimalige Ausführen des Befehls weiterhin genau ein europassmcp hinterlässt.

Flags erreichen das Skript über die Pipe mittels bash -s --:

curl -fsSL https://raw.githubusercontent.com/Tsadoq/EuropassMCP/main/install.sh | bash -s -- --with-pdf

--with-pdf fügt das PDF-Extra hinzu und verweist Sie dann auf Mit PDF-Export für die Systembibliotheken, die es nicht für Sie installieren kann. --config-only überspringt direkt die Registrierung des Clients, für eine Installation, die Sie bereits haben.

Das Einleiten einer URL in eine Shell führt aus, was diese URL liefert. Wenn das kein Handel ist, den Sie eingehen möchten, ist das Skript eine Datei wie jede andere:

curl -fsSL https://raw.githubusercontent.com/Tsadoq/EuropassMCP/main/install.sh -o install.sh
less install.sh
bash install.sh

Von Hand

Der Server spricht MCP über stdio, sodass im normalen Gebrauch ein Client ihn startet, anstatt dass Sie ihn von Hand ausführen. Was das Skript in Ihrem Namen tut, ist, den Server zu installieren und diesen Startbefehl in die Konfiguration des Clients zu schreiben:

uv tool install europassmcp          # or: uv tool install 'europassmcp[pdf]'

gefolgt von der Strophe unter Client-Konfiguration.

Die Installation im Voraus ist jedoch optional. Die folgenden Befehle starten den Server über uvx, das ihn bei Bedarf abruft; einer von beiden ist das, was in diese Strophe gehört, und das Ausführen eines in einem Terminal startet einen Server, der auf stdin wartet.

Nur XML

uvx europassmcp

Außer Python ist nichts erforderlich. Jedes Werkzeug funktioniert außer export_pdf, das sich mit einer Meldung weigert, die den Befehl nennt, der es beheben würde.

Mit PDF-Export

Der PDF-Export läuft über WeasyPrint, das Pango, PangoFT2, HarfBuzz und fontconfig über die C-ABI zum Importzeitpunkt lädt. pip kann keines davon installieren, daher installiert sich europassmcp[pdf] sauber auf einem Rechner, der keines davon hat, und lehnt dann jedes PDF ab.

Installieren Sie sie mit dem Systempaketmanager, bevor Sie das Extra installieren. Wenn Sie das nicht tun, antwortet export_pdf mit derselben Ablehnung, die es einer Installation gibt, die das Extra nie hatte: Der zugrunde liegende OSError: cannot load library 'libpango-1.0-0' wird abgefangen und erreicht Sie nie. Bei einer Installation, die bereits europassmcp[pdf] hat, bedeutet diese Ablehnung, dass diese Bibliotheken der fehlende Teil sind.

Auf Debian und Ubuntu:

sudo apt install libpango-1.0-0 libpangoft2-1.0-0 libharfbuzz0b libfontconfig1

Auf macOS mit Homebrew:

brew install pango

Homebrew zieht glib, harfbuzz und fontconfig als Abhängigkeiten von pango ein. WeasyPrints Installationsanleitung ist die Autorität für andere Plattformen und für die Fehlerbehebung bei einem Laden, das trotzdem fehlschlägt.

Optional können Sie libharfbuzz-subset0 hinzufügen (Debian und Ubuntu; Homebrews harfbuzz enthält es bereits). Ohne es werden PDFs weiterhin gerendert, aber jede Schriftart wird vollständig eingebettet statt unterteilt, was die Datei erheblich vergrößert.

Dann:

uvx --from 'europassmcp[pdf]' europassmcp

Vor der ersten Veröffentlichung

europassmcp ist noch nicht auf PyPI, und dieses Repository hat kein öffentliches Remote, daher werden weder die raw.githubusercontent.com-URL noch einer der obigen Befehle aufgelöst, bis beides existiert. Gegenüber einem Klon sind uvx --from . europassmcp und uvx --from '.[pdf]' europassmcp dieselben zwei Pfade, und bash install.sh --config-only registriert weiterhin den Client.

Client-Konfiguration

Die meisten MCP-Clients verwenden dieselbe mcpServers-Strophe; in Claude Desktop befindet sie sich in claude_desktop_config.json.

{
  "mcpServers": {
    "europassmcp": {
      "command": "uvx",
      "args": ["europassmcp"]
    }
  }
}

Mit PDF-Export wandert das Extra in die Argumente:

{
  "mcpServers": {
    "europassmcp": {
      "command": "uvx",
      "args": ["--from", "europassmcp[pdf]", "europassmcp"]
    }
  }
}

Das Kompilieren des Schemas dauert etwa drei Sekunden, einmal, während der Server startet. Ein Client, der die erste Antwort eines Servers schnell mit einem Timeout belegt, benötigt möglicherweise eine längere Startzeit.

Was der Agent erhält

Entwürfe leben für die Dauer der Sitzung im Speicher, unter einem Namen, den der Agent wählt, und werden Abschnitt für Abschnitt aufgebaut. Es wird nichts auf die Festplatte geschrieben.

Tool

Was es tut

create_cv

Startet einen neuen leeren Entwurf unter einem Namen, den der Agent wählt.

set_personal_info

Erfasst, um wen es sich bei dem Lebenslauf handelt. Der einzige Abschnitt, den ein gültiger Lebenslauf nicht auslassen kann.

add_work_experience

Fügt einen Job in der Reihenfolge hinzu, in der er gedruckt werden soll.

add_education

Fügt eine Qualifikation oder einen Ausbildungszeitraum hinzu.

add_language_skill

Fügt eine Sprache mit ihren CEFR-Niveaus hinzu, einschließlich Muttersprachen.

add_digital_skill

Fügt eine digitale oder Computerfertigkeit hinzu.

lookup_country

Findet Europass-Ländercodes aus einem Ländernamen in einer der Sprachen, die das Schema dokumentiert.

lookup_language

Findet Europass-Sprachcodes auf dieselbe Weise.

search_occupation

Findet ISCO-88-Berufscodes aus einer Berufsbeschreibung.

validate_cv

Meldet alles, was das Schema beanstandet, mit den nächstgelegenen gültigen Werten für einen abgelehnten Code.

export_xml

Gibt den fertigen Lebenslauf als Europass-XML zurück. Lehnt einen Entwurf ab, der nicht validieren würde.

export_pdf

Legt den Lebenslauf als PDF mit angehängtem XML aus und gibt einen Link darauf zurück.

Zwei davon tragen den Großteil des Designs. Die Nachschlagewerkzeuge existieren, weil die mitgelieferten Codelisten 1350 Einträge enthalten, darunter 564 Berufe und 197 Ländercodes, was weit mehr ist, als in eine Werkzeugbeschreibung oder in den Kontext eines Modells gehört; der Agent sucht, anstatt eine Liste zu erhalten. Und validate_cv antwortet auf einen abgelehnten Wert mit den gültigen Werten, die ihm am ähnlichsten geschrieben sind, sodass ein abgelehntes ITA mit IT zurückkommt, was dieselbe Suche aus der anderen Richtung ist.

Das PDF kommt als Ressourcenlink zurück und nicht als eingebettete Bytes, da ein Dokument von mehreren hundert Kilobyte sonst bei jeder späteren Runde in den Kontext des Modells wiedergegeben würde. Das Quell-XML reist im PDF als Dateianhang, sodass das Dokument, das eine Person erhält, immer noch das Dokument ist, das eine Maschine zurücklesen kann.

Das mitgelieferte Schema

Die zwölf XSD-Dateien unter src/europassmcp/schema/ sind mitgeliefert und nicht abgerufen, weil es keine Stelle mehr gibt, von der man sie abrufen könnte: Jede URL unter europass.cedefop.europa.eu/xml/ hat seit etwa 2021 mit einer Weiterleitung auf eine Marketingseite geantwortet. Sie wurden aus dem Internet Archive wiederhergestellt. docs/schema-provenance.md dokumentiert, woher jede Datei stammt, die eine Änderung, die an ihnen vorgenommen wurde, und wie die Wiederherstellung wiederholt werden kann.

Lizenzierung

Diese Distribution bündelt zwei getrennt lizenzierte Werke, die in getrennten Verzeichnissen aufbewahrt werden, sodass keine Lizenz als die andere abdeckend gelesen werden muss.

  • Code von Erstanbietern, also alles außer src/europassmcp/schema/, steht unter der MIT-Lizenz in LICENSE.

  • Die mitgelieferte Europass-XML-Schemadefinition in src/europassmcp/schema/ ist urheberrechtlich geschützt durch die Europäische Union 2002-2010, veröffentlicht von Cedefop unter der Europäischen Union Public Licence Version 1.1 (EUPL-1.1). Die MIT-Lizenz erstreckt sich nicht darauf.

NOTICE gibt die EUPL-1.1-Lizenz vollständig wieder und reist im Wheel und im Sdist mit, was das Schema weiterverbreitbar hält. Die Weiterverbreitung dieser Dateien, ob modifiziert oder nicht, bedeutet, sie mitzuführen.

Entwicklung

uv sync
uv run pytest
uv run pre-commit install

uv run pre-commit run --all-files führt dieselben ruff-, ruff-format- und mypy-Prüfungen aus wie CI. Die generierte Bindung unter src/europassmcp/_generated/ ist xsdata-Ausgabe und wird neu generiert, nie von Hand bearbeitet; CI generiert sie neu und schlägt bei jeder Abweichung fehl. scripts/fetch_schema.py führt die Schema-Wiederherstellung erneut aus.

Install Server
A
license - permissive license
A
quality
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • Italy FatturaPA invoices for AI agents: build FPR12 XML, transmit to the SdI, query status.

  • Turn a description into a shareable, editable PDF — invoices, certificates, reports, resumes.

  • AI document editing for agents: draft, edit, export .docx/PDF. 37 MCP tools; agent self-signup.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Tsadoq/EuropassMCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server