Workhours Calendar MCP Server

Workhours Calendar MCP Server

Enables tracking worked hours by client, project, and task, with monthly/daily reports and natural language interaction through Claude.

Category
访问服务器

README

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 | sh

Windows (PowerShell):

irm https://raw.githubusercontent.com/gifflet/workhours-calendar/main/install.ps1 | iex

The 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_mongo volume; containers restart with Docker on boot
  • Re-run the script anytime to update (data is kept)
  • WORKHOURS_PORT changes the API port; MONGO_URL points to an external MongoDB (required on 32-bit ARM). Raspberry Pi 3/4 automatically get mongo:4.4, since MongoDB 5+ needs ARMv8.2-A.

Uninstall: docker rm -f workhours-api workhours-mongo && docker volume rm workhours_mongo

Use with Claude Code

Install the plugin once (user scope — available in every project):

/plugin marketplace add gifflet/workhours-calendar
/plugin install workhours@workhours-calendar

Then 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 POST/GET /clients, GET/PATCH/DELETE /clients/{id}
Projects POST/GET /projects (filter by client_id), GET/PATCH/DELETE /projects/{id}
Tasks POST/GET /tasks (filter by project_id, status), GET/PATCH/DELETE /tasks/{id}
Time entries POST/GET /entries (filter by dates, task, project, client), GET/PATCH/DELETE /entries/{id}
Reports GET /reports/monthly, GET /reports/daily, GET /reports/task/{task_id}
Health GET /health (includes MongoDB status)
  • Dates use YYYY-MM-DD; hours are decimal (1.5 = 1h30).
  • A time entry needs a task_id or a project_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:latest

The 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 8001

The 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.py

CI (.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 GHCR

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选