Skip to main content
Glama

timescribe-mcp

An MCP server that gives Claude read-only access to your local TimeScribe time tracking data. Ask things like "how many hours did I track per project last week?" without exporting a CSV.

  • Reads TimeScribe's local SQLite database directly, read-only. It never writes.

  • Works while TimeScribe is running, including the live timer.

  • No network access. Your data stays on your machine.

Requirements

  • TimeScribe installed (macOS or Windows)

  • Node.js 22.13 or newer

Related MCP server: RescueTime MCP Server

Install

Claude Code

git clone https://github.com/bverhoeve/timescribe-mcp && cd timescribe-mcp
npm ci && npm run build
claude mcp add timescribe -- node "$(pwd)/dist/index.js"

Claude Desktop

Add to claude_desktop_config.json:

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

Database location

Found automatically:

  • macOS: ~/Library/Application Support/timescribe/database/database.sqlite

  • Windows: %APPDATA%\timescribe\database\database.sqlite (unverified; if it isn't found, set TIMESCRIBE_DB_PATH)

Elsewhere, set TIMESCRIBE_DB_PATH to the full path of database.sqlite.

Tools

Tool

What it returns

list_projects

All projects, including archived ones (archived: true)

get_time_summary

Work, break and scheduled hours for a date range, grouped per project (default), day or project_day, plus the running timer

list_entries

Individual work/break entries in a range, filterable by project_id and type, max 500; truncated: true means narrow the range

Dates are YYYY-MM-DD, inclusive, in the timezone set in TimeScribe. Leave out from and to for the current week (Monday to Sunday). Output times are ISO 8601 with offset.

How times are counted

  • An entry counts on the day it started (TimeScribe splits entries at midnight itself).

  • A running timer counts up to now. A timer left open while TimeScribe was closed counts up to the last moment the app saw it running.

  • work_hours is tracked time only. TimeScribe's own balance also credits public holidays and absences as worked hours, so in weeks with a holiday this server reports less than the app's balance.

  • scheduled_hours comes from your TimeScribe work schedule and does not deduct holidays or absences.

Development

npm test          # type-check, build, run all tests (never touches your real data)
npm run inspect   # open the MCP Inspector against your real database

License

MIT

Available Tools

3 tools
get_time_summarySummarise tracked timeA
Read-only

Total tracked work and break hours in TimeScribe for a date range (default: current ISO week, Monday to Sunday), split per project, per day, or per project per day. Entries count on the day they started. work_hours is tracked time only: unlike the TimeScribe app it does not credit public holidays or absences. scheduled_hours is the planned hours from the work schedule, without deducting holidays or absences. Entries without a project appear with project_id null. Also reports the currently running timer.

Inputs: to, from, group_by. Returns: range, groups, totals, running_timer

list_entriesList TimeScribe time entriesA
Read-only

List individual TimeScribe time entries (work and break intervals) that started in a date range, oldest first. Use for detail behind a total; use get_time_summary for totals. Defaults to the current ISO week. Returns at most 500 entries; truncated=true means narrow the range.

Inputs: to, from, type, project_id. Returns: range, entries, truncated

list_projectsList TimeScribe projectsA
Read-only

List all TimeScribe projects, including archived (deleted) ones, which old entries may still reference. Use the ids to filter list_entries.

Inputs: no named parameters. Returns: projects

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4.3/5.0

    Scored across 3 tools

    Disambiguation5/5

    Each tool targets a distinct level of the domain: projects, individual entries, and aggregated summaries. The descriptions explicitly disambiguate by telling the agent when to use list_entries vs get_time_summary, eliminating overlap.

    Naming Consistency5/5

    All three names follow a clean snake_case verb_noun pattern (list_projects, list_entries, get_time_summary), with list_* for collections and get_* for a computed value used predictably.

    Tool Count4/5

    Three tools is at the low end but each earns its place and maps to a genuinely different question (what projects exist, what happened in detail, what the totals are). A read-only analytics surface this tight is defensible, though it leaves little room for growth.

    Completeness3/5

    The set covers the read/analysis lifecycle well but is entirely read-only: there is no way to create, edit, or delete entries, manage projects, or start/stop the running timer that get_time_summary reports. Notable gaps if the agent is expected to do more than report on time data.

    Maintenance

    ActivitySlowing
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables natural language interaction with local SQLite databases through Claude Desktop, translating plain English queries into SQL for data analysis and exploration.
      3
      MIT
    • A
      license
      A
      quality
      D
      maintenance
      Provides Claude with read-only access to local development databases (Postgres, MySQL, SQLite) to inspect schemas, run SELECT queries, and explain query plans without leaving the conversation.
      5
      MIT