Back to Browse

Elempleo MCP Server

Developer ToolsModerate7.4MCP RegistryLocal
Free

Server data from the Official MCP Registry

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

About

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

Security Report

7.4
Moderate7.4Low Risk

This is a Spanish-language MCP server for elempleo.com job search and application management, and its code shows no malicious exfiltration or dangerous execution patterns in the visible portion. Its permissions (network access to elempleo, local file reads for the profile and CV, and local session/cookie storage under ~/.elempleo) largely match its purpose, and writes are gated by explicit user confirmation. The analysis is limited because the source was truncated before the remaining files and sections were visible, and the cookie/session storage and the browser-launch path were not fully reviewed. Supply chain analysis found 1 known vulnerability in dependencies (0 critical, 1 high severity). Package verification found 1 issue.

4 files analyzed · 5 issues found

Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.

Permissions Required

This plugin requests these system permissions. Most are normal for its category.

HTTP Network Access

Connects to external APIs or services over the internet.

File System Read

Reads files on your machine. Normal for tools that analyze or process local data.

File System Write

Writes or modifies files on your machine. Check that this is expected for the tool.

env_vars

Check that this permission is expected for this type of plugin.

process_spawn

Check that this permission is expected for this type of plugin.

database

Check that this permission is expected for this type of plugin.

What You'll Need

Set these up before or after installing:

Ruta del perfil maestro (JSON) compartido por los MCP de empleoOptional

Environment variable: PERFIL_MAESTRO

Base para las rutas relativas de la foto y el CVOptional

Environment variable: RAIZ_ARCHIVOS

Carpeta de la sesión, caché y respaldos (por defecto ~/.elempleo)Optional

Environment variable: ELEMPLEO_DATA_DIR

Ruta del navegador Chromium usado para iniciar sesiónOptional

Environment variable: CHROME_PATH

How to Install

Add this to your MCP configuration file:

{
  "mcpServers": {
    "io-github-jucamhc-mcp-elempleo": {
      "env": {
        "CHROME_PATH": "your-chrome-path-here",
        "RAIZ_ARCHIVOS": "your-raiz-archivos-here",
        "PERFIL_MAESTRO": "your-perfil-maestro-here",
        "ELEMPLEO_DATA_DIR": "your-elempleo-data-dir-here"
      },
      "args": [
        "-y",
        "mcp-elempleo"
      ],
      "command": "npx"
    }
  }
}

Documentation

View on GitHub

From the project's GitHub 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:

{
  "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).

Reviews

No reviews yet

Be the first to review this server!