harvest-mcp-server
Integración de seguimiento de tiempo de Harvest con más de 40 herramientas para gestionar registros de tiempo, proyectos, clientes, tareas y generar informes de tiempo a través de la API v2 de Harvest
Documentación
🌾 Servidor MCP de Harvest
No oficial Servidor de Protocolo de Contexto de Modelo (MCP) para integración perfecta con la API de seguimiento de tiempo de Harvest
⚠️ Aviso: Esta es una integración no oficial de terceros con la API de Harvest. Este proyecto no está afiliado, respaldado ni patrocinado por Harvest o Forecast (la empresa detrás de Harvest).
✨ Características
- 🔗 Cobertura completa de la API v2 de Harvest - Más de 40 herramientas que cubren todos los endpoints principales
- 🛡️ Seguridad de tipos - Soporte completo de TypeScript con validación Zod
- ⚡ Alto rendimiento - Construido con async/await y limitación de velocidad adecuada
- 🧪 Probado exhaustivamente - Pruebas unitarias, de integración y de contrato integrales
- 📊 Registro enriquecido - Registro estructurado para depuración y monitoreo
- 🔄 Reintento automático - Lógica de reintento inteligente con retroceso exponencial
- 📖 Compatible con MCP - Funciona con Claude Desktop y otros clientes MCP
🚀 Inicio rápido
Requisitos previos
- Node.js 18+
- Cuenta de Harvest con acceso a la API
- Cliente compatible con MCP (como Claude Desktop)
Instalación
# Install globally
npm install -g @ianaleck/harvest-mcp-server
# Or install locally
npm install @ianaleck/harvest-mcp-server
Configuración
-
Obtén tus credenciales de la API de Harvest:
- Ve a Harvest → Configuración → Desarrolladores → Tokens de acceso personal
- Crea un nuevo token
- Anota tu ID de cuenta (visible en la URL o en la configuración)
-
Configura tu cliente MCP (por ejemplo, Claude Desktop):
{
"mcpServers": {
"harvest": {
"command": "npx",
"args": ["-y", "@ianaleck/harvest-mcp-server"],
"env": {
"HARVEST_ACCESS_TOKEN": "your_harvest_personal_access_token",
"HARVEST_ACCOUNT_ID": "your_harvest_account_id"
}
}
}
}
- ¡Comienza a usar con Claude!
🎯 Lo que puedes hacer
Una vez conectado, puedes pedirle a Claude que te ayude con:
⏱️ Seguimiento de tiempo
- "Muéstrame todas mis entradas de tiempo de esta semana"
- "Inicia un temporizador para la tarea 'Desarrollo' en el 'Proyecto del sitio web'"
- "¿Cuántas horas trabajé en el Proyecto X el mes pasado?"
📋 Gestión de proyectos
- "Lista todos los proyectos activos del cliente Acme Corp"
- "Crea un nuevo proyecto llamado 'Aplicación móvil' para el cliente TechStart"
- "Muéstrame el presupuesto del proyecto frente al tiempo real invertido"
👥 Gestión de equipo
- "¿Quiénes son todos los usuarios en nuestra cuenta de Harvest?"
- "Muéstrame las entradas de tiempo de Juan de la semana pasada"
💰 Seguimiento financiero
- "Genera un informe de gastos para el cuarto trimestre"
- "Muéstrame todas las facturas impagas"
- "¿Cuál es nuestro total de horas facturables este mes?"
🛠️ Herramientas disponibles
📊 Empresa y cuenta (1 herramienta)
get_company- Obtener información y configuración de la empresa
⏰ Entradas de tiempo (8 herramientas)
list_time_entries- Listar entradas de tiempo con filtrosget_time_entry- Obtener detalles de una entrada de tiempo específicacreate_time_entry- Crear nueva entrada de tiempoupdate_time_entry- Actualizar entrada de tiempo existentedelete_time_entry- Eliminar entrada de tiempostart_timer- Iniciar un temporizador para una tareastop_timer- Detener temporizador en ejecuciónrestart_timer- Reiniciar una entrada de tiempo anterior
🏗️ Proyectos (7 herramientas)
list_projects- Listar todos los proyectos con filtrosget_project- Obtener detalles de un proyecto específicocreate_project- Crear nuevo proyectoupdate_project- Actualizar detalles del proyectodelete_project- Eliminar proyectolist_project_task_assignments- Listar asignaciones de tareas para un proyectocreate_project_task_assignment- Asignar tarea a un proyectoupdate_project_task_assignment- Actualizar asignación de tareadelete_project_task_assignment- Eliminar asignación de tarea
📝 Tareas (5 herramientas)
list_tasks- Listar todas las tareasget_task- Obtener detalles de una tarea específicacreate_task- Crear nueva tareaupdate_task- Actualizar detalles de la tareadelete_task- Eliminar tarea
🏢 Clientes (5 herramientas)
list_clients- Listar todos los clientesget_client- Obtener detalles de un cliente específicocreate_client- Crear nuevo clienteupdate_client- Actualizar detalles del clientedelete_client- Eliminar cliente
👤 Usuarios (6 herramientas)
list_users- Listar todos los usuarios en la cuentaget_user- Obtener detalles de un usuario específicoget_current_user- Obtener el usuario autenticado actualcreate_user- Crear nuevo usuarioupdate_user- Actualizar detalles del usuariodelete_user- Eliminar usuario
💸 Gastos (6 herramientas)
list_expenses- Listar gastos con filtrosget_expense- Obtener detalles de un gasto específicocreate_expense- Crear nuevo gastoupdate_expense- Actualizar detalles del gastodelete_expense- Eliminar gastolist_expense_categories- Listar todas las categorías de gastos
🧾 Facturas (5 herramientas)
list_invoices- Listar facturas con filtrosget_invoice- Obtener detalles de una factura específicacreate_invoice- Crear nueva facturaupdate_invoice- Actualizar detalles de la facturadelete_invoice- Eliminar factura
📋 Presupuestos (5 herramientas)
list_estimates- Listar presupuestos con filtrosget_estimate- Obtener detalles de un presupuesto específicocreate_estimate- Crear nuevo presupuestoupdate_estimate- Actualizar detalles del presupuestodelete_estimate- Eliminar presupuesto
📈 Informes (4 herramientas)
get_time_report- Generar informes de tiempo con filtrosget_expense_report- Generar informes de gastosget_project_budget_report- Obtener análisis de presupuesto del proyectoget_uninvoiced_report- Obtener tiempo y gastos no facturados
🧪 Desarrollo
Configuración
git clone https://github.com/ianaleck/harvest-mcp-server.git
cd harvest-mcp-server
npm install
Configuración del entorno
cp .env.example .env
# Edit .env with your Harvest API credentials
Pruebas
# Run all tests
npm test
# Run with coverage
npm run test:coverage
# Run specific test suites
npm run test:unit
npm run test:integration
npm run test:contract
Compilación
# Build for production
npm run build
# Start development server
npm run dev
📋 Requisitos de la API
Este servidor requiere una cuenta de Harvest con acceso a la API. Los usuarios deben cumplir con:
- Términos de servicio de la API de Harvest
- Límites de velocidad de la API de Harvest (100 solicitudes por 15 segundos)
🤝 Contribuciones
¡Damos la bienvenida a las contribuciones! Consulta nuestras Pautas de contribución para más detalles.
- Haz un fork del repositorio
- Crea una rama de características (
git checkout -b feature/amazing-feature) - Realiza tus cambios con pruebas
- Asegúrate de que todas las pruebas pasen (
npm test) - Confirma tus cambios (
git commit -m 'Add amazing feature') - Sube la rama (
git push origin feature/amazing-feature) - Abre una solicitud de extracción
📄 Licencia
Este proyecto está licenciado bajo la Licencia MIT - consulta el archivo LICENCIA para más detalles.
🙏 Agradecimientos
- Harvest por proporcionar una excelente API de seguimiento de tiempo
- Equipo de Protocolo de Contexto de Modelo por la especificación MCP
- Anthropic por Claude y el SDK de MCP
📞 Soporte
- 🐛 Informes de errores: Problemas de GitHub
- 💡 Solicitudes de funciones: Discusiones de GitHub
- 📖 Documentación: Documentación de MCP
Hecho con ❤️ para la comunidad MCP
⭐ Marca este proyecto con una estrella si te resulta útil.