MCP Chamba
Enables searching and following company Greenhouse job boards, pulling their job openings as part of the job-search flow and scoring them against the user's profile.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP Chambabusca ofertas de backend remoto y muéstrame las mejores para mi perfil"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Chamba
English summary. MCP Chamba is a local Model Context Protocol server that turns Claude (Claude Code or Claude Desktop) into a job-search assistant. It pulls openings from public job-board APIs (Get on Board, Remotive, RemoteOK, Jobicy, Himalayas, Arbeitnow) and company boards (Greenhouse, Lever, Ashby), scores each one 0–100 against your profile with explainable reasons, generates an ATS-friendly CV and cover letter tailored to the offer (PDF), refuses any figure that is not in your profile, and tracks every application and follow-up in a local SQLite database. Your data never leaves your machine. The code and docs are in Spanish; it is tuned for candidates in Colombia / LATAM looking for remote work.
Chamba es "trabajo" en buena parte de Latinoamérica. Este servidor MCP le da a Claude las herramientas para ayudarte a conseguirla: buscar → calificar → adaptar la hoja de vida y la carta → postularte tú → hacer seguimiento.
Contenido
Related MCP server: JobPilot MCP
Qué hace
Busca ofertas en portales con API pública y en los portales de empleo de las empresas que sigues, en paralelo, y guarda lo visto para no repetir consultas (cada fuente se consulta como máximo cada 6 horas por búsqueda).
Califica cada oferta de 0 a 100 contra tu perfil y explica por qué: qué tecnologías coinciden, cuáles se parecen a las tuyas, qué te falta, si aceptan gente desde Colombia, si pide más años de los que tienes o si paga menos de lo que esperas.
Genera la hoja de vida en PDF adaptada a la oferta: una columna, texto real y sin tablas (la leen bien los filtros ATS), con primero los logros que más se parecen a lo que piden, en español o inglés según el idioma de la oferta.
Guarda la carta de presentación (Markdown + PDF con el mismo encabezado de la hoja de vida).
No deja inventar: si el titular, el resumen o la carta mencionan una cifra que no aparece en tu perfil (
250.000 usuarios,95 %…), la herramienta lo rechaza.Lleva el seguimiento de cada postulación (guardada → preparada → postulada → entrevista → prueba técnica → oferta → aceptada / rechazada / descartada) y te avisa cuándo toca escribirle al reclutador.
Prepara entrevistas con tus historias STAR, lo que coincide y lo que falta, y el rango salarial de ofertas parecidas.
Tú envías cada postulación. El servidor nunca postula por ti: prepara los documentos y te da el enlace.
Herramientas
Herramienta | Qué hace |
| Devuelve tu perfil (experiencia, logros bilingües con etiquetas, habilidades, proyectos, historias STAR, reglas para el asistente). Claude lo consulta antes de escribir cualquier cosa sobre ti. |
| Busca en las fuentes elegidas y en las empresas seguidas, califica y devuelve las mejores con sus razones. |
| Las mejores ofertas guardadas de los últimos días, de mayor a menor ajuste. |
| Detalle completo: descripción, análisis de ajuste y la postulación con su historial. |
| Guarda y califica una oferta pegada a mano (LinkedIn, Computrabajo, elempleo, un correo de un reclutador…). |
| No volver a mostrar una oferta (no interesa, no aceptan tu país, ya cerró…). |
| Genera la hoja de vida en PDF adaptada a la oferta y deja la postulación en estado |
| Guarda la carta de presentación (Markdown y PDF) en la carpeta de la postulación. |
| Cambia el estado de una postulación y programa el próximo seguimiento (7 días al postular, 3 tras una entrevista). |
| Tablero: cuántas hay por estado, qué seguimientos están vencidos y la lista completa. |
| Reúne la oferta, coincidencias, faltantes, historias STAR, cómo contar tu salida del último empleo y el mercado salarial. |
| Mínimo, cuartiles y máximo de lo que pagan las ofertas guardadas (USD/mes y COP/mes), comparado con tu expectativa. |
| Agrega el portal Greenhouse, Lever o Ashby de una empresa para revisarlo en cada búsqueda (comprueba que exista). |
Además expone dos guías (prompts MCP), que en Claude Code aparecen al escribir /:
rutina_diaria: seguimientos vencidos, búsquedas del día (las deobjetivo.busquedasen tu perfil) y un top 10 para decidir qué preparar.postular: prepara una postulación completa (hoja de vida, carta, qué te falta y el enlace).
Arquitectura
Claude Code / Claude Desktop
│ MCP por stdio
▼
┌──────────────────── empleo/servidor.py ─────────────────────┐
│ 13 herramientas + 2 guías · reglas anti-invención de cifras │
└──┬──────────────┬───────────────┬──────────────┬────────────┘
│ │ │ │
▼ ▼ ▼ ▼
fuentes.py ajuste.py cv.py base.py
APIs públicas puntaje 0-100 Jinja2 + SQLite local
de empleo y razones WeasyPrint (ofertas, postulaciones,
(httpx async) (vocabulario) → PDF historial, consultas)
│ │ │
│ ▼ ▼
│ perfil.py ◀── perfil/perfil.yaml (tuyo, fuera de git)
▼
Get on Board · Remotive · RemoteOK · Jobicy · Himalayas · Arbeitnow
Greenhouse · Lever · Ashby (portales de empresas)Módulo | Responsabilidad |
| Define el servidor MCP ( |
| Un conector por portal; todos devuelven |
| Calcula el puntaje, las razones y qué etiquetas de logros van primero en la hoja de vida. |
| Diccionario de tecnologías (expresiones regulares), cuáles dominas y cuáles se parecen. |
| Carga el perfil y lo resume para el asistente (solo hechos del perfil). |
| Arma la hoja de vida y la carta en HTML y las convierte a PDF. |
| Persistencia en SQLite y máquina de estados de las postulaciones. |
| Rutas de archivos, configurables con variables de entorno. |
Claude escribe los textos (titular, resumen, carta); el servidor aporta los hechos, valida las cifras y produce los documentos. No hace falta ninguna clave de API.
Requisitos
Python 3.12+ y uv (gestiona el entorno y las dependencias).
Pango, que WeasyPrint necesita para generar los PDF:
Debian / Ubuntu:
sudo apt install libpango-1.0-0 libpangoft2-1.0-0Fedora:
sudo dnf install pangoArch:
sudo pacman -S pangomacOS:
brew install pangoWindows: ver la guía de WeasyPrint.
Recomendado: la fuente Noto Sans (
fonts-noto/noto-fonts), que usa la plantilla.Claude Code o Claude Desktop.
Instalación
git clone https://github.com/yrey420/MCP-CHAMBA.git
cd MCP-CHAMBA
uv sync # crea .venv e instala dependencias
uv run pytest # opcional: 39 pruebas, sin salir a internetConfiguración
1. Tu perfil
Todo lo que el asistente sabe de ti sale de un único archivo YAML. Parte del ejemplo (un perfil ficticio, "Alex Ejemplo"):
cp perfil/perfil.example.yaml perfil/perfil.yamly edítalo con tus datos. perfil/perfil.yaml está en .gitignore: nunca se sube. Si no existe,
el servidor arranca con el perfil de ejemplo y lo avisa en ver_perfil y al generar documentos.
Secciones principales (el ejemplo trae comentarios en cada una):
Sección | Para qué sirve |
| Nombre, ciudad, teléfono, correo, LinkedIn, GitHub, idiomas. Van en el encabezado de la hoja de vida y la carta; |
| Roles, modalidades, disponibilidad, |
| Opcional: |
| Versiones generales en español ( |
| Grupos de habilidades para la hoja de vida. |
| Empleos con |
| Proyectos propios; |
| Estudios e historias STAR para entrevistas. |
| Cómo contar por qué saliste de tu último empleo, con sus |
| Reglas que Claude debe respetar siempre (p. ej. no nombrar clientes protegidos por un acuerdo de confidencialidad). Se agregan a las instrucciones del servidor. |
| Notas y decisiones tuyas que el asistente debe conocer. |
2. Empresas que sigues (opcional)
No hace falta crearlo: seguir_empresa escribe perfil/empresas.yaml (también ignorado por
git). El formato está en perfil/empresas.example.yaml.
3. Variables de entorno (opcionales)
Por defecto todo vive dentro de la carpeta del proyecto. Puedes guardar tus datos en otro lugar:
Variable | Por defecto | Contenido |
|
| Tu perfil maestro. |
|
| Portales de empresas seguidas. |
|
| Hojas de vida generales y una carpeta por postulación ( |
|
| Base SQLite de ofertas, postulaciones e historial. |
No se necesitan claves ni tokens: todas las fuentes son públicas.
Conectarlo a Claude
Claude Code
claude mcp add --scope user empleo -- uv run --directory /ruta/absoluta/a/MCP-CHAMBA empleo-mcpCon tus datos fuera del repositorio:
claude mcp add --scope user empleo \
-e EMPLEO_PERFIL="$HOME/.config/chamba/perfil.yaml" \
-e EMPLEO_BASE="$HOME/.local/share/chamba/empleo.db" \
-e EMPLEO_SALIDA="$HOME/Documentos/chamba" \
-- uv run --directory /ruta/absoluta/a/MCP-CHAMBA empleo-mcpComprueba que quedó conectado con claude mcp list (o /mcp dentro de Claude Code).
Claude Desktop
Edita claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows:
%APPDATA%\Claude\, Linux: ~/.config/Claude/) y reinicia la aplicación:
{
"mcpServers": {
"empleo": {
"command": "uv",
"args": ["run", "--directory", "/ruta/absoluta/a/MCP-CHAMBA", "empleo-mcp"],
"env": {
"EMPLEO_PERFIL": "/ruta/absoluta/a/perfil.yaml"
}
}
}
}Si Claude Desktop no encuentra uv, pon la ruta completa (which uv) en command.
El ejecutable también se llama
mcp-chamba;empleo-mcpymcp-chambason equivalentes.
Uso: el flujo típico
Le hablas a Claude en lenguaje natural; él decide qué herramienta usar.
buscar_ofertas ─▶ ver_oferta ─▶ generar_cv_para_oferta ─▶ (tú envías) ─▶ actualizar_postulacion
+ guardar_carta └─▶ ver_postulacionesBuscar. "Búscame ofertas de python django remotas" →
buscar_ofertasdevuelve el top con puntaje, empresa, si aceptan Colombia, salario y razones.Revisar. "Muéstrame la de Acme" →
ver_ofertacon lo que coincide y lo que falta.Preparar. "Prepárame la postulación" (o la guía
/postular) → Claude leever_perfil, escribe un titular y resumen adaptados solo con hechos de tu perfil, genera la hoja de vida congenerar_cv_para_ofertay la carta conguardar_carta. Quedan ensalida/postulaciones/<fecha>-<empresa>-<cargo>/junto conoferta.md.Postular (tú). Abres el enlace, revisas los PDF y envías.
Registrar. "Ya me postulé" →
actualizar_postulacioncon estadopostulada; el seguimiento queda programado para dentro de 7 días.Seguimiento. "¿Cómo voy?" →
ver_postulacionesmuestra el tablero y los seguimientos vencidos; Claude puede redactar el mensaje al reclutador.Entrevista. "Prepárame la entrevista con Acme" →
preparar_entrevista: preguntas probables, respuestas con tus historias STAR, cómo cubrir lo que falta y qué cifra pedir.
Otros ejemplos:
"¿Cuánto están pagando por backend con Django?" →
rango_salarial"Sigue el portal de Acme en Greenhouse, slug
acme" →seguir_empresa"Te pego una oferta de LinkedIn, agrégala" →
agregar_oferta"Esa no, descártala: solo aceptan gente en EE. UU." →
descartar_oferta
Sin Claude, también puedes generar la hoja de vida general:
uv run python generar_cv.py --idioma es
uv run python generar_cv.py --idioma en --etiquetas backend,integraciones,ia --salida salida/cv-ia.pdfCómo se califica una oferta
El puntaje (0–100) suma cuatro partes y resta lo que pesa en contra. Lo importante son las razones, que acompañan cada resultado:
Parte | Peso | Cómo |
Tecnologías | 45 | Las que pide y dominas cuentan entero; las "parecidas" (FastAPI si sabes Django, Vue si sabes React…) cuentan a medias. Con menos de 4 tecnologías detectadas no se infla el puntaje. |
Rol | 25 | Backend, full-stack, integraciones o IA puntúan alto; frontend, móvil, QA, ventas, etc., no. |
Nivel | 10 | Senior / semi-senior suma; lead / staff es "un paso arriba"; junior resta. |
Ubicación | 20 | Remoto que acepta Colombia / LATAM / mundial suma; "solo EE. UU.", W-2 o security clearance resta 25; presencial fuera de tu ciudad suma poco. |
En contra | — | Lenguaje principal ajeno (Go, .NET, Ruby…) −20; muchos más años de experiencia de los que tienes −8; paga menos de tu expectativa −10. |
Al cambiar las reglas, sube ajuste.VERSION: las ofertas guardadas se vuelven a calificar solas.
Privacidad
Todo es local. Tu perfil, la base SQLite, las hojas de vida y las cartas viven en tu máquina. No hay telemetría ni servidores propios.
Lo único que sale a internet son consultas de lectura a las APIs públicas de los portales (con el término de búsqueda), identificadas con un User-Agent propio y limitadas a una por fuente y búsqueda cada 6 horas.
Lo que ves en Claude sí pasa por Claude: lo que devuelven las herramientas (incluido tu perfil) llega al modelo como cualquier otra conversación.
Nada personal entra en git:
.gitignoreexcluyeperfil/(salvo los*.example.yaml),datos/,salida/,*.db,*.pdfy.env. Las pruebas usan el perfil ficticio y carpetas temporales.Usa
reglas_para_el_asistentepara lo que no debe decirse nunca (clientes bajo acuerdo de confidencialidad, temas personales, etc.).
Estructura del proyecto
MCP-CHAMBA/
├── empleo/
│ ├── servidor.py # servidor MCP: herramientas, guías e instrucciones
│ ├── fuentes.py # conectores a portales de empleo
│ ├── ajuste.py # puntaje 0-100 y razones
│ ├── vocabulario.py # tecnologías y cómo reconocerlas
│ ├── perfil.py # carga y resumen del perfil
│ ├── cv.py # hoja de vida y carta en PDF
│ ├── base.py # SQLite: ofertas, postulaciones, historial
│ └── rutas.py # rutas y variables de entorno
├── perfil/
│ ├── perfil.example.yaml # perfil ficticio: cópialo a perfil.yaml
│ └── empresas.example.yaml # formato de las empresas seguidas
├── plantillas/
│ ├── cv.html # plantilla Jinja2 de la hoja de vida
│ ├── carta.html # plantilla de la carta
│ └── cv.css # estilos (una columna, apta para ATS)
├── tests/ # pytest, sin red (httpx.MockTransport)
├── generar_cv.py # CLI: hoja de vida general en PDF
├── pyproject.toml
├── uv.lock
└── LICENSESe crean al usarlo (y no se suben): perfil/perfil.yaml, perfil/empresas.yaml,
datos/empleo.db y salida/.
Desarrollo y contribuciones
¡Bienvenidas! Issues y pull requests en español o inglés.
uv sync
uv run pytest # pruebas
uv run ruff check . # lint
uv run ruff format . # formatoPautas:
Nueva fuente de ofertas: una función
asyncenempleo/fuentes.pyque reciba el clientehttpxy la consulta y devuelvalist[Oferta]; regístrala enPOR_BUSQUEDA(o enPOR_EMPRESAsi es un ATS por empresa) y agrega una prueba con una respuesta de ejemplo entests/test_fuentes.py. Solo APIs públicas que permitan la consulta; nada de scraping que viole términos de uso.Nueva tecnología: agrégala a
TECNOLOGIASenempleo/vocabulario.py(y, si aplica, aPARIENTESoETIQUETA_DE).Cambios en el puntaje: acompáñalos de pruebas en
tests/test_ajuste.pyy subeajuste.VERSION.Nunca subas datos reales en pruebas, ejemplos o capturas: usa el perfil ficticio.
Limitaciones conocidas
Pensado para buscar desde Colombia / LATAM: las reglas de ubicación (
GEO_OK,GEO_RESTRINGIDAenempleo/ajuste.py) y la conversión a pesos lo reflejan. Para otro país, ajusta esas expresiones.Las tasas de cambio (
ajuste.USD_POR) son aproximadas y fijas: sirven para comparar rangos, no para cuentas exactas.LinkedIn, Computrabajo y elempleo no tienen API pública: esas ofertas se agregan pegando el texto (
agregar_oferta).La detección de tecnologías es por expresiones regulares: puede tener falsos positivos o negativos en ofertas ambiguas.
Licencia
MIT © 2026 Yeison Rey
This server cannot be deployed
Maintenance
Related MCP Connectors
Job search tracker for Claude and ChatGPT: applications, interviews, follow-ups, company watch.
- jobwyreOAuthapp.jobwyre
Track job applications on a board: let Claude or ChatGPT read and update jobs, interviews, notes.
AI job search MCP — fact-checked jobs, application tracker, alerts. ChatGPT, Claude, Cursor.
searchnapply connects your AI agent to 500K+ open jobs taken straight from company career sites, kept up to date as companies add and close them. Search in your own words with the site's filters (role, location, remote, salary, experience, department), read postings in full, and tailor a resume or cover letter from your searchnapply profile. Save a search as a monitor to collect new postings and track what you applied to or skipped. It never invents a job or a salary, and it does not apply for you: you apply on the company's own page. Free plan included, within a daily call limit.
Related MCP Servers
- AlicenseAqualityDmaintenanceClaude-powered job fit analyzer that analyzes job fit based on GitHub portfolio, resume, and preferences, tracks applications locally.2048 PyPI2MIT
- AlicenseAqualityDmaintenanceTransforms Claude into an AI job-hunting assistant that searches remote job boards, scores roles against your CV, generates tailored cover letters, and logs everything to a Notion tracker.11MIT
- FlicenseNot gradedqualityCmaintenanceEnables Claude to parse CVs, search job boards (Remotive, Arbeitnow, Adzuna, Greenhouse/Lever), tailor resumes and cover letters, and prepare application packages with direct apply links—without ever auto-submitting. It runs 100% locally and free, storing jobs and applications as JSON files.-
- FlicenseNot gradedqualityBmaintenanceEnables automated job searching from multiple boards, filtering matches against saved criteria, deduplicating seen postings, and tracking application statuses. Runs locally and integrates with Claude Desktop for natural-language queries and updates.-