EuropassMCP
EuropassMCP
一个 MCP 服务器,让 AI 代理能够组装 Europass 简历,并将其导出为严格符合模式的 Europass XML,或导出为包含该 XML 的 PDF。
Europass 简历是欧盟标准化的简历格式。其机器可读形式是符合 Europass 简历 XML 模式定义 3.0.3 版的 XML 文档。该服务器为代理提供少量小型的、按部分划分的工具,以便在对话过程中填写简历,并拒绝导出任何模式会拒绝的内容,因此“几乎有效”不是已完成文档可以达到的状态。
非官方
本项目与欧盟、欧盟委员会或 Cedefop 无关联、未经其认可,也非其制作。它不附带欧盟徽标或 Europass 标志;其生成的 PDF 是 Europass 版式的独立仿制品,而非官方文件,并在页面上注明。Europass 是欧盟的商标。
本仓库重新分发的唯一欧盟资产是 XML 模式本身,依据其作者发布的 EUPL-1.1 授权。参见许可。
要求
Python 3.11 或更高版本。
能够通过 stdio 启动服务器的 MCP 客户端。
仅用于 PDF 导出,需要四个 pip 无法安装的系统库。参见带 PDF 导出。
Related MCP server: layerone-mcp
安装
一行命令
curl -fsSL https://raw.githubusercontent.com/Tsadoq/EuropassMCP/main/install.sh | bash如果缺少 uv,该命令会安装它,将服务器安装为 uv 工具,并注册到你的客户端:当 Claude 命令行界面在 PATH 中时,通过 claude mcp add;否则,通过将单个 mcpServers 条目合并到 claude_desktop_config.json 中。合并会重写该条目,并保留文件中的其他服务器,因此运行两次命令仍只留下一个 europassmcp。
标志通过管道以 bash -s -- 的方式传递给脚本:
curl -fsSL https://raw.githubusercontent.com/Tsadoq/EuropassMCP/main/install.sh | bash -s -- --with-pdf--with-pdf 添加 PDF 额外依赖,然后引导你查看带 PDF 导出以获取它无法为你安装的系统库。--config-only 直接跳到注册客户端,适用于你已经安装的情况。
将 URL 通过管道输入 shell 会运行该 URL 提供的任何内容。如果你不想这样,脚本也是一个普通文件:
curl -fsSL https://raw.githubusercontent.com/Tsadoq/EuropassMCP/main/install.sh -o install.sh
less install.sh
bash install.sh手动安装
服务器通过 stdio 使用 MCP 协议,因此正常使用时由客户端启动它,而不是你手动运行。脚本为你做的是安装服务器并将启动命令写入客户端配置:
uv tool install europassmcp # or: uv tool install 'europassmcp[pdf]'然后是客户端配置下的配置块。
不过,预先安装是可选的。下面的命令通过 uvx 启动服务器,uvx 会按需获取它;其中任何一个都可以放入该配置块,在终端中运行一个命令就会启动一个等待 stdin 的服务器。
仅 XML
uvx europassmcp除了 Python 之外不需要其他东西。除 export_pdf 外,所有工具都能工作,export_pdf 会拒绝并提示修复它的命令。
带 PDF 导出
PDF 导出通过 WeasyPrint 实现,它在导入时通过 C ABI 加载 Pango、PangoFT2、HarfBuzz 和 fontconfig。pip 无法安装其中任何一个,因此 europassmcp[pdf] 在没有这些库的机器上可以干净安装,但随后会拒绝所有 PDF。
在安装额外依赖之前,请使用系统包管理器安装它们。如果不安装,export_pdf 会给出与从未安装额外依赖的安装相同的拒绝:底层的 OSError: cannot load library 'libpango-1.0-0' 会被捕获,不会到达你。因此,在已经安装 europassmcp[pdf] 的情况下,该拒绝意味着缺少的是这些库。
在 Debian 和 Ubuntu 上:
sudo apt install libpango-1.0-0 libpangoft2-1.0-0 libharfbuzz0b libfontconfig1在 macOS 上,使用 Homebrew:
brew install pangoHomebrew 会将 glib、harfbuzz 和 fontconfig 作为 pango 的依赖项引入。WeasyPrint 的安装指南是其他平台以及排查加载失败问题的权威参考。
可选地添加 libharfbuzz-subset0(Debian 和 Ubuntu;Homebrew 的 harfbuzz 已包含它)。没有它,PDF 仍能渲染,但每个字体都会完整嵌入而不是子集化,这会使文件大得多。
然后:
uvx --from 'europassmcp[pdf]' europassmcp首次发布之前
europassmcp 尚未发布到 PyPI,此仓库也没有公共远程地址,因此 raw.githubusercontent.com URL 和上述任何命令在两者都存在之前都无法解析。对于克隆的仓库,uvx --from . europassmcp 和 uvx --from '.[pdf]' europassmcp 是相同的两条路径,bash install.sh --config-only 仍然会注册客户端。
客户端配置
大多数 MCP 客户端使用相同的 mcpServers 配置块;在 Claude Desktop 中,它位于 claude_desktop_config.json。
{
"mcpServers": {
"europassmcp": {
"command": "uvx",
"args": ["europassmcp"]
}
}
}启用 PDF 导出时,额外依赖会移到参数中:
{
"mcpServers": {
"europassmcp": {
"command": "uvx",
"args": ["--from", "europassmcp[pdf]", "europassmcp"]
}
}
}编译模式大约需要三秒钟,仅在服务器启动时进行一次。如果客户端对服务器的首次响应超时较快,可能需要更长的启动时间。
代理获得的内容
草稿在会话期间保存在内存中,以代理选择的名称作为键,并逐部分构建。不会写入磁盘。
工具 | 作用 |
| 以代理选择的名称启动一个新的空草稿。 |
| 记录简历涉及的人。这是有效简历不能省略的唯一部分。 |
| 按打印顺序追加一份工作经历。 |
| 追加一项学历或培训经历。 |
| 追加一种语言及其 CEFR 等级,包括母语。 |
| 追加一项数字或计算机技能。 |
| 根据模式文档中任何语言的国家名称查找 Europass 国家代码。 |
| 以相同方式查找 Europass 语言代码。 |
| 根据职位描述查找 ISCO-88 职业代码。 |
| 报告模式拒绝的所有内容,并为被拒绝的代码提供最接近的有效值。 |
| 将完成的简历作为 Europass XML 返回。拒绝无法通过验证的草稿。 |
| 将简历排版为 PDF 并附带 XML,返回链接。 |
其中两个工具承载了大部分设计。查找工具的存在是因为内置代码列表包含 1350 个成员,包括 564 个职业和 197 个国家代码,这远远超出了工具描述或模型上下文的承载范围;代理通过搜索而不是被提供列表。而 validate_cv 会用拼写最接近的有效值来回答被拒绝的值,因此被拒绝的 ITA 会返回 IT,这是从另一个方向进行的相同搜索。
PDF 以资源链接的形式返回,而不是内联字节,因为否则一个几百千字节的文档会在后续每一轮对话中被重新放入模型上下文。源 XML 作为文件附件随 PDF 一起传输,因此人们收到的文档仍然是机器可以读回的文档。
内置模式
src/europassmcp/schema/ 下的十二个 XSD 文件是内置的,而不是获取的,因为已经没有地方可以获取它们:自大约 2021 年以来,europass.cedefop.europa.eu/xml/ 下的每个 URL 都重定向到营销页面。它们是从互联网档案馆恢复的。docs/schema-provenance.md 记录了每个文件的来源、对它们所做的一项修改以及如何重复恢复过程。
许可
此发行版聚合了两个分别许可的作品,它们被放在不同的目录中,因此任何一个许可证都不必被视为涵盖另一个。
第一方代码,即除
src/europassmcp/schema/之外的所有内容,均依据LICENSE中的 MIT 许可证。内置的 Europass XML 模式定义,位于
src/europassmcp/schema/,版权归欧盟 2002-2010 所有,由 Cedefop 根据欧盟公共许可证 1.1 版(EUPL-1.1)发布。MIT 授权不适用于它。
NOTICE 完整陈述了 EUPL-1.1 授权,并随 wheel 和 sdist 一起分发,这正是使模式可再分发的原因。重新分发这些文件(无论是否修改)意味着必须附带它。
开发
uv sync
uv run pytest
uv run pre-commit installuv run pre-commit run --all-files 运行与 CI 相同的 ruff、ruff-format 和 mypy 检查。src/europassmcp/_generated/ 下的生成绑定是 xsdata 输出,会重新生成,绝不手动编辑;CI 会重新生成它,并在有任何差异时失败。scripts/fetch_schema.py 重新运行模式恢复。
Maintenance
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
AlicenseAqualityAmaintenanceResume tailoring, cover letter generation, CV PDF export, and job search tools for AI agents. 18 tools powered by the Laddro Career API.18107MIT
layerone-mcpofficial
AlicenseAqualityCmaintenanceEnables AI agents to generate documents (PDF/DOCX/Factur-X) and manage electronic signatures (eIDAS/PAdES) via natural language using LayerOne's DocX and Sign APIs.2046MIT- AlicenseNot gradedqualityBmaintenanceEnables AI agents to issue Poland structured e-invoices (faktura ustrukturyzowana) through KSeF 2.0, handling FA(3) XML building, encrypted session flow, and KSeF number retrieval.MIT
- FlicenseNot gradedqualityAmaintenanceEnables AI agents to create and manage e-invoices through natural language, supporting EU compliance formats like ZUGFeRD and XRechnung, as well as US plain PDF invoices.7
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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