# 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