Skip to main content
Glama
noelserdna

CV Recruitment Assistant

by noelserdna
README.md
# CV Recruitment Assistant - Servidor MCP con Firma Digital

Este es un servidor MCP (Model Context Protocol) avanzado que funciona como asistente de reclutamiento para el CV de Brayan Smith Cordova Tasayco. **Todas las respuestas están firmadas digitalmente** para garantizar autenticidad e integridad.

## 🚀 Características Principales

- **15 herramientas MCP especializadas** para análisis de CV
- **Firma digital de todas las respuestas** (RSA + SHA-256)
- **Verificación de integridad** y autenticidad
- **Desarrollo local y producción** con manejo seguro de claves
- **Tests automatizados** para validar firmas digitales 

## 🔧 Configuración Inicial

### Para Desarrollo Local

1. **Generar claves criptográficas:**
   ```bash
   npm run setup-keys
   ```

2. **Iniciar servidor de desarrollo:**
   ```bash
   npm run dev
   ```

3. **Ejecutar tests (incluyendo validación de firmas):**
   ```bash
   npm test
   ```

### Para Producción (Cloudflare Workers)

1. **Configurar secrets en Cloudflare:**
   ```bash
   # Primero genera las claves localmente con npm run setup-keys
   # Luego copia las claves de .env.local y ejecuta:
   wrangler secret put MCP_PRIVATE_KEY
   wrangler secret put MCP_PUBLIC_KEY  
   wrangler secret put MCP_SERVER_ID
   ```

2. **Desplegar:**
   ```bash
   npm run deploy
   ```

Tu servidor estará disponible en: `https://your-worker-name.your-account.workers.dev`

## 🔐 Formato de Respuestas Firmadas

Todas las herramientas MCP devuelven respuestas en el siguiente formato firmado digitalmente:

```json
{
  "data": {
    // Datos originales de la herramienta MCP
  },
  "hash": "sha256_hash_de_los_datos",
  "signature": "firma_digital_en_base64",
  "timestamp": "2025-01-15T10:00:00Z",
  "publicKey": "-----BEGIN PUBLIC KEY-----\n...",
  "serverId": "cv-brayan-cordova-server",
  "version": "1.0"
}
```

### Verificación de Firmas

Usa la herramienta `verify_response_signature` para verificar cualquier respuesta:

```javascript
// Ejemplo de verificación desde un cliente MCP
const response = await mcpClient.callTool('get_candidate_profile');
const verifyResult = await mcpClient.callTool('verify_response_signature', {
    signedResponse: response.content[0].text
});
```

## 🛠️ Herramientas MCP Disponibles

### Información Básica (8 herramientas)
- `get_candidate_profile` - Perfil personal y resumen profesional
- `get_work_experience` - Experiencia laboral detallada
- `get_education_background` - Formación académica
- `get_certifications` - Certificaciones profesionales
- `get_technical_skills` - Habilidades técnicas categorizadas
- `get_soft_skills` - Habilidades blandas y idiomas
- `get_languages_interests` - Idiomas e intereses personales
- `search_candidate_info` - Búsqueda por palabras clave

### Presencia Online (3 herramientas) 
- `get_portfolio_website` - Sitio web personal y portfolio
- `get_github_profile` - Información de perfil GitHub
- `get_social_networks` - Redes sociales y presencia online

### Análisis Avanzado (4 herramientas)
- `evaluate_tech_stack` - Evalúa compatibilidad con tecnologías
- `assess_leadership_experience` - Analiza experiencia de liderazgo  
- `calculate_experience_years` - Calcula años de experiencia por tecnología
- `match_job_requirements` - Matching contra requisitos de trabajo

### Debugging (2 herramientas)
- `verify_response_signature` - Verifica firmas digitales
- `get_server_public_key` - Obtiene clave pública del servidor

## 🌐 Conexiones y Uso

### Cloudflare AI Playground

1. Ve a https://playground.ai.cloudflare.com/
2. Ingresa la URL de tu servidor: `https://your-worker-name.your-account.workers.dev/sse`
3. **Nota**: Todas las respuestas estarán firmadas digitalmente. Los datos originales están en el campo `data` de cada respuesta.

### Claude Desktop

Conecta tu servidor MCP a Claude Desktop usando el [mcp-remote proxy](https://www.npmjs.com/package/mcp-remote):

1. Sigue la [Guía de Anthropic](https://modelcontextprotocol.io/quickstart/user)
2. En Claude Desktop: Settings > Developer > Edit Config
3. Usa esta configuración:

```json
{
  "mcpServers": {
    "cv-recruitment-assistant": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "http://localhost:8787/sse"  // Local
        // "https://your-worker-name.your-account.workers.dev/sse"  // Producción
      ]
    }
  }
}
```

4. Reinicia Claude Desktop

**Importante**: Claude recibirá todas las respuestas firmadas digitalmente. Para acceder a los datos, usa `response.data` en lugar de `response` directamente.

## 🧪 Testing y Validación

- `npm test` - Ejecuta todos los tests incluyendo validación de firmas
- `npm run test:crypto` - Solo tests criptográficos 
- `npm run test:mcp` - Solo tests de herramientas MCP

## 📁 Estructura del Proyecto

```
src/
├── index.ts              # Servidor MCP principal con 17 herramientas
├── crypto.ts             # Sistema de firma digital
└── candidate-data.json   # Datos del CV estructurados

scripts/
└── generate-keys.js      # Generador de claves para desarrollo

tests/
├── run-tests.js          # Suite completa de tests
├── crypto.test.js        # Tests específicos de criptografía
└── mcp-tools.test.js     # Tests de herramientas MCP
```

## 🔒 Seguridad y Cumplimiento

Este servidor implementa las mejores prácticas de seguridad:

- **Firma digital RSA-2048** de todas las respuestas
- **Verificación SHA-256** de integridad de datos
- **Claves privadas seguras** en Cloudflare Workers secrets
- **Trazabilidad completa** con timestamps y server IDs
- **Preparado para regulaciones** (GDPR, AI Act)

## 📄 Documentación Adicional

- [CLAUDE.md](./CLAUDE.md) - Instrucciones específicas para Claude Code
- [TESTING.md](./TESTING.md) - Documentación detallada de testing
- [docs/](./docs/) - Documentación técnica del proyecto