stefanskiasan/everhour-mcp-server
If you are the rightful owner of everhour-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
The Everhour MCP Server provides a comprehensive integration with the Everhour API, enabling seamless management of time tracking, projects, tasks, and team productivity workflows through the Model Context Protocol.
@everhour/mcp-server
Complete Everhour API integration for Model Context Protocol (MCP) with 100% endpoint coverage
A comprehensive MCP server that provides seamless integration with the Everhour API, enabling AI assistants like Claude to manage time tracking, projects, tasks, and team productivity workflows.
š Quick Start
Installation
# Using npx (recommended)
npx @everhour/mcp-server
# Or install globally
npm install -g @everhour/mcp-server
everhour-mcp-server
Prerequisites
- Node.js 18+
- Everhour account with paid plan (API access required)
- Everhour API key (get it from Everhour Settings ā My Profile)
Configuration
Set your Everhour API key as an environment variable:
export EVERHOUR_API_KEY=\"your_api_key_here\"
š MCP Client Setup
Claude Desktop
Add to your Claude Desktop configuration:
{
\"mcpServers\": {
\"everhour\": {
\"command\": \"npx\",
\"args\": [\"@everhour/mcp-server\"],
\"env\": {
\"EVERHOUR_API_KEY\": \"your_api_key_here\"
}
}
}
}
Other MCP Clients
For other MCP-compatible clients, use:
# Command
npx @everhour/mcp-server
# Environment Variables
EVERHOUR_API_KEY=your_api_key_here
⨠Features
šÆ 100% API Coverage
All 37 available Everhour API endpoints implemented as MCP tools
š Complete Functionality
- Project Management: Create, update, list, and delete projects
- Task Management: Full CRUD operations with estimates and time logging
- Time Tracking: Comprehensive time record management
- Timer Control: Start, stop, and monitor active timers
- Client Management: Manage clients and business details
- Section Organization: Project section management
- Team Collaboration: User and team member management
š§ Developer-Friendly
- TypeScript: Full type safety and IntelliSense support
- Input Validation: Comprehensive validation with detailed error messages
- Human-Readable: Time formats like "2h 30m" alongside seconds
- Error Handling: Graceful error handling with helpful messages
š§ Available Tools (37 total)
Projects (5 tools)
everhour_list_projects
- List all projects with filtering optionseverhour_get_project
- Get details of a specific projecteverhour_create_project
- Create a new projecteverhour_update_project
- Update project detailseverhour_delete_project
- Delete a project
Tasks (11 tools)
Core Task Management:
everhour_list_tasks
- List tasks with filtering by project, status, assigneeeverhour_get_task
- Get details of a specific taskeverhour_create_task
- Create a new taskeverhour_update_task
- Update task detailseverhour_delete_task
- Delete a task
Extended Task Features:
everhour_get_tasks_for_project
- Get all tasks for specific projecteverhour_update_task_estimate
- Update task estimateeverhour_delete_task_estimate
- Delete task estimateeverhour_add_time_to_task
- Add time directly to taskeverhour_update_task_time
- Update task timeeverhour_delete_task_time
- Delete time from task
Time Records (5 tools)
everhour_list_time_records
- List time records with date/project filteringeverhour_get_time_record
- Get details of a specific time recordeverhour_create_time_record
- Log time (supports human-readable formats)everhour_update_time_record
- Update existing time recordseverhour_delete_time_record
- Delete a time record
Timers (7 tools)
Core Timer Functions:
everhour_get_current_timer
- Get the currently running timereverhour_start_timer
- Start a new timereverhour_stop_timer
- Stop the current timereverhour_list_timers
- List timer historyeverhour_timer_status
- Get timer status summary
Extended Timer Features:
everhour_get_running_timer
- Get running timer (alternative endpoint)everhour_start_timer_for_task
- Start timer directly for specific task
Clients (5 tools)
everhour_list_clients
- List all clientseverhour_get_client
- Get details of a specific clienteverhour_create_client
- Create a new clienteverhour_update_client
- Update client detailseverhour_delete_client
- Delete a client
Sections (5 tools)
everhour_list_all_sections
- List all sections (global search)everhour_get_section
- Get details of a specific sectioneverhour_create_section
- Create a new sectioneverhour_update_section
- Update section detailseverhour_delete_section
- Delete a section
Users & Team Management (3 tools)
everhour_get_current_user
- Get current user profileeverhour_list_team_users
- List all team userseverhour_get_user
- Get details of a specific team user
š Examples
Starting a Timer
{
\"tool\": \"everhour_start_timer_for_task\",
\"arguments\": {
\"taskId\": \"task_123\",
\"comment\": \"Working on user authentication feature\"
}
}
Logging Time
{
\"tool\": \"everhour_create_time_record\",
\"arguments\": {
\"time\": \"2h 30m\",
\"date\": \"2024-01-15\",
\"task\": \"task_123\",
\"comment\": \"Implemented login functionality and wrote tests\"
}
}
Creating a Project
{
\"tool\": \"everhour_create_project\",
\"arguments\": {
\"name\": \"Mobile App Development\",
\"client\": 456,
\"type\": \"board\",
\"billing\": {
\"type\": \"hourly_rate\",
\"rate\": 85.00
}
}
}
Getting Project Tasks
{
\"tool\": \"everhour_get_tasks_for_project\",
\"arguments\": {
\"projectId\": \"proj_789\",
\"status\": \"open\"
}
}
š Time Format Support
The server supports flexible time input formats:
- Human-readable:
\"2h 30m\"
,\"90m\"
,\"1h 30m 45s\"
- Minutes only:
\"90m\"
(90 minutes) - Seconds:
3600
(1 hour in seconds)
š§ Environment Variables
Variable | Required | Default | Description |
---|---|---|---|
EVERHOUR_API_KEY | ā Yes | - | Your Everhour API key |
EVERHOUR_API_BASE_URL | ā No | https://api.everhour.com | API base URL |
EVERHOUR_READONLY_MODE | ā No | false | Enable readonly mode for safety |
š Readonly Mode
Readonly mode provides an additional security layer by blocking all write and delete operations, allowing only safe read operations.
When to Use Readonly Mode
- Production environments where data integrity is critical
- Reporting and analytics use cases
- Shared or untrusted environments
- Testing and development with live data
- Compliance requirements for read-only access
Enabling Readonly Mode
# Via environment variable
EVERHOUR_READONLY_MODE=true npx @everhour/mcp-server
# Or export for session
export EVERHOUR_READONLY_MODE=true
npx @everhour/mcp-server
Claude Desktop Readonly Configuration
{
"mcpServers": {
"everhour-readonly": {
"command": "npx",
"args": ["@everhour/mcp-server"],
"env": {
"EVERHOUR_API_KEY": "your_api_key_here",
"EVERHOUR_READONLY_MODE": "true"
}
}
}
}
What's Blocked in Readonly Mode
- ā Creating: Projects, tasks, clients, sections, time records
- ā Updating: Any modifications to existing data
- ā Deleting: Removal of any resources
- ā Timer Control: Starting/stopping timers
- ā Time Logging: Adding or modifying time entries
What's Allowed in Readonly Mode
- ā
Listing: All list operations (
everhour_list_*
) - ā
Reading: All get operations (
everhour_get_*
) - ā Status Checks: Timer status, user information
- ā Searching: Project, task, and client searches
- ā Reports: Time record queries and analytics
Readonly Mode Status
When the server starts, it will log the current mode:
š EVERHOUR MCP SERVER - READONLY MODE ACTIVE
Available tools: 19/37
Blocked tools: 18 (write/delete operations)
To enable full mode: Set EVERHOUR_READONLY_MODE=false
Or in full mode:
š EVERHOUR MCP SERVER - FULL MODE ACTIVE
All 37 tools available
To enable readonly mode: Set EVERHOUR_READONLY_MODE=true
š Documentation
- - Complete endpoint mapping
- - Comprehensive usage examples
- Official Everhour API - Official API documentation
š Development
Local Development
# Clone repository
git clone https://github.com/yourusername/everhour-mcp-server.git
cd everhour-mcp-server
# Install dependencies
npm install
# Set environment variables
cp .env.example .env
# Edit .env with your API key
# Development mode
npm run dev
# Build
npm run build
# Run built version
npm start
Project Structure
src/
āāā api/
ā āāā everhour-client.ts # Everhour API client
āāā tools/
ā āāā clients.ts # Client management tools
ā āāā projects.ts # Project management tools
ā āāā tasks.ts # Task management tools
ā āāā task-extensions.ts # Extended task features
ā āāā time-records.ts # Time record tools
ā āāā timers.ts # Timer control tools
ā āāā sections.ts # Section management tools
ā āāā users.ts # User management tools
āāā types/
ā āāā everhour.ts # TypeScript type definitions
āāā index.ts # MCP server entry point
Scripts
npm run dev
- Development mode with auto-reloadnpm run build
- Build TypeScript to JavaScriptnpm start
- Start the built servernpm run lint
- Run ESLintnpm run lint:fix
- Fix ESLint issuesnpm run clean
- Clean build directory
š¤ Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
š License
This project is licensed under the MIT License - see the file for details.
š Links
š Support
- Issues: GitHub Issues
- Everhour API: Official Documentation
- MCP Protocol: MCP Documentation
š Features
- ā Complete API Coverage - All 37 Everhour endpoints
- ā Type Safety - Full TypeScript implementation
- ā Input Validation - Comprehensive validation with Zod
- ā Error Handling - Graceful error handling
- ā Human-Readable - Time formats and clear responses
- ā Well-Documented - Extensive documentation and examples
- ā Production-Ready - Robust and reliable implementation
Made with ā¤ļø for the Model Context Protocol community