Skip to main content
Glama

work-tracker-mcp

MCP server that tracks what you are working on. Logs are stored locally as one markdown file per day on your Desktop.

Works with Cursor and Claude Code.

Quick install

git clone https://github.com/venkatd-media/work-tracker-mcp.git ~/Projects/work-tracker-mcp
cd ~/Projects/work-tracker-mcp
./scripts/install.sh

The install script will:

  • Build the MCP server

  • Register it in Claude Code (user scope, all projects)

  • Register it in Cursor (~/.cursor/mcp.json)

  • Append work-tracking instructions to ~/.claude/CLAUDE.md and ~/.cursor/AGENTS.md

Then reload MCP in Cursor and start a new Claude Code session.

Related MCP server: mcp-cronos

Storage

Default folder: ~/Desktop/work-tracker/

Each day gets a file like 2026-07-06.md:

# 2026-07-06

## Focus
Building the work-tracker MCP server

## Project
/Users/venkat.c/Projects/work-tracker-mcp

## Log
- 21:30 — Started scaffolding
- 21:45 — Switched to daily Desktop files

Override the folder with WORK_TRACKER_DIR.

Concurrent writes from Cursor and Claude Code are safe: each day file is updated under an exclusive lock with atomic replace, so overlapping sessions cannot lose log entries.

Claude Code

./scripts/install.sh

Manual setup

npm install
npm run build
claude mcp add --scope user work-tracker -- node /absolute/path/to/work-tracker-mcp/dist/index.js

Use --scope user so the server is available in every project, not just this repo.

Import from this repo

If you open this repository in Claude Code, .mcp.json is included. Set the repo path first:

export WORK_TRACKER_MCP_ROOT=~/Projects/work-tracker-mcp

Then approve the work-tracker server when prompted.

Cursor

One-command setup

./scripts/install.sh

Manual setup

Add to ~/.cursor/mcp.json:

{
  "mcpServers": {
    "work-tracker": {
      "command": "node",
      "args": ["/absolute/path/to/work-tracker-mcp/dist/index.js"]
    }
  }
}

For automatic tracking in every workspace, also keep the work-tracking section in ~/.cursor/AGENTS.md (the install script adds it).

Tools

Tool

Description

get_current_work

Read today's focus and log

set_focus

Set what you are working on

log_progress

Append a timestamped note

read_day

Read a specific day's file

list_days

List available day files

Requirements

  • Node.js 20+

  • Cursor and/or Claude Code with MCP support

Available Tools

5 tools
get_current_workA

Get today's work log: current focus, project path, and progress entries. Call at the start of sessions to resume context.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoDate in YYYY-MM-DD format. Defaults to today.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses the return content (current focus, project path, progress entries) and the intended use. As a getter, it implies read-only behavior; no hidden side effects are mentioned. It does not address error cases or behavior when no log exists, but the description gives sufficient transparency for a simple retrieval tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two clear sentences: the first states the purpose and contents, the second gives usage guidance. No redundant information, appropriately front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with a single optional parameter, the description covers the core purpose, return contents, and a concrete usage scenario. The lack of an output schema is mitigated by listing the returned fields. Minor gaps include not mentioning the date parameter (though the schema covers it) and potential edge cases, but overall it is complete enough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with the date parameter fully described as 'YYYY-MM-DD' and 'Defaults to today'. The description does not add parameter-specific details beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Get today's work log' and specifies the content (current focus, project path, and progress entries). It distinguishes itself from siblings like set_focus and log_progress by focusing on retrieval rather than modification, and from read_day by specifically targeting today's log.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly instructs to 'Call at the start of sessions to resume context', providing a clear use case. It does not explicitly name alternatives, but the context implies it's the go-to for session startup, while siblings like log_progress are for adding entries. This is clear context without explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_daysA

List available work log days, newest first.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden. It states the ordering ('newest first') and that it lists available days, which is a read-only behavior. However, it does not describe the return format (e.g., array of strings, objects) or whether it includes today/partial days. For a simple list tool this is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with no filler. The key information (list, available days, newest first) is front-loaded and every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter tool, the description conveys the essential purpose and ordering. However, because there is no output schema, the return structure is unspecified, which is a minor gap. The sibling tools (read_day, get_current_work) provide contextual inference about what 'days' means, but the description alone lacks explicit return details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema is empty (0 parameters). Per the rubric, a baseline of 4 applies because there are no parameters to describe, so the description does not need to add parameter-level detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List') and identifies the resource ('available work log days'), plus a clear ordering ('newest first'). This clearly distinguishes it from siblings like read_day (which reads one day) and get_current_work (current state).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied: to see which work log days exist, call this tool. However, there is no explicit guidance on when to prefer this over alternatives, nor any exclusions or prerequisites. The self-explanatory name helps, but the description does not directly address alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

log_progressA

Append a timestamped note to today's work log. Use after completing a step, making a decision, or hitting a blocker.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoDate in YYYY-MM-DD format. Defaults to today.
noteYesWhat was done, decided, or discovered.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the transparency burden. It discloses that the tool appends a note (a mutation) and that the note is timestamped, which is useful behavioral context. It does not mention edge cases like creating the log if absent, but the core behavior is clear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no wasted words. The core action is front-loaded, and the usage guidance is a natural continuation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter tool, the description is complete enough: it states the action, when to use it, and the note content. The lack of an output schema is acceptable given the tool's simplicity, and sibling names help orient the agent functionally.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already describes both parameters fully (100% coverage). The description adds minor context by mentioning 'timestamped note' and 'today', but no substantial parameter semantics are added beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('Append') and resource ('today's work log'), and distinguishes it from read-oriented siblings like read_day and list_days. Mentioning 'timestamped note' adds further specificity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly gives usage scenarios: 'after completing a step, making a decision, or hitting a blocker.' It does not explicitly state when not to use it or mention alternatives, but the context is clear and practical.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_dayB

Read the work log for a specific day.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesDate in YYYY-MM-DD format.

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must carry the behavioral disclosure burden. It only restates the purpose and omits details such as return format (e.g., full log entries vs summary), error behavior on missing dates, or whether the operation is read-only (though 'read' implies it). This lacks essential context for an agent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that is front-loaded with the action and resource. There is no unnecessary verbiage, making it highly efficient for a simple tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite the tool being simple, the description is incomplete because there is no output schema, and the description does not explain what the tool returns or how it fits with sibling tools like list_days. An agent would not know what to expect from the call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema fully documents the only parameter 'date' with a pattern and description, covering 100% of the schema. Since the description adds no additional parameter information, the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Read'), the resource ('work log'), and the scope ('for a specific day'). It distinguishes from sibling tools like log_progress (write) and list_days (list days) by explicitly targeting a day's work log content.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool vs alternatives. It does not mention when not to use it, nor does it reference sibling tools like get_current_work or list_days, leaving the agent to infer usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_focusA

Set or update what the user is currently working on today. Use when starting a new task or shifting focus.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoDate in YYYY-MM-DD format. Defaults to today.
focusYesShort summary of the current task or goal.
projectPathNoOptional path to the project being worked on.

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose side effects, but it only says 'set or update' without explaining whether it overwrites existing focus, requires specific permissions, or affects other tools. The behavioral impact is under-specified for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is front-loaded with the action and purpose. Every word earns its place, with no redundancy or padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple setter with no output schema and no annotations, the description covers the trigger context but omits side effects and return behavior. While not overly complex, a fuller disclosure of what 'set or update' entails would make it complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already explains all three parameters. The description adds minimal semantic value beyond the schema, mainly reinforcing the 'today' and 'focus' concepts. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Set or update' and identifies the resource 'what the user is currently working on today', clearly distinguishing it from sibling tools like get_current_work (get) and log_progress (log). It conveys the core function effectively.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use the tool: 'Use when starting a new task or shifting focus.' This provides clear context, though it does not mention alternatives or exclusions, which would have earned a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 5 tool updatesv1.0.0
    • First observedget_current_work
    • First observedlist_days
    • First observedlog_progress
    • First observedread_day
    • First observedset_focus

TDQS

A4/5.0
Disambiguation5/5

Each tool has a distinct purpose: get_current_work for today's summary, set_focus for updating focus, log_progress for appending entries, read_day for specific days, and list_days for enumeration. No overlap or ambiguity in their roles.

Naming Consistency5/5

All tool names follow a clear verb_noun pattern in snake_case (get_current_work, set_focus, log_progress, read_day, list_days). The verbs vary to match the actions, but the convention is consistent across the set.

Tool Count5/5

With 5 tools, the server is well-scoped for a daily work tracker. Each tool covers a core operation without redundancy, making the count feel appropriate and manageable.

Completeness4/5

The set covers the essential lifecycle of daily work tracking: get current context, set focus, log progress, read historical days, and list available days. Minor gaps exist (e.g., no edit/delete for log entries), but they are not critical for the server's purpose.

Maintenance

ActivitySlowing
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

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/venkatd-media/work-tracker-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server