Provides access to WakaTime coding analytics, including detailed statistics for various time periods, activity breakdowns by project, all-time coding totals, current day status, and project listing/searching capabilities.
WakaTime MCP Server
A Model Context Protocol (MCP) server that provides high-signal coding analytics from your WakaTime data.
Direct mode: FastMCP serves Streamable HTTP at
http://localhost:8000/mcpProxy mode:
mcp-proxyexposes the server over SSE/HTTP and Caddy adds token auth (recommended for self-hosting)
Tooling / API
Tool | Purpose | Key arguments |
| Detailed stats for a period |
|
| Activity breakdown for a date/range |
|
| Total coding time since account creation |
|
| Current day status (like editor status bar) | (none) |
| List/search tracked projects |
|
Configuration
Configure via environment variables (or a .env file for the self-hosted scripts).
Variable | Description | Required |
| Your API key from https://wakatime.com/settings/api-key | Yes |
| Token for auth proxy (proxy/self-hosted mode) | Proxy mode |
| Direct-mode port (default: | No |
Development (Direct mode)
Install (uv required)
git clone https://github.com/dpshade/wakatime-mcp.git cd wakatime-mcp uv sync --no-install-projectRun
WAKATIME_API_KEY="your_wakatime_api_key_here" uv run -- python src/server.pyConnect
URL:
http://localhost:8000/mcpAuth: none
Deployment
Option 1: Self-hosted with auth (recommended)
This mode runs the MCP server with FastMCP’s default stdio transport and uses mcp-proxy to expose it over HTTP:
Configure
cp .env.example .env # Edit .env: set WAKATIME_API_KEY and a strong MCP_AUTH_KEYDownload Caddy (auth proxy)
curl -L https://github.com/caddyserver/caddy/releases/latest/download/caddy_linux_amd64 -o deploy/caddy chmod +x deploy/caddyStart
./deploy/start.shEndpoints
Auth proxy (recommended):
SSE:
http://localhost:8770/sseStreamable HTTP:
http://localhost:8770/mcp
Internal (no auth; do not expose publicly):
SSE:
http://localhost:8767/sseStreamable HTTP:
http://localhost:8767/mcp
mcp-proxy also exposes a health endpoint at http://localhost:8767/status (and via auth proxy at http://localhost:8770/status).
Systemd (persistent)
Optional: Tailscale Funnel
If you use Tailscale, you can publish the auth proxy port:
Option 2: Docker
Runs mcp-proxy + the server in a container.
Endpoint (no auth):
http://localhost:8767/sseIf you want auth, run Caddy on the host (or add it to your own compose stack) and proxy to
8767.
Option 3: Render
This repo includes render.yaml for deploying the direct Python server.
Set environment variable:
WAKATIME_API_KEYYour service endpoint will be:
https://<your-service>/mcp
Client setup
MCP Inspector
Then connect using:
Direct mode:
http://localhost:8000/mcp(Streamable HTTP)Proxy mode:
http://localhost:8770/sse(SSE)
Poke / other hosted clients (proxy mode)
Use the auth proxy SSE endpoint and send MCP_AUTH_KEY via one of:
Authorization: Bearer <MCP_AUTH_KEY>X-API-Key: <MCP_AUTH_KEY>Api-Key: <MCP_AUTH_KEY>
Security notes
Generate a strong auth key:
openssl rand -hex 32Never expose the unauthenticated
mcp-proxyport (8767) to the public internet.
License
MIT