elempleo

io.github.JucamhcPublished by GitHub account Jucamhcv0.1.0Updated Nov 6, 2026

Busca ofertas, postula y mantiene tu hoja de vida en elempleo.com (Colombia).

Overview

AI-generated overview

MCP server for elempleo.com (Colombia) that lets an assistant search job offers, apply with explicit confirmation, and keep your resume up to date.

What you can do
  • Check session status and open a Chromium browser for manual login
  • Search job offers and read full offer details, including fit scoring against your master profile
  • Read application forms, draft employer notes, apply to one offer at a time and answer post-application questionnaires
  • List your applications and their status
  • Build, validate, view and compare a master profile JSON against your elempleo resume
  • Update resume sections, upload a photo and CV files, and list attached CVs
When to use it
Useful if you are job hunting in Colombia on elempleo.com and want an assistant to filter offers by salary, modality and skills, prepare applications, and keep your resume synchronized from one master profile file.
Requirements
Runs locally via npx (npm package mcp-elempleo) with Node.js 20 or higher and a Chromium-based browser (Chrome, Edge, Brave or Chromium) for login. An elempleo account is needed for session-based actions. Optional environment variables: PERFIL_MAESTRO, RAIZ_ARCHIVOS, ELEMPLEO_DATA_DIR, CHROME_PATH.
Before you install
Login is manual in a browser window (reCAPTCHA and two-step verification), and the session cookies are stored in the data folder (ELEMPLEO_DATA_DIR, default ~/.elempleo). The server can submit real job applications and questionnaires, upload your photo and CV, and modify your elempleo resume; writes back up first but still change live data. The master profile holds personal data such as salary expectations, social security and contact links.

Installation

In SourceWeft

  1. Open elempleo in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

mcp-elempleo

Servidor MCP para elempleo.com (Colombia). Con él puedes:

  • Buscar ofertas, ver su detalle y evaluar si encajan con tu perfil.
  • Postular, una oferta a la vez y con tu confirmación explícita.
  • Mantener tu hoja de vida al día a partir de un archivo único con tus datos: el perfil maestro.

Funciona con cualquier cuenta de elempleo. Ningún dato personal está escrito en el código: todo sale del perfil maestro o de la hoja de vida que ya tengas en elempleo.

Instalación

Requisitos: Node.js 20 o superior y un navegador basado en Chromium (Chrome, Edge, Brave o Chromium), que solo se usa para iniciar sesión.

Regístralo en tu cliente MCP (por ejemplo ~/.cursor/mcp.json o la configuración de Claude Desktop). npx lo descarga de npm y lo mantiene actualizado:

json
{  "mcpServers": {    "elempleo": {      "command": "npx",      "args": ["-y", "mcp-elempleo"],      "env": { "PERFIL_MAESTRO": "/ruta/a/mi/perfil-maestro.json" }    }  }}

Es autónomo: incluye el estándar del perfil maestro (src/perfil-maestro.js, perfil-maestro.schema.json y PERFIL-MAESTRO.md). Los demás MCP de empleo traen la misma copia, así que todos comparten el mismo perfil.

También puedes instalarlo desde el código fuente:

bash
git clone https://github.com/Jucamhc/mcp-elempleo.gitcd mcp-elempleonpm install

y usar "command": "node" con "args": ["/ruta/a/mcp-elempleo/src/index.js"].

Variables de entorno (todas opcionales)

VariablePor defectoPara qué
PERFIL_MAESTRO~/.perfil-maestro/perfil-maestro.jsonRuta de tu perfil maestro (la misma para todos los MCP)
RAIZ_ARCHIVOScarpeta del perfil maestroBase para las rutas relativas de foto y cv_pdf
ELEMPLEO_DATA_DIR~/.elempleoSesión (cookies), caché de catálogos, perfil del navegador y respaldos
CHROME_PATHse detectaRuta del ejecutable del navegador si no está en la ubicación habitual

La sesión y los respaldos quedan en ~/.elempleo/, fuera de carpetas sincronizadas. El MCP nunca muestra cookies ni credenciales.

Primeros pasos

  1. iniciar-sesion: abre el navegador en el login de elempleo. Entras a mano (hay reCAPTCHA y verificación en dos pasos) y el MCP guarda la sesión.

  2. Si aún no tienes perfil maestro, construir-perfil-maestro te pide una fuente:

    • La URL de tu LinkedIn. LinkedIn no deja leer perfiles automáticamente, así que el MCP te indica cómo exportarlo con "Más → Guardar en PDF".
    • Tu CV en PDF y tu foto. El MCP extrae el texto y el asistente arma el perfil según el estándar para que lo revises.
    • Lo que ya tienes en elempleo (desde_portal: true).

    Cuando lo apruebes, guardar-perfil-maestro lo valida y lo guarda con la foto y el CV.

  3. comparar-perfil: muestra qué falta, qué está desactualizado y qué sobra en elempleo frente al perfil maestro.

  4. actualizar-perfil por sección: primero sin aplicar, para ver el plan antes → después; luego con aplicar: true.

Perfil maestro

Es un JSON que sirve como única fuente de verdad y sigue el estándar compartido. El MCP lo lee y nunca inventa datos. Campos que usa elempleo (ver perfil-maestro.ejemplo.json):

CampoUso
datos_personalesciudad, pais, zona_horaria, enlaces (linkedin, github, portafolio…) y foto (ruta relativa o absoluta)
titular.es, resumen.esPerfil profesional y primera línea de la nota al empleador
profesionOpcional: nombre exacto en el catálogo de elempleo. Si falta, se usa tu título más alto
experiencia[]empresa, cargo, cargo_oficial, inicio/fin (AAAA-MM, fin: null = actual), ubicacion, descripcion_empresa, logros_es[], tecnologias[]
formacion[]institucion, titulo_es, inicio, fin, graduado, mostrar_en_cv
certificaciones[]nombre, emisor, fecha
aptitudes, habilidades_claveaptitudes (grupos libres) y habilidades_clave.tecnicas/blandas (máx. 20 en elempleo, 40 caracteres cada una)
idiomas[]idioma y nivel (Nativo, Básico, Intermedio o Avanzado)
preferenciasmodalidad (p. ej. "Solo remoto"), salario_minimo_laboral_cop, salario_minimo_prestacion_cop, acepta_reubicacion, puede_viajar, paises, disponibilidad
seguridad_socialpension_obligatoria, cesantias, pension_voluntaria, eps, caja_compensacion (nombres como aparecen en elempleo)
cv_pdfRuta del PDF, o un objeto { "version": "ruta" } si tienes varias
respuestas_frecuentesRespuestas reutilizables (p. ej. uso_ia)

Cómo se eligen las opciones de los catálogos de elempleo

elempleo pide elegir cargo equivalente, sector, ciudad, nivel educativo, área de cursos y profesión de sus propias listas. El MCP elige la opción que más palabras comparte con tu dato y la muestra en el plan para que la revises. Si quieres fijarla, agrega el nombre exacto del catálogo en portales.elempleo (los demás MCP ignoran esa clave):

  • En experiencia[].portales.elempleo: cargo_equivalente, sector y ciudad.
  • En formacion[].portales.elempleo: nucleo_conocimiento. El nivel y la ciudad usan los campos estándar nivel y ciudad.
  • En certificaciones[].portales.elempleo: area; o un area_cursos general en portales.elempleo de la raíz.

Herramientas

HerramientaQué hace
estado-de-sesion, iniciar-sesionSesión
buscar-ofertas, detalle-de-ofertaBúsqueda (sin sesión)
evaluar-encajeCompara la oferta con tus preferencias (modalidad, salario según contrato, tecnologías declaradas e inglés)
preguntas-de-postulacion, proponer-respuestasLee el formulario de postulación y redacta la nota con datos del perfil maestro
postular-a-ofertaExige confirmacion: "POSTULAR <id>". Una a la vez, sin reintentos. Si la empresa pide cuestionario devuelve requiere_cuestionario con las preguntas
responder-cuestionarioEnvía el cuestionario de filtro posterior a la postulación. Exige confirmacion: "CUESTIONARIO <id>" y respuestas aprobadas por el usuario
mis-postulacionesEstado de tus postulaciones
construir-perfil-maestro, guardar-perfil-maestro, ver-perfil-maestroHerramientas estándar del perfil maestro: crearlo desde LinkedIn, un CV en PDF con foto o elempleo; validarlo y guardarlo; revisarlo
ver-mi-perfil, comparar-perfil, actualizar-perfilHoja de vida. Secciones: perfil_profesional, experiencia, formacion, cursos, idiomas, redes_sociales, habilidades, seguridad_social
subir-foto, subir-cv, listar-mis-cvFoto y archivos

Toda escritura respalda antes lo que había (en ~/.elempleo/respaldos/) y solo borra los ids que pases en eliminar_ids.

Referencia técnica

elempleo no tiene API pública; la web usa una API interna (ASP.NET MVC con tokens anti-falsificación).

Búsqueda (sin sesión)

  1. GET /co/ofertas-empleo/?Trabajo=<palabra> da las cookies y el token de <span class="js-search-api-token">.

  2. POST /co/api/joboffers/findbyfilter con la cabecera __RequestVerificationToken y el cuerpo:

    json
    {"query":"desarrollador","salaryInfo":[],"contractType":0,"workModality":101, "cities":[],"publishDate":0,"pageIndex":1,"pageSize":20,"sortExpression":"PublishDate_Desc"}
FiltroValores
workModality0 todos, 100 presencial, 102 híbrido, 101 remoto
contractType0 todos, 1 indefinido, 2 definido, 3 prestación de servicios, 4 aprendizaje, 5 obra o labor, 6 otro
salaryInfo (millones COP)2 menos de 1 · 3 1–1,5 · … · 10 4,5–5,5 · 23 5,5–6 · 27 6–8 · 28 8–10 · 29 10–12,5 · 30 12,5–15 · 31 15–18 · 32 18–21 · 33 más de 21
publishDate1 hoy y ayer, 2 una semana, 3 dos semanas, 4 un mes, 6 más de un mes

Detalle: GET /co/api/joboffers/getjoboffer?jobOfferId=<id>.

Postulación (con sesión)

  • Postulación rápida: POST /co/JobOffers/JobOfferDetail/SaveQuickApplication?JobOfferId=&CurrentAttachmentCVId= con Attachments.SelectedIds.
  • Normal: POST /co/JobOffers/JobOfferDetail/Save?jobOfferId= con ApplicationNote (opcional, máx. 2.000 caracteres).
  • Response: 1 enviada, 2 se postula en la web de la empresa, 3 hoja de vida incompleta, 4 ya postulado, 5 redirige a un paso adicional (por verificar).
  • Mis postulaciones: POST /co/api/jobOffersAplication/filters con el token de .js-application-api-token.

Hoja de vida

Página /co/hoja-de-vida. Los catálogos vienen en atributos data-* de .js-conf (ciudades, cargos, sectores, instituciones, profesiones, áreas de cursos, habilidades, países).

SecciónEndpoint
Foto/co/Persons/PersonalInformation/LoadAsyncPhoto (multipart, campo Image; token del formulario LoadSyncPhoto)
Perfil profesional/co/Persons/ProfessionalProfile/Save
Experiencia laboral/co/Persons/LaboralExperience/Save (borrar: /Delete)
Educación formal/co/Persons/FormalEducation/Save (borrar: /Delete)
Cursos y diplomados/co/Persons/NonFormalEducation/Save (borrar: /Delete)
Idiomas/co/Persons/LanguageKnowledge/Save; idiomas disponibles: /GetAvaibleLanguages
Redes sociales/co/Persons/SocialNetwork/Save con model[i][Id], model[i][Url]
Habilidades/co/Persons/Skills/Save con Skills[i][id], Skills[i][name] (id 0 = texto libre; el catálogo solo trae habilidades blandas)
Seguridad social/co/Persons/SocialSecurity/Save con los SelectedIds de pensión, cesantías, EPS y caja, y ContributeToVoluntaryPensionFund
Archivos (CV)/co/Persons/Attachment/SaveAttachment (multipart, campo File; borrar: /Delete)

Fechas en dd/mm/aaaa; formularios en x-www-form-urlencoded al estilo jQuery.param.

Pendiente de verificar

  • Qué trae el código de respuesta 5 al postular (posibles preguntas de filtro o pruebas).

Source: README.md at commit 060d658

Tools

19

estado-de-sesion

Indica si hay una sesión válida de elempleo y el estado de la hoja de vida. Nunca muestra cookies.

Takes no parameters.

iniciar-sesion

Abre un navegador basado en Chromium (Chrome, Edge, Brave o Chromium) en la página de inicio de sesión de elempleo para que el usuario entre a mano (hay reCAPTCHA y verificación en dos pasos). Al detectar la sesión guarda las cookies en la carpeta de datos del MCP y cierra la ventana.

Parametersespera_max_segundos

buscar-ofertas

Busca ofertas en elempleo.com (Colombia). Funciona sin sesión; con sesión indica si ya te postulaste.

Parametersfechapaginapalabrarequiredcontratomodalidadpor_paginasalario_minimo_millones

detalle-de-oferta

Devuelve la descripción completa de una oferta: requisitos, salario, contrato, modalidad y ciudad.

Parametersidrequired

evaluar-encaje

Compara la oferta con el perfil maestro y sus preferencias (modalidad, salario mínimo según tipo de contrato, tecnologías declaradas y nivel de inglés) y devuelve encaja, encaja_parcial o no_encaja con los motivos.

Parametersidrequired

preguntas-de-postulacion

Lee el formulario de postulación de la oferta (requiere sesión): tipo de postulación, nota opcional, archivos de CV disponibles y formularios adicionales. No envía nada.

Parametersidrequired

proponer-respuestas

Redacta la nota al empleador a partir del perfil maestro y señala lo que requiere confirmación del usuario. Nunca inventa datos ni envía nada.

Parametersidrequired

postular-a-oferta

Envía la postulación. Exige confirmación explícita del usuario para ESA oferta: confirmacion debe ser exactamente "POSTULAR <id>". Una oferta a la vez, sin reintentos automáticos.

Parametersidrequirednotaadjunto_idconfirmacionrequired

responder-cuestionario

Envía el cuestionario de filtro que la empresa pide tras postular (estado "requiere_cuestionario"). Las respuestas deben venir del usuario o estar confirmadas por él; confirmacion debe ser exactamente "CUESTIONARIO <id>".

Parametersidrequiredurlrequiredrespuestasrequiredconfirmacionrequired

mis-postulaciones

Lista tus postulaciones en elempleo con su estado (en proceso, vencida, eliminada…).

Parameterspaginapor_pagina

construir-perfil-maestro

Crea el perfil maestro (fuente única de tus datos para todos los MCP de empleo) cuando aún no existe. Sin argumentos, indica qué pedirle al usuario: la URL de su LinkedIn, o su CV en PDF y su foto. Con un PDF devuelve el texto extraído, el esquema estándar y las reglas para armar el JSON; con solo la URL de LinkedIn explica cómo exportar el perfil a PDF. No guarda nada: eso lo hace guardar-perfil-maestro tras la confirmación del usuario.

Parametersfototextocv_pdfdesde_portallinkedin_url

guardar-perfil-maestro

Valida el perfil maestro contra el esquema estándar y lo guarda (por defecto en ~/.perfil-maestro/perfil-maestro.json). Copia la foto y el CV junto al perfil. Llamar solo después de que el usuario apruebe el contenido. No sobrescribe uno existente salvo sobrescribir: true (y lo respalda).

Parametersfotocv_pdfperfilrequiredsobrescribir

ver-perfil-maestro

Muestra el perfil maestro, dónde está, si cumple el esquema estándar y qué queda pendiente de confirmar.

Takes no parameters.

ver-mi-perfil

Lee tu hoja de vida actual en elempleo: perfil profesional, experiencia, formación, cursos, idiomas, redes, habilidades y archivos.

Takes no parameters.

comparar-perfil

Compara tu hoja de vida de elempleo con el perfil maestro y lista lo que falta, lo desactualizado y lo que sobra.

Takes no parameters.

actualizar-perfil

Actualiza una sección de la hoja de vida desde el perfil maestro. Sin aplicar devuelve el plan exacto (antes → después) para mostrarlo al usuario; con aplicar=true respalda en ~/.elempleo/respaldos/ y guarda. Solo borra los ids indicados en eliminar_ids. seguridad_social usa los datos que el usuario dé; nunca los supongas.

Parametersaplicarseccionrequiredeliminar_ids

subir-foto

Sube la foto indicada en datos_personales.foto del perfil maestro (JPG, PNG o GIF, máx. 3 MB). Sin aplicar solo muestra lo que haría.

Parametersaplicar

subir-cv

Sube el CV en PDF del perfil maestro (cv_pdf: una ruta, o un objeto con varias versiones) a tus archivos de elempleo; opcionalmente reemplaza uno existente. Sin aplicar solo muestra lo que haría.

Parametersaplicarversionreemplazar_id

listar-mis-cv

Lista los archivos de CV adjuntos en elempleo.

Takes no parameters.

Version history

1
  1. v0.1.0LatestOct 23, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts