Skip to main content
Glama
SRP-alohamora

Job Matcher MCP

Job Matcher MCP

🎯 Servidor MCP (Model Context Protocol) de búsqueda de empleo y personalización de currículums impulsado por IA

Automatiza tu búsqueda de empleo y personaliza tu currículum para cada puesto en menos de un minuto. Impulsado por APIs de empleo y el LLM de Claude.


📋 Tabla de Contenidos


Related MCP server: job-search

🚀 Inicio Rápido

Objetivo: Poner el servidor en funcionamiento con datos simulados en 5 minutos (sin necesidad de claves API).

1. Clonar el repositorio

\

cd job-matcher-mcp

2. Instalar dependencias

\

pip install -r requirements.txt

3. Ejecutar con datos simulados

\

export USE_MOCK_DATA=true
python mcp_server.py

Salida esperada:

=== Testing search_jobs ===
{
  "success": true,
  "job_listings": [
    {
      "id": "mock_1",
      "title": "Senior Product Manager",
      "company": "TechCorp Inc",
      "location": "San Francisco, CA",
      ...
    }
  ],
  ...
}

=== Testing customize_resume ===
{
  "success": true,
  "customized_resume": "# John Doe...",
  ...
}

✅ ¡Éxito! Tu servidor MCP está funcionando. Ahora agreguemos las claves API reales.


✨ Características

Característica

Estado

Descripción

Búsqueda de Empleo

✅ MVP

Consulta miles de ofertas mediante la API de Adzuna

Personalización de Currículum

✅ MVP

Adaptación del currículum impulsada por IA usando Claude

Coincidencia de Habilidades

✅ MVP

Identifica habilidades coincidentes/faltantes

Optimización ATS

✅ MVP

Inserción automática de palabras clave para ATS

Modo de Datos Simulados

✅ MVP

Prueba sin claves API

Soporte Multi-API

🔜 v1.2

Añadir Indeed, LinkedIn, AngelList

Generación de Cartas de Presentación

🔜 v1.2

Generación automática de cartas de presentación

Seguimiento de Solicitudes

🔜 v2.0

Seguimiento de solicitudes y entrevistas


🔧 Instalación

Requisitos previos

  • Python 3.10 o superior

  • pip (gestor de paquetes de Python)

  • Git

Paso 1: Clonar el repositorio

\

git clone https://github.com/yourusername/job-matcher-mcp.git
cd job-matcher-mcp

Paso 2: Crear entorno virtual (recomendado)

\

# macOS/Linux
python3 -m venv venv
source venv/bin/activate

# Windows
python -m venv venv
.\venv\Scripts\Activate.ps1

Paso 3: Instalar dependencias

\

pip install -r requirements.txt

⚙️ Configuración

1. Obtener claves API

API de Adzuna (Gratuita)

  1. Ve a https://developer.adzuna.com/

  2. Crea una cuenta

  3. Crea una aplicación para obtener App ID y App Key

  4. Nivel gratuito: ~100 solicitudes/día

API de Anthropic Claude (Paga, $0.50-5/mes)

  1. Ve a https://console.anthropic.com/

  2. Crea una cuenta

  3. Genera una clave API

  4. Precios: ~$0.003 por 1K tokens de entrada, $0.015 por 1K tokens de salida

2. Crear archivo .env

\

cp .env.example .env

3. Agregar tus claves API a .env

ADZUNA_APP_ID=tu_app_id_real
ADZUNA_APP_KEY=tu_app_key_real
ANTHROPIC_API_KEY=sk-ant-tu_clave_api_real
USE_MOCK_DATA=false
LOG_LEVEL=INFO

4. Cargar variables de entorno

\

# macOS/Linux
export $(grep -v '^#' .env | xargs)

# Windows PowerShell
Get-Content .env | ForEach-Object {
  $name, $value = $_.Split('=')
  if ($name) { Set-Item -Path env:$name -Value $value }
}

💻 Uso

Ejecutar el servidor

\

python mcp_server.py

Probar con curl (ejemplo)

\

# Buscar empleos
curl -X POST http://localhost:8000/tools/search_jobs \
  -H "Content-Type: application/json" \
  -d '{
    "role": "Product Manager",
    "location": "San Francisco, CA",
    "experience_years": 5,
    "max_results": 10
  }'

# Personalizar currículum
curl -X POST http://localhost:8000/tools/customize_resume \
  -H "Content-Type: application/json" \
  -d '{
    "base_resume": "...",
    "job_description": "...",
    "template": "modern"
  }'

Ejemplo en Python

from mcp_server import JobMatcherMCPServer

server = JobMatcherMCPServer()

# Buscar empleos
jobs = server.search_jobs(
    role="Product Manager",
    location="San Francisco, CA",
    experience_years=5,
    max_results=10
)
print(jobs)

# Personalizar currículum
resume = server.customize_resume(
    base_resume="Tu texto de currículum aquí...",
    job_description="Descripción del empleo aquí...",
    template="modern"
)
print(resume)

🛠️ Referencia de Herramientas MCP

Herramienta 1: search_jobs

Busca ofertas de empleo según criterios.

Esquema de Entrada

{
  "role": "Product Manager",              // Requerido: Título del puesto
  "location": "San Francisco, CA",        // Requerido: Ubicación geográfica
  "experience_years": 5,                  // Requerido: Años de experiencia
  "max_results": 10,                      // Opcional: Límite de resultados (por defecto: 10)
  "use_mock_data": false                  // Opcional: Usar datos simulados (por defecto: false)
}

Esquema de Salida

{
  "success": true,
  "job_listings": [
    {
      "id": "12345",
      "title": "Senior Product Manager",
      "company": "TechCorp",
      "location": "San Francisco, CA",
      "link": "https://...",
      "salary_min": 120000,
      "salary_max": 160000,
      "posted_date": "2026-08-17T10:00:00Z",
      "description_snippet": "Buscamos a..."
    }
  ],
  "total_found": 123,
  "search_time_ms": 1234,
  "error": null
}

Ejemplo

jobs = server.search_jobs(
    role="Product Manager",
    location="Remoto",
    experience_years=3,
    max_results=5
)

Herramienta 2: customize_resume

Personaliza el currículum para un empleo específico usando IA.

Esquema de Entrada

{
  "base_resume": "# Jane Doe...",                     // Requerido: Texto de tu currículum
  "job_description": "Buscamos a...",                 // Requerido: Publicación del empleo
  "template": "modern",                               // Opcional: modern|classic|minimal
  "use_mock_data": false                              // Opcional: Usar datos simulados
}

Esquema de Salida

{
  "success": true,
  "customized_resume": "# Jane Doe...",
  "match_analysis": {
    "skills_match_percentage": 82,
    "matched_skills": ["Product Management", "Leadership"],
    "missing_skills": ["Machine Learning", "Cloud"],
    "suggestions": ["Agrega experiencia en ML si aplica"],
    "keywords_added": ["Data-driven", "Cross-functional"]
  },
  "generation_time_ms": 2345,
  "error": null
}

Ejemplo

customized = server.customize_resume(
    base_resume=open("resume.txt").read(),
    job_description=open("job_posting.txt").read(),
    template="modern"
)

🏗️ Arquitectura

┌─────────────────────────────────────────────────────┐
│  Usuario/Agente IA (Chat, Script, Cliente API)     │
└────────────────┬────────────────────────────────────┘
                 │ Protocolo MCP
┌────────────────▼────────────────────────────────────┐
│         Servidor Job Matcher MCP                    │
│ ┌──────────────────────────────────────────────┐   │
│ │  Herramienta: search_jobs()                  │   │
│ │  - Consulta API de Adzuna                    │   │
│ │  - Analiza y estructura resultados           │   │
│ └──────────────────────────────────────────────┘   │
│ ┌──────────────────────────────────────────────┐   │
│ │  Herramienta: customize_resume()             │   │
│ │  - Envía a API de Claude                     │   │
│ │  - Analiza y devuelve currículum personalizado│   │
│ └──────────────────────────────────────────────┘   │
│ ┌──────────────────────────────────────────────┐   │
│ │  APIs Externas                               │   │
│ │  - API de Búsqueda de Empleo de Adzuna       │   │
│ │  - API de Anthropic Claude                   │   │
│ └──────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────┘

🔍 Solución de Problemas

Problema: ModuleNotFoundError: No module named 'anthropic'

Solución: Instala las dependencias

pip install -r requirements.txt

Problema: API request failed: Unauthorized

Solución: Verifica tus claves API en .env

# Verifica que las claves estén configuradas
echo $ADZUNA_APP_ID
echo $ANTHROPIC_API_KEY

Problema: No jobs found

Solución: Prueba con un puesto/ubicación diferente o aumenta max_results

# Intenta una búsqueda más amplia
jobs = server.search_jobs(
    role="Manager",  # Término más general
    location="New York, NY",
    experience_years=5,
    max_results=50
)

Problema: Claude API response too slow

Solución: Usa datos simulados para pruebas

resume = server.customize_resume(
    base_resume="...",
    job_description="...",
    use_mock_data=True  # Omite la llamada a la API
)

Problema: Rate limit exceeded

Solución: El nivel gratuito de Adzuna tiene límites. Implementa caché:

# Almacena resultados de búsqueda de empleo
cached_jobs = {}
key = f"{role}*{location}*{experience_years}"
if key not in cached_jobs:
    cached_jobs[key] = server.search_jobs(...)

🚢 Despliegue

Desplegar en Vercel

# 1. Crea una cuenta en Vercel en https://vercel.com
# 2. Instala la CLI de Vercel
npm install -g vercel
# 3. Despliega
vercel
# 4. Agrega variables de entorno en el panel de Vercel
# Settings → Environment Variables

Desplegar en Railway

# 1. Crea una cuenta en Railway en https://railway.app
# 2. Conecta tu repositorio de Git
# 3. Agrega variables de entorno en el panel de Railway

📊 Métricas de Rendimiento (Objetivo)

Operación

Tiempo Objetivo

Real

Búsqueda de empleo

<5 segundos

~2-3s

Personalización de currículum

<10 segundos

~3-5s

Búsqueda simulada

<100ms

~50ms

Personalización simulada

<500ms

~200ms


📚 Referencias de API


📝 Licencia

Licencia MIT - consulta el archivo LICENSE para más detalles.


👨‍💼 Autor

Creado para gerentes de producto tecnológicos en transición laboral.

Versión: 1.0.0
Última actualización: 2026-08-17
Estado: MVP Listo

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A job-search MCP server that ranks roles, drafts cover letters, and rehearses Q&A answers using a candidate profile, with live listings from five public sources.
    26 npm
    MIT
  • A
    license
    C
    quality
    C
    maintenance
    An MCP server that enables AI-assisted job search workflows including job discovery, application tracking, resume evaluation, and cover letter generation, with support for multiple job sources and scheduled scraping.
    83
    19 npm
    1
    AGPL 3.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that exposes job-search and application-management capabilities to compatible AI clients, enabling discovery of vacancies, drafting of tailored application materials, and coordinated human-approved submissions.
    MIT