Skip to main content
Glama
Tsadoq

EuropassMCP

by Tsadoq

EuropassMCP

AI 에이전트가 Europass CV를 작성하고, 스키마를 엄격히 준수하는 Europass XML 또는 그 XML을 내부에 포함한 PDF로 내보낼 수 있게 해주는 MCP 서버입니다.

Europass CV는 유럽연합의 표준화된 이력서 형식입니다. 기계가 읽을 수 있는 형태는 Europass CV XML Schema Definition 버전 3.0.3을 따르는 XML 문서입니다. 이 서버는 에이전트에게 대화 중에 하나씩 채워 넣을 수 있는 작고 섹션별로 구분된 여러 도구를 제공하며, 스키마가 거부하는 것은 무엇이든 내보내기를 거부합니다. 따라서 '거의 유효한' 상태로 완성된 문서가 남는 일은 없습니다.

비공식

이 프로젝트는 유럽연합, 유럽위원회 또는 Cedefop과 제휴, 승인, 또는 제작 관계가 아닙니다. EU 엠블럼이나 Europass 워드마크를 포함하지 않으며, 생성되는 PDF는 공식 문서가 아닌 Europass 레이아웃의 독립적인 유사물이며, 페이지에 그렇게 명시되어 있습니다. Europass는 유럽연합의 상표입니다.

이 저장소가 재배포하는 유일한 유럽연합 자산은 XML 스키마 자체이며, 저자가 게시한 EUPL-1.1 허가에 따릅니다. 라이선스를 참조하세요.

요구 사항

  • Python 3.11 이상.

  • stdio를 통해 서버를 실행할 수 있는 MCP 클라이언트.

  • PDF 내보내기 전용으로, pip이 설치할 수 없는 네 가지 시스템 라이브러리. PDF 내보내기를 참조하세요.

Related MCP server: Scribo MCP Server

설치

한 줄 설치

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

이 명령은 uv가 없으면 설치하고, 서버를 uv 도구로 설치한 다음 클라이언트에 등록합니다. Claude 명령줄 인터페이스가 PATH에 있으면 claude mcp add를 통해, 그렇지 않으면 claude_desktop_config.json에 단일 mcpServers 항목을 병합하여 등록합니다. 병합은 해당 항목만 다시 쓰고 파일의 다른 서버는 그대로 두므로, 명령을 두 번 실행해도 정확히 하나의 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을 셸에 파이프하면 해당 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를 통해 서버를 실행하며, 필요할 때 가져옵니다. 둘 중 하나가 그 스탠자에 들어가며, 터미널에서 실행하면 stdin을 기다리는 서버가 시작됩니다.

XML 전용

uvx europassmcp

Python 외에는 아무것도 필요하지 않습니다. export_pdf를 제외한 모든 도구가 작동하며, export_pdf는 문제를 해결할 명령을 알려주는 메시지와 함께 거부합니다.

PDF 내보내기 포함

PDF 내보내기는 WeasyPrint를 통해 이루어지며, 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 pango

Homebrew는 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"]
    }
  }
}

스키마 컴파일은 서버 시작 중에 한 번 약 3초가 걸립니다. 서버의 첫 응답을 빠르게 타임아웃하는 클라이언트는 더 긴 시작 허용 시간이 필요할 수 있습니다.

에이전트가 얻는 것

초안은 세션 동안 메모리에 유지되며, 에이전트가 선택한 이름으로 키가 지정되고 섹션별로 작성됩니다. 디스크에 기록되는 것은 없습니다.

Tool

What it does

create_cv

에이전트가 선택한 이름으로 새 빈 초안을 시작합니다.

set_personal_info

CV의 대상이 누구인지 기록합니다. 유효한 CV가 생략할 수 없는 유일한 섹션입니다.

add_work_experience

인쇄되어야 할 순서대로 하나의 직업을 추가합니다.

add_education

하나의 자격 또는 교육 기간을 추가합니다.

add_language_skill

CEFR 수준과 함께 하나의 언어를 추가하며, 모국어도 포함됩니다.

add_digital_skill

하나의 디지털 또는 컴퓨터 기술을 추가합니다.

lookup_country

스키마가 문서화하는 모든 언어의 국가 이름에서 Europass 국가 코드를 찾습니다.

lookup_language

같은 방식으로 Europass 언어 코드를 찾습니다.

search_occupation

직업 설명에서 ISCO-88 직업 코드를 찾습니다.

validate_cv

스키마가 거부하는 모든 것을 보고하며, 거부된 코드에 대해 가장 가까운 유효 값을 제공합니다.

export_xml

완성된 CV를 Europass XML로 반환합니다. 유효하지 않은 초안은 거부합니다.

export_pdf

CV를 XML이 첨부된 PDF로 배치하고 링크를 반환합니다.

이 중 두 가지가 설계의 대부분을 담당합니다. 조회 도구가 존재하는 이유는 번들된 코드 목록에 1350개의 항목(564개의 직업과 197개의 국가 코드 포함)이 있어 도구 설명이나 모델의 컨텍스트에 넣기에는 너무 많기 때문입니다. 에이전트는 목록을 받는 대신 검색합니다. 그리고 validate_cv는 거부된 값에 대해 가장 유사하게 철자된 유효 값을 응답하므로, 거부된 ITA는 IT로 돌아옵니다. 이는 반대 방향에서의 동일한 검색입니다.

PDF는 인라인 바이트가 아닌 리소스 링크로 반환됩니다. 그렇지 않으면 수백 킬로바이트의 문서가 이후의 모든 턴에서 모델의 컨텍스트로 다시 재생되기 때문입니다. 소스 XML은 파일 첨부로 PDF 내부에 포함되므로, 사람이 받는 문서는 여전히 기계가 다시 읽을 수 있는 문서입니다.

번들된 스키마

src/europassmcp/schema/ 아래의 12개 XSD 파일은 가져오는 대신 번들로 제공됩니다. 가져올 곳이 더 이상 없기 때문입니다. europass.cedefop.europa.eu/xml/ 아래의 모든 URL은 대략 2021년부터 마케팅 페이지로 리디렉션되었습니다. 이 파일들은 인터넷 아카이브에서 복구되었습니다. 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 install

uv run pre-commit run --all-files는 CI가 수행하는 것과 동일한 ruff, ruff-format 및 mypy 검사를 실행합니다. src/europassmcp/_generated/ 아래의 생성된 바인딩은 xsdata 출력이며 수동으로 편집하지 않고 다시 생성됩니다. CI는 이를 다시 생성하고 diff가 있으면 실패합니다. scripts/fetch_schema.py는 스키마 복구를 다시 실행합니다.

Available Tools

12 tools
add_digital_skillA

Add one digital or computer skill, after those already added.

Add every skill as its own call. Europass prints these as free text, so a single call naming several skills is recorded as one skill with a long name rather than as the list it reads like.

ParametersJSON Schema
NameRequiredDescriptionDefault
skillYes
draft_idYesName of the draft to work on, as given to `create_cv`.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses two meaningful behaviors: the append semantics ('after those already added') and the Europass free-text pitfall. It could mention return values or error cases, but the key side effects are covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences front-load the core action and then justify the one-per-call rule with a concrete reason. There is no filler, no repetition of the tool name, and every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter append tool, the description plus schema covers required inputs, append behavior, and the main usage trap. An output schema exists, so return format need not be described. Minor omissions like duplicate handling are not essential for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 50%, and the description compensates by clarifying that the skill parameter must be a single skill, not a list. It also reinforces the draft context via 'after those already added'. The draft_id and the optional description field are already adequately documented in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Add'), a clear resource ('digital or computer skill'), and an explicit append position ('after those already added'). It also differentiates from sibling tools like add_language_skill and add_work_experience by narrowing the scope to digital skills.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a strong operational rule: make one call per skill, because Europass prints the field as free text and a combined call would be treated as a single long skill name. It does not explicitly name alternatives or state when not to use the tool, but the context is clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_educationA

Add one qualification or training period, after those already added.

ParametersJSON Schema
NameRequiredDescriptionDefault
studiesYes
draft_idYesName of the draft to work on, as given to `create_cv`.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Since no annotations are provided, the description carries the behavioral burden. It explicitly discloses that the operation appends one item after existing entries, rather than replacing or clearing them. It does not mention error behavior or preconditions like draft existence, but the key state-changing behavior is communicated clearly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler. It communicates the core action and the append behavior in a compact and immediately usable form.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a straightforward single-item append operation with a documented schema and an output schema, the description plus input schema is sufficient for correct invocation. It could mention that the target draft must already exist, but the required draft_id parameter and the verb 'add' imply that sufficiently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50%, and the description adds no per-parameter detail beyond reinforcing that 'studies' refers to a single qualification/training period. The schema itself documents fields such as title, start_date, and organisation, so the description contributes only marginal semantic value over the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Add') and the resource ('one qualification or training period'), which unambiguously identifies the education domain and distinguishes it from sibling add_* tools like add_work_experience or add_language_skill. The phrase 'after those already added' adds useful ordering context without obscuring the core purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description tells the agent this tool is for appending a single education entry to an existing draft, with the ordering clue 'after those already added.' It does not explicitly name alternatives or when-not-to-use conditions, but the resource type is specific enough to guide tool selection among the siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_language_skillA

Add one language the person speaks, with how well they speak it.

Add every language separately, mother tongues included. Look the language code up with lookup_language if you are not certain of it.

ParametersJSON Schema
NameRequiredDescriptionDefault
skillYes
draft_idYesName of the draft to work on, as given to `create_cv`.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose side effects and constraints. It only says 'Add'—implying mutation—but does not mention whether it modifies the draft, if it is idempotent, if overwriting occurs, or what happens on conflict. There is no note about auth, rate limits, or failure modes, leaving a significant transparency gap for a write operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three compact sentences with no filler. It is front-loaded with the core purpose, then adds the 'separately' rule and a lookup tip. Slight room to improve by mentioning the draft_id parameter, but overall it is efficiently structured and to the point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and an output schema that presumably describes the return, the description covers the main usage rules (single language per call, mother tongue handling, code lookup). However, it omits any behavioral expectations such as result handling, error cases, or safety implications, which are important for a mutating tool. The schema fills parameter semantics well, but the description could be more transparent about side effects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already gives thorough descriptions for both `draft_id` and the nested `skill` object (including the CEFR level explanation and `mother_tongue` semantics). The description adds the practical hint to look up language codes and emphasizes 'mother tongues included', which is useful but overlaps with the schema's note. It does not decode the nested structure further, so it adds only marginal value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Add one language') and the resource (the person's language skill). It also explicitly notes the one-at-a-time behavior ('Add every language separately') and points to a sibling tool (`lookup_language`) for code resolution, distinguishing it from other add-type siblings like `add_work_experience` or `add_digital_skill`.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives direct usage rules: add each language in its own call, include mother tongues, and verify language codes via `lookup_language`. This effectively tells an agent when to invoke this tool and how to prepare parameters, though it doesn't explicitly mention alternatives; the context is sufficient to select this over sibling add-tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_work_experienceA

Add one job to the CV, after the jobs already added.

Add jobs in the order they should be printed, which for a Europass CV is most recent first.

ParametersJSON Schema
NameRequiredDescriptionDefault
jobYes
draft_idYesName of the draft to work on, as given to `create_cv`.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden. It explicitly discloses that the tool appends after existing jobs and preserves the submission order in the printed CV, which is non-obvious and valuable. It does not cover error cases or side effects, but for an append operation this is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with the main verb first and an explanatory second sentence. No fluff or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is a simple append operation; the description plus the rich input schema and output schema cover what an agent needs. The ordering behavior, which is the only non-obvious detail, is explained. No critical information is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds no parameter-specific information; the ordering note does not explain any field. However, the input schema already documents draft_id and the full WorkExperience object with per-field descriptions, so the agent is not left guessing. The description's omission is acceptable, yielding a baseline score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Add'), a concrete resource ('one job to the CV'), and the ordering clause clarifies the operation's place in the document. It is clearly distinct from sibling tools like add_education or add_language_skill.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description instructs the agent to submit jobs in print order (most recent first for Europass), which is a practical usage rule for multiple calls. It does not explicitly name alternative tools or when-not conditions, so the usage is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_cvA

Start a new, empty CV under a name of your choosing.

Pick a short name you will use for the rest of the conversation, such as the surname of the person the CV is for. A name already in use is refused rather than replaced.

ParametersJSON Schema
NameRequiredDescriptionDefault
draft_idYesName of the draft to work on, as given to `create_cv`.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry behavioral disclosure. It does so by stating that creation is for a new empty CV, that the chosen name persists for the rest of the conversation, and that duplicate names are refused rather than replaced. This is meaningful behavioral information beyond simple creation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: the core purpose appears in the first sentence, followed only by essential naming and collision behavior. Every sentence earns its place without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter creation tool with an output schema, the description covers everything an agent needs: what the tool does, how to choose the parameter value, how the name is used later, and what happens on a duplicate. No critical guidance is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already describes draft_id as 'Name of the draft to work on, as given to `create_cv`.' The description adds practical meaning: the caller should pick a short, memorable name and use it throughout the conversation. It also clarifies uniqueness expectations by noting that used names are refused.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific action and resource: 'Start a new, empty CV under a name of your choosing.' This clearly distinguishes create_cv from the sibling tools, which populate, validate, or export a CV. The naming guidance reinforces what the tool is for.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes it clear this is the initialization step for a CV lifecycle and that choose a short conversational name identifies the draft going forward. It also tells the agent that reusing an existing name is refused, which prevents accidental overwrite behavior. It does not explicitly compare against alternatives, but the 'start a new, empty' wording provides sufficient context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

export_pdfA

Lay the finished CV out as a PDF, with its Europass XML inside it.

Refuses a draft that would not validate, exactly as export_xml does, and refuses where this server cannot make PDFs at all; the message says what to do instead. The XML travels inside the PDF as an attachment, so the document a reader receives is still the document a machine can read back.

What comes back is a link rather than the file, because a CV is hundreds of kilobytes and would crowd out the rest of this conversation. Give the link to the user, or read the resource it names if you need the bytes yourself.

Refuses a draft whose name cannot be read back out of that link, which is why a draft meant for a PDF wants an ordinary name.

ParametersJSON Schema
NameRequiredDescriptionDefault
draft_idYesName of the draft to work on, as given to `create_cv`.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It transparently states refusal conditions, the fact that the XML is embedded as an attachment, and why a link is returned instead of the file. It also discloses the naming constraint regarding reading the name back from the link. These are critical behaviors with no contradiction from annotations (none present).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than typical but every sentence adds crucial information: purpose, validation refusals, XML embedding, link response rationale, and naming constraints. It is front-loaded with purpose, and the structure flows logically. Slightly lengthy, but no redundant content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description fully explains what will be returned (a link) and how to use it. It covers all necessary operational aspects: validation, attachment, link handling, and naming. An agent has everything it needs to call this tool correctly and interpret the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter (draft_id) is fully described in the schema, but the description adds valuable extra context: the constraint that a draft meant for a PDF should have an ordinary name readable from the link. This goes beyond the schema's 'Name of the draft' and gives the agent deeper insight into parameter validity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a clear and specific action: 'Lay the finished CV out as a PDF, with its Europass XML inside it.' It identifies the resource (finished CV) and the output (PDF with embedded XML). It also distinguishes itself from export_xml by mentioning validation and the XML attachment, making it clear what this tool uniquely does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains refusal conditions (invalid draft, server cannot make PDFs) and instructs the agent on how to handle the result (give the link to the user or read the resource). It contrasts with export_xml by referencing validation behavior, but does not explicitly list alternative tools for different scenarios. Still, the guidance is sufficient for an agent to know when to use this tool and what to do with the response.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

export_xmlA

Write the finished CV as Europass XML.

A draft that would not validate is refused rather than exported, so what comes back is always a schema-valid Europass document. Call validate_cv first to find out what is still missing.

ParametersJSON Schema
NameRequiredDescriptionDefault
draft_idYesName of the draft to work on, as given to `create_cv`.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and discloses meaningful behavior: invalid drafts are refused rather than exported, and the output is always a schema-valid Europass document. It does not mention potential side effects or persistence, but the return behavior is described.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short, purposeful sentences: the main action comes first, followed by the critical validation behavior and a helpful pointer. No filler, every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter export tool with an output schema, the description explains the key validation gate and the prerequisite to validate first, making it sufficiently complete for an agent. Slightly more detail on how the XML is delivered or how it differs from export_pdf would add completeness, but output schema covers return shape.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter, draft_id, is fully described in the schema with 100% coverage. The tool description adds no extra parameter meaning beyond the workflow context of validating first, so the baseline for full schema coverage applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description uses the specific verb 'Write' and resource 'finished CV as Europass XML', clearly distinguished from the sibling export_pdf by naming the target format. The validation guarantee further reinforces what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly instructs to call validate_cv first to find out what is missing, establishing a clear precondition for use. It implies the tool is for finished, validated drafts, but does not explicitly contrast with export_pdf or state when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lookup_countryA

Find the country codes Europass recognises for a country you can name.

Answers a country in any of the languages the schema documents, so both Italy and Italien find IT. Each match is a [code, label] pair, the likeliest first, and a query close to nothing returns nothing.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses multi-language support, return format ([code, label] pairs), ordering (likeliest first), and behavior for near-empty queries. This adds meaningful behavioral context beyond the tool name.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero fluff. The primary purpose is front-loaded in the first sentence, and the second sentence adds necessary detail on language support and output shape. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter lookup with an output schema, the description covers language matching, return structure, ordering, and the empty-query edge case. Nothing essential is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, and the description fully compensates by explaining the 'query' parameter as a country name in any language, including matching behavior and output format. This makes the parameter's semantics clear without needing to open the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: 'Find the country codes Europass recognises for a country you can name.' Clearly distinguishes from sibling CV-building tools by focusing on country code lookup.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The purpose is clear enough that an agent knows when to use it for country code lookups, but the description does not explicitly name alternatives or exclusions. It doesn't compare to lookup_language or other tools, so while context is clear, it lacks explicit routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lookup_languageA

Find the language codes Europass recognises for a language you can name.

Each match is a [code, label] pair, the likeliest first. The search covers every language Europass knows; a few of them are not accepted as a mother tongue, which validation will say.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of explaining behavior. It discloses the output shape ('[code, label] pair'), ordering ('likeliest first'), coverage ('every language Europass knows'), and a caveat about languages not accepted as a mother tongue. This is substantive and goes well beyond a bare lookup description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured. The first sentence states the core purpose, and the second adds output format, ordering, coverage, and a relevant caveat. Every sentence earns its place without redundancy or padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter lookup tool with an output schema available, the description is complete enough. It covers what the query means, what the response looks like, how results are ordered, and an important validation caveat. No critical operational detail is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single required parameter 'query' has 0% schema description coverage. The description clarifies that the query is a language name, which provides basic meaning, but it does not add detail on accepted formats, examples, or ambiguity handling. It partially compensates for the empty schema but leaves some semantics to inference.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: find Europass-recognised language codes from a language name. It specifies the verb ('find'), the resource ('language codes Europass recognises'), and the input ('a language you can name'), distinguishing it from sibling lookup_country and search_occupation tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage: call this when you have a language name and need its code, and it notes coverage ('every language Europass knows'). However, it does not explicitly state when not to use it or name alternatives such as add_language_skill or validate_cv, leaving the routing somewhat implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_occupationA

Find the occupation codes for a job you can describe.

These are job titles as the ISCO-88 classification words them, so search for the profession rather than the person's own job title. Each match is a [code, label] pair, the likeliest first.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and uses it well. It explains that matches are returned as [code, label] pairs and that results are ordered by likelihood. This gives the agent useful behavioral expectations beyond the raw schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact, front-loaded with the main purpose, and every sentence adds value. The second paragraph provides essential search and output-format details without unnecessary fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter search tool with an output schema, the description covers the key aspects: what to search, how to phrase the search, and what the result format is. No critical information for invoking the tool correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description fully compensates for the single query parameter. It explains what the query should represent (a job description), how to phrase it (profession-level terms), and what the response pairs look like. This is exemplary parameter guidance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: finding occupation codes for a described job. It names the specific resource (ISCO-88 occupation codes) and the action (find/search), making it easy to distinguish from siblings like create_cv or lookup_country.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives concrete guidance on how to query: search for the profession as ISCO-88 words it, not the person's own job title. It doesn't explicitly name alternative tools or exclusion conditions, but for a single-query search tool this is sufficient usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_personal_infoA

Record who the CV is about, replacing anything set before.

This is the one section a finished CV cannot leave out. Send it again with the full details whenever you learn more; it overwrites rather than merges.

ParametersJSON Schema
NameRequiredDescriptionDefault
infoYes
draft_idYesName of the draft to work on, as given to `create_cv`.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It explicitly states that the tool 'replaces anything set before' and 'overwrites rather than merges,' which is critical non-obvious behavior for an agent to know. It also highlights that this section is mandatory in a finished CV, providing additional context beyond a simple mutation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences, with the core action and overwrite behavior front-loaded in the first sentence. Every phrase earns its place: the scope, the mandatory nature, the update cadence, and the overwrite semantics. There is no filler or redundant restatement of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no annotations, two parameters (one being a nested object), and an output schema, the description covers the crucial non-obvious facts: the section is required and the operation overwrites rather than merges. The input schema documents field formats and required names, and the output schema exists, so return-value details are unnecessary. Nothing essential is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description does not enumerate parameters or explain their meaning beyond telling the agent to send 'full details.' Schema coverage is 50% at the top level: draft_id is described, while the info parameter relies on the nested PersonalInfo definition, which does contain descriptions for each field. The description adds general guidance about completeness but does not compensate for the missing top-level info parameter description beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Record who the CV is about, replacing anything set before.' This clearly identifies the tool's function and, combined with the sibling list (add_work_experience, add_education, etc.), unambiguously distinguishes it from tools that modify other CV sections. It also communicates the unique scope of this section.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description says when to use the tool ('Send it again with the full details whenever you learn more') and clarifies that it should always be populated because 'a finished CV cannot leave out' this section. It does not explicitly name alternatives or exclusions, but sibling tool names make those alternatives obvious. The overwrite warning is a useful usage caveat.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_cvA

Check the draft against the Europass schema and report what is wrong.

Safe to call at any point: an unfinished CV is expected to have issues, and each one says where it is and, for a value drawn from a code list, what valid values are spelled most like the one refused.

ParametersJSON Schema
NameRequiredDescriptionDefault
draft_idYesName of the draft to work on, as given to `create_cv`.

Output Schema

ParametersJSON Schema
NameRequiredDescription
validYesWhether the draft is a valid Europass CV as it stands.
issuesNoEverything the schema objects to, in the order it reaches them.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden and exceeds it: it implies read-only checking, reassures about safety, and details the nature of the report (issue location plus close code-list suggestions). This gives the agent a realistic expectation of the tool's behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly written sentences: the first states the core purpose, the second adds safety and output specifics. Every sentence contributes value, and the most important information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter tool with an output schema, the description plus schema fully covers usage timing, validation behavior, and report content. There are no missing pieces an agent would need to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already fully describes draft_id with a pointer to create_cv, providing 100% coverage. The description adds no parameter-specific detail, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Check the draft against the Europass schema') and outcome ('report what is wrong'), clearly distinguishing this validation tool from the sibling create/modify/export/lookup tools. It leaves no ambiguity about what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says the tool is safe to call at any point and that unfinished CVs are expected to have issues, giving the agent clear context on when to invoke it. It does not name alternatives, but no sibling tool offers validation, so no exclusion is necessary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 12 tool updatesv0.1.0
    • First observedadd_digital_skill
    • First observedadd_education
    • First observedadd_language_skill
    • First observedadd_work_experience
    • First observedcreate_cv
    • First observedexport_pdf
    • First observedexport_xml
    • First observedlookup_country
    • First observedlookup_language
    • First observedsearch_occupation
    • First observedset_personal_info
    • First observedvalidate_cv

TDQS

A4.2/5.0

Scored across 12 tools

Disambiguation5/5

Every tool targets a clear and separate concern: document creation, a specific CV section, validation/export, or a single code-list lookup. Even the lookup tools are unambiguously separated by resource type, and the add_* tools are distinguished by the section they populate.

Naming Consistency5/5

All tool names follow a predictable lower_snake_case verb_noun pattern: create_, set_, add_, validate_, export_, lookup_, and search_. The add_* family clearly maps to CV sections, and the lookup_* tools consistently represent code-list lookups.

Tool Count5/5

Twelve tools is well-scoped for a CV-building server: one for document creation, four for content sections, one validator, two exporters, and three code-list lookups. There are no redundant or near-duplicate tools inflating the set.

Completeness3/5

The core Europass sections and the validation/export pipeline are covered, but the entry lifecycle is incomplete: added work, education, language, and digital skill entries cannot be edited or removed, and there is no clean tool for reading back the current CV state. This creates avoidable dead ends when an agent makes a mistake.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables 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
    -
  • A
    license
    Not graded
    quality
    A
    maintenance
    MCP server for CVX, enabling AI assistants to create, validate, and build professional CV PDFs from YAML content, with tools for schema retrieval, project initialization, validation, and rendering.
    390 npm
    2
    Apache 2.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to create, retrieve, update, delete, and export CVs as PDFs through MCP, sharing documents with the web editor.
    MIT