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.
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., "@WakaTime MCP Serverget my coding stats for the last 7 days"
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.
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:
Internet -> (optional Tailscale Funnel) -> Caddy (auth) -> mcp-proxy -> FastMCP (stdio)
:8770 :8767Configure
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)
./deploy/install-systemd.sh
sudo systemctl enable --now mcp-wakatime mcp-wakatime-authOptional: Tailscale Funnel
If you use Tailscale, you can publish the auth proxy port:
tailscale funnel --bg --set-path=/wakatime localhost:8770
tailscale funnel --bg 443 onOption 2: Docker
Runs mcp-proxy + the server in a container.
cd deploy
docker-compose up -dEndpoint (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
npx @modelcontextprotocol/inspectorThen 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
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.