elempleo

Official registry Other

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

Install

Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).

NPM package mcp-elempleo
Claude Code
claude mcp add elempleo -e 'PERFIL_MAESTRO=<PERFIL_MAESTRO>' -e 'RAIZ_ARCHIVOS=<RAIZ_ARCHIVOS>' -e 'ELEMPLEO_DATA_DIR=<ELEMPLEO_DATA_DIR>' -e 'CHROME_PATH=<CHROME_PATH>' -- npx -y mcp-elempleo@0.1.0
JSON configuration (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "elempleo": {
            "command": "npx",
            "args": [
                "-y",
                "mcp-elempleo@0.1.0"
            ],
            "env": {
                "PERFIL_MAESTRO": "<PERFIL_MAESTRO>",
                "RAIZ_ARCHIVOS": "<RAIZ_ARCHIVOS>",
                "ELEMPLEO_DATA_DIR": "<ELEMPLEO_DATA_DIR>",
                "CHROME_PATH": "<CHROME_PATH>"
            }
        }
    }
}

Environment variables

  • PERFIL_MAESTRO Ruta del perfil maestro (JSON) compartido por los MCP de empleo
  • RAIZ_ARCHIVOS Base para las rutas relativas de la foto y el CV
  • ELEMPLEO_DATA_DIR Carpeta de la sesión, caché y respaldos (por defecto ~/.elempleo)
  • CHROME_PATH Ruta del navegador Chromium usado para iniciar sesión

Documentation

From the project's README on GitHub, refreshed weekly. Links open on GitHub.

Contents
  1. mcp-elempleo
  2. Instalación
  3. Primeros pasos
  4. Perfil maestro
  5. Herramientas
  6. Referencia técnica
  7. Pendiente de verificar

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:

{
  "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:

git clone https://github.com/Jucamhc/mcp-elempleo.git
cd mcp-elempleo
npm 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:
     {"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).

Frequently asked questions

What is elempleo?

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

How do I install elempleo?

It runs on your machine. In Claude Code: claude mcp add elempleo -e 'PERFIL_MAESTRO=<PERFIL_MAESTRO>' -e 'RAIZ_ARCHIVOS=<RAIZ_ARCHIVOS>' -e 'ELEMPLEO_DATA_DIR=<ELEMPLEO_DATA_DIR>' -e 'CHROME_PATH=<CHROME_PATH>' -- npx -y mcp-elempleo@0.1.0. For other clients, paste the JSON configuration from this page into their MCP settings.

Does elempleo need an API key?

Its registry entry lists no required key or secret. Some features may still need an account with the service it connects to.

Is elempleo open source?

Yes. Its code is on GitHub under the MIT license.

Who maintains elempleo?

It is published by Jucamhc. AI.tn lists it but does not maintain or endorse it.

From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.