WakaTime MCP by usefulapi

Read your WakaTime coding time: summaries, stats, projects, goals, commits and leaderboards.

사용해야 할까요

품질 및 안전성

A
설명 품질
100%
스키마 완전성
84%
이름 품질
75%
오염 위험
100%
권한 일치
100%
프로토콜 준수
100%

발견 사항 (6)

  • LOWTool 'wakatime_get_all_time_since_today' name length outside 3-30 rangewakatime_get_all_time_since_today에서
  • LOWTool 'wakatime_list_org_dashboard_members' name length outside 3-30 rangewakatime_list_org_dashboard_members에서
  • LOWTool 'wakatime_get_org_dashboard_summaries' name length outside 3-30 rangewakatime_get_org_dashboard_summaries에서
  • LOWTool 'wakatime_get_org_member_summaries' name length outside 3-30 rangewakatime_get_org_member_summaries에서
  • LOWTool 'wakatime_list_private_leaderboards' name length outside 3-30 rangewakatime_list_private_leaderboards에서
  • LOWTool 'wakatime_get_private_leaderboard' name length outside 3-30 rangewakatime_get_private_leaderboard에서

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~5,237토큰 (도구 정의)
~1.5 KB일반적인 응답 크기
상당한 주의 영향 (128k 컨텍스트의 4.09%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`claude_desktop_config.json` 파일에 다음을 추가하세요:

{
  "mcpServers": {
    "wakatime": {
      "url": "https://wakatime.usefulapi.io/mcp"
    }
  }
}

원격 엔드포인트

https://wakatime.usefulapi.io/mcpstreamable-http

할 수 있는 일

도구 목록

도구 (23)

🟢 읽기 전용🟡 쓰기🔴 삭제⚪ 알 수 없음
🟢wakatime_get_user

The WakaTime user this key belongs to: id, username, display name, email, timezone, plan, last plugin/project/branch and last heartbeat time. GET /users/current.

입력 스키마

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢wakatime_get_summaries(start, end, range, project, branches, ...)

Coding activity as one summary per day for a date range: grand total plus breakdowns by project, language, editor, operating system, category, dependencies and machine, with cumulative total and daily average. Give start and end, or one named range. Use project (and branches) to also get per-branch and per-file entities. GET /users/current/summaries.

입력 스키마

{
  "type": "object",
  "properties": {
    "start": {
      "description": "First day, yyyy-mm-dd (with end).",
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
    },
    "end": {
      "description": "Last day, yyyy-mm-dd, inclusive (with start).",
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
    },
    "range": {
      "type": "string",
      "enum": [
        "Today",
        "Yesterday",
        "Last 7 Days",
        "Last 7 Days from Yesterday",
        "Last 14 Days",
        "Last 30 Days",
        "This Week",
        "Last Week",
        "This Month",
        "Last Month"
      ],
      "description": "Alternative to start and end."
    },
    "project": {
      "description": "Only time logged to this project.",
      "type": "string",
      "minLength": 1,
      "maxLength": 500
    },
    "branches": {
      "type": "string",
      "minLength": 1,
      "maxLength": 500,
      "description": "Comma separated branch names; needs project."
    },
    "timezone": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64,
      "pattern": "^[A-Za-z0-9_+\\-/]+$",
      "description": "IANA timezone such as Europe/Berlin (default: the user's timezone)."
    },
    "timeout": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 1440,
      "description": "Keystroke timeout in minutes (default: the user's preference)."
    },
    "writes_only": {
      "type": "boolean",
      "description": "Only count heartbeats that were file writes (default: the user's preference)."
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢wakatime_get_stats(range, timeout, writes_only)

Aggregated coding stats for a range: total time, daily average, best day, AI vs human line changes, and the full breakdown by language, project, editor, operating system, category, dependencies and machine. If the reply says it is still calculating, call again shortly. GET /users/current/stats/{range}.

입력 스키마

{
  "type": "object",
  "properties": {
    "range": {
      "default": "last_7_days",
      "type": "string",
      "pattern": "^(?:last_7_days|last_30_days|last_6_months|last_year|all_time|\\d{4}|\\d{4}-(?:0[1-9]|1[0-2]))$",
      "description": "Time range: last_7_days, last_30_days, last_6_months, last_year, all_time, a year (2026) or a month (2026-09)."
    },
    "timeout": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 1440,
      "description": "Keystroke timeout in minutes (default: the user's preference)."
    },
    "writes_only": {
      "type": "boolean",
      "description": "Only count heartbeats that were file writes (default: the user's preference)."
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢wakatime_get_all_time_since_today(project)

Total coding time since the user's WakaTime account (or one project) was created, with daily average and the range covered. GET /users/current/all_time_since_today.

입력 스키마

{
  "type": "object",
  "properties": {
    "project": {
      "description": "Only this project's total.",
      "type": "string",
      "minLength": 1,
      "maxLength": 500
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢wakatime_get_status_bar_today

Today's coding activity as shown in an editor status bar: grand total plus breakdowns by project, language, editor and more. Cached data only; an empty summary means the cache is still being filled. GET /users/current/status_bar/today.

입력 스키마

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢wakatime_get_insight(insight_type, range, weekday, timeout, writes_only)

One WakaTime insight for a range: stats, weekdays (average per weekday), days (per-day totals, optionally one weekday), ai_days, best_day, daily_average, or a breakdown by projects, languages, editors, categories, machines or operating_systems. GET /users/current/insights/{insight_type}/{range}.

입력 스키마

{
  "type": "object",
  "properties": {
    "insight_type": {
      "type": "string",
      "enum": [
        "stats",
        "weekdays",
        "days",
        "ai_days",
        "best_day",
        "daily_average",
        "projects",
        "languages",
        "editors",
        "categories",
        "machines",
        "operating_systems"
      ]
    },
    "range": {
      "default": "last_year",
      "type": "string",
      "pattern": "^(?:last_7_days|last_30_days|last_6_months|last_year|all_time|\\d{4}|\\d{4}-(?:0[1-9]|1[0-2]))$",
      "description": "Time range: last_7_days, last_30_days, last_6_months, last_year, all_time, a year (2026) or a month (2026-09)."
    },
    "weekday": {
      "description": "Only for insight_type 'days': a weekday, 0-6 or monday..sunday.",
      "anyOf": [
        {
          "type": "integer",
          "minimum": 0,
          "maximum": 6
        },
        {
          "type": "string",
          "enum": [
            "monday",
            "tuesday",
            "wednesday",
            "thursday",
            "friday",
            "saturday",
            "sunday"
          ]
        }
      ]
    },
    "timeout": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 1440,
      "description": "Keystroke timeout in minutes (default: the user's preference)."
    },
    "writes_only": {
      "type": "boolean",
      "description": "Only count heartbeats that were file writes (default: the user's preference)."
    }
  },
  "required": [
    "insight_type"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢wakatime_get_durations(date, project, branches, timezone, slice_by, ...)

The coding sessions (durations) of one day, each with start time, length in seconds and the project (or other slice) it belongs to. Needs the read_heartbeats scope for OAuth tokens. GET /users/current/durations.

입력 스키마

{
  "type": "object",
  "properties": {
    "date": {
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
      "description": "The day, yyyy-mm-dd, in the user's timezone."
    },
    "project": {
      "description": "Only durations for this project.",
      "type": "string",
      "minLength": 1,
      "maxLength": 500
    },
    "branches": {
      "type": "string",
      "minLength": 1,
      "maxLength": 500,
      "description": "Comma separated branch names; needs project."
    },
    "timezone": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64,
      "pattern": "^[A-Za-z0-9_+\\-/]+$",
      "description": "IANA timezone such as Europe/Berlin (default: the user's timezone)."
    },
    "slice_by": {
      "description": "What to slice durations by (default project).",
      "type": "string",
      "enum": [
        "project",
        "entity",
        "language",
        "dependencies",
        "os",
        "editor",
        "category",
        "machine"
      ]
    },
    "timeout": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 1440,
      "description": "Keystroke timeout in minutes (default: the user's preference)."
    },
    "writes_only": {
      "type": "boolean",
      "description": "Only count heartbeats that were file writes (default: the user's preference)."
    }
  },
  "required": [
    "date"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢wakatime_get_heartbeats(date, limit, offset)

The raw heartbeats (activity pings from editor plugins) of one day: entity (file path or domain), type, category, project, branch, language, time, lines and AI line changes. Large days are cut to `limit` heartbeats starting at `offset`; total_heartbeats says how many the day has. Needs the read_heartbeats scope for OAuth tokens. GET /users/current/heartbeats.

입력 스키마

{
  "type": "object",
  "properties": {
    "date": {
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
      "description": "The day, yyyy-mm-dd, 12am to 11:59pm in the user's timezone."
    },
    "limit": {
      "description": "Return at most this many heartbeats (default 200).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 2000
    },
    "offset": {
      "description": "Skip this many heartbeats first (to read a busy day in slices; default 0).",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    }
  },
  "required": [
    "date"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢wakatime_list_projects(q, page)

The user's WakaTime projects with id, name, repository, color, clients, first and last heartbeat time and badge/public-url flags. Optionally filter by a name search. GET /users/current/projects.

입력 스키마

{
  "type": "object",
  "properties": {
    "q": {
      "description": "Filter project names by this search term.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "page": {
      "description": "Page number, from 1. Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢wakatime_list_machines

The machines (computers) that sent coding activity: id, name, host name, IP, timezone and last-seen time. GET /users/current/machine_names.

입력 스키마

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢wakatime_list_user_agents

The editor and plugin user agents that sent coding activity: editor, version, OS, AI model if any, and last-seen time. GET /users/current/user_agents.

입력 스키마

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢wakatime_list_commits(project, author, branch, page)

Commits of a WakaTime project with the time spent coding on each (needs a connected repository). Filter by author or branch; paged. Needs the read_heartbeats scope for OAuth tokens. GET /users/current/projects/{project}/commits.

입력 스키마

{
  "type": "object",
  "properties": {
    "project": {
      "type": "string",
      "minLength": 1,
      "maxLength": 500,
      "description": "Project name exactly as WakaTime shows it (see wakatime_list_projects)."
    },
    "author": {
      "description": "Only commits by this author (WakaTime username).",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "branch": {
      "description": "Branch (default: the repository's default branch).",
      "type": "string",
      "minLength": 1,
      "maxLength": 250
    },
    "page": {
      "description": "Page number, from 1. Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    }
  },
  "required": [
    "project"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢wakatime_get_commit(project, hash, branch)

One commit of a WakaTime project by hash, with the time spent coding on it. Needs the read_heartbeats scope for OAuth tokens. GET /users/current/projects/{project}/commits/{hash}.

입력 스키마

{
  "type": "object",
  "properties": {
    "project": {
      "type": "string",
      "minLength": 1,
      "maxLength": 500,
      "description": "Project name exactly as WakaTime shows it (see wakatime_list_projects)."
    },
    "hash": {
      "type": "string",
      "pattern": "^[0-9a-fA-F]{4,64}$",
      "description": "Commit hash (from wakatime_list_commits)."
    },
    "branch": {
      "description": "Branch (default: the repository's default branch).",
      "type": "string",
      "minLength": 1,
      "maxLength": 250
    }
  },
  "required": [
    "project",
    "hash"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢wakatime_list_goals(page)

The user's coding goals: title, type, target seconds, status, chart data per period, languages/projects/editors it covers and who it is shared with. Needs the read_goals scope for OAuth tokens. GET /users/current/goals.

입력 스키마

{
  "type": "object",
  "properties": {
    "page": {
      "description": "Page number, from 1. Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢wakatime_get_goal(goal_id)

One goal by id with its chart data (cached; an empty chart means the cache is still building, retry shortly). GET /users/current/goals/{goal}.

입력 스키마

{
  "type": "object",
  "properties": {
    "goal_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Goal id (from wakatime_list_goals)."
    }
  },
  "required": [
    "goal_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢wakatime_list_orgs(page)

The WakaTime organizations the user belongs to: id, name, people count, keystroke timeout and timezone preferences and what the user may do. Needs the read_orgs scope for OAuth tokens. GET /users/current/orgs.

입력 스키마

{
  "type": "object",
  "properties": {
    "page": {
      "description": "Page number, from 1. Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢wakatime_list_org_dashboards(org_id, page)

The dashboards of an organization: id, name, timezone, member count and what the user may view or join. GET /users/current/orgs/{org}/dashboards.

입력 스키마

{
  "type": "object",
  "properties": {
    "org_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Organization id (from wakatime_list_orgs)."
    },
    "page": {
      "description": "Page number, from 1. Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    }
  },
  "required": [
    "org_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢wakatime_list_org_dashboard_members(org_id, dashboard_id, page)

The members of an organization dashboard: id, username, full name, email, photo and whether their activity is view-only hidden. GET /users/current/orgs/{org}/dashboards/{dashboard}/members.

입력 스키마

{
  "type": "object",
  "properties": {
    "org_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Organization id."
    },
    "dashboard_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Dashboard id (from wakatime_list_org_dashboards)."
    },
    "page": {
      "description": "Page number, from 1. Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    }
  },
  "required": [
    "org_id",
    "dashboard_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢wakatime_get_org_dashboard_summaries(org_id, dashboard_id, date, project, branches)

One day of coding activity for every developer on an organization dashboard (grand total plus breakdowns per member). GET /users/current/orgs/{org}/dashboards/{dashboard}/summaries.

입력 스키마

{
  "type": "object",
  "properties": {
    "org_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Organization id."
    },
    "dashboard_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Dashboard id."
    },
    "date": {
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
      "description": "The day, yyyy-mm-dd."
    },
    "project": {
      "description": "Only time logged to this project.",
      "type": "string",
      "minLength": 1,
      "maxLength": 500
    },
    "branches": {
      "type": "string",
      "minLength": 1,
      "maxLength": 500,
      "description": "Comma separated branch names; needs project."
    }
  },
  "required": [
    "org_id",
    "dashboard_id",
    "date"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢wakatime_get_org_member_summaries(org_id, dashboard_id, member_id, start, end, ...)

One dashboard member's coding activity as daily summaries for a date range (give start and end, or a named range). GET /users/current/orgs/{org}/dashboards/{dashboard}/members/{member}/summaries.

입력 스키마

{
  "type": "object",
  "properties": {
    "org_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Organization id."
    },
    "dashboard_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Dashboard id."
    },
    "member_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Member id (from wakatime_list_org_dashboard_members)."
    },
    "start": {
      "description": "First day, yyyy-mm-dd (with end).",
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
    },
    "end": {
      "description": "Last day, yyyy-mm-dd, inclusive (with start).",
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
    },
    "range": {
      "type": "string",
      "enum": [
        "Today",
        "Yesterday",
        "Last 7 Days",
        "Last 7 Days from Yesterday",
        "Last 14 Days",
        "Last 30 Days",
        "This Week",
        "Last Week",
        "This Month",
        "Last Month"
      ],
      "description": "Alternative to start and end."
    },
    "project": {
      "description": "Only time logged to this project.",
      "type": "string",
      "minLength": 1,
      "maxLength": 500
    },
    "branches": {
      "type": "string",
      "minLength": 1,
      "maxLength": 500,
      "description": "Comma separated branch names; needs project."
    }
  },
  "required": [
    "org_id",
    "dashboard_id",
    "member_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢wakatime_list_private_leaderboards(page)

The private leaderboards the user is in: id, name, time range, member count and edit rights. Needs the read_private_leaderboards scope for OAuth tokens. GET /users/current/leaderboards.

입력 스키마

{
  "type": "object",
  "properties": {
    "page": {
      "description": "Page number, from 1. Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢wakatime_get_private_leaderboard(board_id, language, country_code, board_type, page)

The ranking of a private leaderboard: rank, member and total coding time (or AI lines / AI spend) per language, country and board type; paged (without page it starts at the user's own page). GET /users/current/leaderboards/{board}.

입력 스키마

{
  "type": "object",
  "properties": {
    "board_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Leaderboard id (from wakatime_list_private_leaderboards)."
    },
    "language": {
      "description": "Only this language.",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "country_code": {
      "description": "Two-letter country code.",
      "type": "string",
      "minLength": 2,
      "maxLength": 2
    },
    "board_type": {
      "type": "string",
      "enum": [
        "time",
        "manual",
        "ai",
        "spend"
      ],
      "description": "Ranking: time (hours coded, default), manual (excluding AI coding), ai (AI lines) or spend (AI spend)."
    },
    "page": {
      "description": "Page number, from 1. Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    }
  },
  "required": [
    "board_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢wakatime_get_public_leaders(language, country_code, is_hireable, board_type, page)

WakaTime's public leaderboard of the most active coders over the last 7 days, filterable by language, country, hireable badge and ranking type; paged. Each leader is reduced to rank, name, username, country, total and daily-average time and top 3 languages. GET /leaders.

입력 스키마

{
  "type": "object",
  "properties": {
    "language": {
      "description": "Only this language.",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "country_code": {
      "description": "Two-letter country code.",
      "type": "string",
      "minLength": 2,
      "maxLength": 2
    },
    "is_hireable": {
      "description": "Only coders with the hireable badge.",
      "type": "boolean"
    },
    "board_type": {
      "type": "string",
      "enum": [
        "time",
        "manual",
        "ai",
        "spend"
      ],
      "description": "Ranking: time (hours coded, default), manual (excluding AI coding), ai (AI lines) or spend (AI spend)."
    },
    "page": {
      "description": "Page number, from 1. Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 23개