Workhours Calendar MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Workhours Calendar MCP ServerLog 2.5 hours today on the CI pipeline task of ACME's ERP project"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Workhours Calendar
Track worked hours by client → project → task. At the end of the month, see how many hours went into each project or client, how long a task took, and what was worked on any given day — via REST API, Swagger UI, or by just asking Claude (MCP server + Claude Code plugin included).
Install
The only requirement is Docker.
Linux / macOS / Raspberry Pi:
curl -fsSL https://raw.githubusercontent.com/gifflet/workhours-calendar/main/install.sh | shWindows (PowerShell):
irm https://raw.githubusercontent.com/gifflet/workhours-calendar/main/install.ps1 | iexThe script pulls the prebuilt multi-arch images (amd64, arm64, arm/v7),
starts MongoDB and the API, and waits until everything is healthy:
API: http://localhost:8001 — Swagger UI: http://localhost:8001/docs
Data persists in the
workhours_mongovolume; containers restart with Docker on bootRe-run the script anytime to update (data is kept)
WORKHOURS_PORTchanges the API port;MONGO_URLpoints to an external MongoDB (required on 32-bit ARM). Raspberry Pi 3/4 automatically getmongo:4.4, since MongoDB 5+ needs ARMv8.2-A.
Uninstall: docker rm -f workhours-api workhours-mongo && docker volume rm workhours_mongo
Related MCP server: Time Tracking MCP
Use with Claude Code
Install the plugin once (user scope — available in every project):
/plugin marketplace add gifflet/workhours-calendar
/plugin install workhours@workhours-calendarThen just ask in natural language:
"Log 2.5 hours today on the CI pipeline task of ACME's ERP project"
"How many hours did I work for ACME in August?"
"Which tasks did I work on yesterday?"
The plugin bundles the MCP server (prebuilt Docker image — nothing to clone or
build) and a skill that teaches the model the workflows: resolve names to ids,
create missing clients/projects/tasks on demand, and answer report questions
with a single tool call. Source: plugins/workhours.
API
Interactive docs at /docs (Swagger UI) and /redoc.
Resource | Endpoints |
Clients |
|
Projects |
|
Tasks |
|
Time entries |
|
Reports |
|
Health |
|
Dates use
YYYY-MM-DD; hours are decimal (1.5= 1h30).A time entry needs a
task_idor aproject_id; client and project are denormalized into the entry automatically for fast reporting.Deletes are guarded: a client/project/task with children or time entries can't be deleted (HTTP 409).
# Hours in August 2026, broken down by client, project, task and day
curl "http://localhost:8001/reports/monthly?year=2026&month=8"
# What was worked on a specific day
curl "http://localhost:8001/reports/daily?date=2026-08-12"
# Total effort spent on a task
curl "http://localhost:8001/reports/task/<task_id>"Other MCP clients
The MCP server exposes 14 tools over stdio (create_client, log_hours,
monthly_report, daily_report, task_report, ...). To register it outside
the Claude Code plugin, run the published image with -i:
claude mcp add workhours \
-- docker run -i --rm \
--add-host host.docker.internal:host-gateway \
-e WORKHOURS_API_URL=http://host.docker.internal:8001 \
ghcr.io/gifflet/workhours-calendar-mcp:latestThe WORKHOURS_API_URL environment variable points the server at the API.
Development
# Everything in containers (builds locally)
docker compose up --build
# Or API on the host (needs MongoDB on localhost:27017 — uncomment the
# ports mapping in docker-compose.yaml to publish the mongodb service)
python3 -m venv .venv
.venv/bin/pip install -r requirements.txt
.venv/bin/uvicorn app.main:app --reload --port 8001The API reads MONGO_URL (default mongodb://localhost:27017) and MONGO_DB
(default workhours). The repo ships a project-scoped .mcp.json that runs
the MCP server from the local venv. Test it standalone with:
npx @modelcontextprotocol/inspector .venv/bin/python mcp_server/server.pyCI (.github/workflows/docker-build.yml) builds and publishes
ghcr.io/gifflet/workhours-calendar-api and ...-mcp for linux/amd64,
linux/arm64 and linux/arm/v7 on every push to main and on v* tags;
pull requests build without publishing.
app/ # FastAPI app (routers, schemas, Mongo access)
mcp_server/ # MCP stdio server calling the API
plugins/workhours/ # Claude Code plugin (skill + MCP via Docker image)
.claude-plugin/ # Plugin marketplace manifest
install.sh install.ps1 # One-command installers
Dockerfile Dockerfile.mcp # API and MCP server images
docker-compose.yaml
.github/workflows/docker-build.yml # Multi-arch build + publish to GHCRThis server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityFmaintenanceIntegrates Clockify time tracking directly into Claude Desktop, enabling users to start/stop timers, manage projects and clients, create tasks, generate reports, and track productivity through natural language commands.313MIT
- -licenseAquality-maintenanceEnables natural language time tracking through Claude with markdown file storage. Supports multi-company tracking, flexible time parsing, auto-calculated summaries, and commitment warnings all through conversational input.1
- Flicense-qualityCmaintenanceIntegrates with Clockify to manage time entries through natural language prompts, allowing users to register and track their work time directly via LLM conversations.26
- AlicenseAqualityAmaintenanceEnables tracking work time with start/stop timers, logging entries, and generating reports.410MIT
Related MCP Connectors
Manage projects, tasks, time tracking, and team collaboration through natural language.
Persistent context for Claude. Your AI always knows your projects and next actions across sessions.
WHOOP recovery, strain, sleep and workouts in Claude via official WHOOP OAuth. Free, open source.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/gifflet/workhours-calendar'
If you have feedback or need assistance with the MCP directory API, please join our Discord server