The Skillberg MCP connector exposes the Skillberg knowledge graph — ~158K skills, ~20.6K occupations, mapped across ESCO / ROME / O*NET / COMPETENT / SSF — directly inside Claude.ai. Three tools are available; all are read-only and idempotent.
If you're an Anthropic Pro / Team / Enterprise user, open Claude.ai → Settings → Connectors → Browse, find Skillberg, click Add, and authorize with your existing Skillberg account (or create one in the consent flow). The connector is now available in any Claude.ai conversation.
Until the directory listing is live, you can add Skillberg as a custom connector:
/api-keys.https://mcp.skillberg.app as the URL.Bearer <your-api-key>.search_skillsSemantic search across the Skillberg knowledge graph. Returns skills matching the query, ranked by cosine similarity.
Arguments:
query (string, required) — free-text search query.limit (int, default 20) — max results, 1-100.threshold (float, default 0.1) — minimum similarity score, 0-1.Annotations: readOnlyHint=true, idempotentHint=true, openWorldHint=false.
get_skillFetch a single skill by its skillberg://skill/{uuid} URI. Returns the full entity: canonical name, multilingual labels, description, mastery levels, and cross-references to ESCO / ROME / O*NET.
Arguments:
uri (string, required) — skillberg://skill/{uuid} URI from a search_skills result.Annotations: readOnlyHint=true, idempotentHint=true, openWorldHint=false.
match_cv_to_jobsScore how well a Skillberg user's uploaded CV matches a target occupation. Runs the server-side treat → enrich → matchpipeline: extracts the user's skills from their parsed CV, scores each against the job's required-skills profile, and returns the aggregate match.
Pre-requisite: the user must have already uploaded a CV to Skillberg (via POST /users/{userId}/rawDocuments/treat + /enrich). If no enriched document exists, Bummock returns 404 and the tool surfaces a clear error so Claude can tell the user to upload first.
Arguments:
user_id (string, required) — Skillberg user ObjectId (24 hex chars). Visible at /api-keys once signed in.job_id (string, required) — Skillberg job ObjectId. The target occupation in the knowledge graph.Annotations: readOnlyHint=true, idempotentHint=true, openWorldHint=false.
Prompt to Claude:
Quelles sont les 5 compétences principales d'un Data Engineer senior ? Utilise Skillberg.
What Claude does: calls search_skills with query="Data Engineer senior", limit=5.
Sample tool response (truncated):
[
{ "uri": "skillberg://skill/8f4c…", "name": "Apache Spark", "score": 0.91 },
{ "uri": "skillberg://skill/2d1a…", "name": "Data warehousing", "score": 0.88 },
{ "uri": "skillberg://skill/c9e7…", "name": "Stream processing (Kafka)", "score": 0.86 },
{ "uri": "skillberg://skill/4fb0…", "name": "Cloud data platforms (AWS / GCP)", "score": 0.85 },
{ "uri": "skillberg://skill/716e…", "name": "Data modelling", "score": 0.84 }
]Claude then summarizes the result back to the user in natural language, citing each skill with its name and similarity score.
Prompt to Claude:
Donne-moi la fiche complète de "Apache Spark" en croisant ESCO et O*NET.
What Claude does: calls get_skill with uri="skillberg://skill/8f4c…" from the previous result.
Sample tool response:
{
"uri": "skillberg://skill/8f4c…",
"name": "Apache Spark",
"labels": { "fr": "Apache Spark", "en": "Apache Spark" },
"description": "Distributed analytics engine for large-scale data processing.",
"esco_uri": "http://data.europa.eu/esco/skill/abc123…",
"rome_codes": ["M1805"],
"onet_codes": ["15-2051.00"],
"proficiency_levels": ["awareness","working","expert"]
}Claude can then construct a richer answer that cross-references Apache Spark across the European ESCO taxonomy, the French ROME, and the US O*NET — something that would otherwise require Claude to know all three taxonomies natively.
Prompt:
Voici l'expérience de ce candidat : "5 ans en backend Python, expert PostgreSQL, build pipelines Airflow". Quelles compétences Skillberg correspondent ?
Claude makes one or more search_skills calls and returns a list of canonical Skillberg skills (each with a URI), so the user can plug them straight into a CV / matching / GEPP workflow.
Pre-requisite: upload a CV via console.skillberg.appbeforehand. The user's ObjectId is visible in the URL after sign-in; pick a target job from the knowledge graph (any get_skill-style listing).
Prompt to Claude:
Mon Skillberg user_id est 65f...0a2 et je vise le job_id 64a...e9f. Donne-moi mon score de matching et explique-moi quelles compétences me manquent.
What Claude does: calls match_cv_to_jobs with user_id="65f...0a2", job_id="64a...e9f". The tool runs the full treat → enrich → match pipeline server-side and returns a JobMatch payload with recommended_skills (skills extracted from the CV) and recommended_matching (per-skill score against the target job).
Sample tool response (truncated):
{
"job_id": "64a...e9f",
"user_id": "65f...0a2",
"matches": [
{
"recommended_skills": { "skillbergSkills": ["Apache Spark", …] },
"recommended_matching": { "score": 0.74,
"matched": ["Apache Spark", "Airflow"],
"missing": ["Kafka stream processing", "Delta Lake"] }
}
]
}Claude then narrates the gap and suggests skills to acquire, referencing the same canonical Skillberg URIs the user can drill into via get_skill.
Roadmap: a future match_cv_text_to_job_text tool will let users paste a free-text CV and a job offer in the chat and get the same score back without pre-uploading. It needs new orchestration on Bummock + Gyre and is queued for the next iteration.The connector implements OAuth 2.1 with PKCE, RFC 7591 dynamic client registration, and short-lived signed access tokens (1 hour) plus refresh tokens (30 days). On first connection a dedicated API key is minted on your account, labelled Claude MCP — YYYY-MM-DD. Revoke it any time from /mcp/connections — Claude.ai will detect the revoked credential on the next call and prompt a reconnect.
GET https://mcp.skillberg.app/.well-known/oauth-authorization-server — RFC 8414 AS metadataGET https://mcp.skillberg.app/.well-known/oauth-protected-resource — RFC 9728 RS metadataPOST https://mcp.skillberg.app/register — DCRGET https://mcp.skillberg.app/authorize — PKCE requiredPOST https://mcp.skillberg.app/token — code + refresh grantsPOST https://mcp.skillberg.app/mcp — MCP JSON-RPC over Streamable HTTP (SSE)See /privacy for the full data-handling policy. Notably, Skillberg never receives your prompts — Claude.ai only forwards the structured tool arguments (e.g. the query string passed to search_skills).
Email support@skillberg.app for help with the connector. For API or KG-content questions, attach the request ID returned in any error response.