Vetroscope MCP
The Vetroscope MCP server provides LLMs with read-only, local, offline access to your Vetroscope time-tracking data, enabling AI assistants to answer questions about how you spend your time, what you work on, and how you track against your goals.
Reports & Breakdowns
get_report– Aggregate time report: total active seconds, top apps, and top projects (including nested sub-projects like YouTube videos)get_app_breakdown/get_app_stats– Per-project breakdown and deep stats (daily series, hour-of-day, weekday distributions) for a specific appget_tag_breakdown/get_tag_stats– Time-spent report and deep stats for a specific tag, including active/passive splits and subtree rollupsget_category_breakdown– Roll up app time into broad categories (editor, browser, gaming, productivity, etc.)get_music_split– Analyze music vs. work time: work-with-music, music-only, and heads-down-work bucketsget_listening_history– Top tracks and artists from music apps and browser music sites, plus per-day listening minutesget_media_links– Canonical deep-links (Spotify URIs, YouTube URLs) for media played, joined with time dataget_device_breakdown– Per-device time totals across multiple machines
Visual Overviews
get_calendar– Dense per-day activity series (heatmap data) for any period, defaulting to a full yearget_focus_heatmap– 7×24 hour/weekday grid showing when you do specific kinds of work
Activity & Status
get_sessions– Continuous activity blocks (start/end/duration) reconstructed from raw entriesget_current_status– Most recent tracked entry: active app/project and whether tracking is live or idlequery_entries– Raw 30-second tracking entries filtered by app, project, tag, search term, or time period
Goals
get_goals_progress– Current progress on configured app, overall, or tag goalsget_goal_achievements– Historical record of goals hit per day, enabling streak analysis
Reference & Lookup
list_tags– All tags with id, name, color, sticky/archived flags, and parent infolist_projects– Every (app, project) pair ever tracked with all-time totals, days active, and first/last seen; supports substring searchlist_markers– Timeline markers with timestamp, label, color, icon, and optional region end
Shared Filtering — All time-aware tools support filtering by period (today, week, date range), hour of day, weekdays, and device. Data is read directly from the local SQLite database — no cloud, no authentication required.
Enables querying Netflix watch history and episodes, providing insights into viewing behavior.
Allows querying SoundCloud listening time and tracks, offering analysis of audio content consumption.
Provides tools for querying listening history, top tracks, and media links from Spotify, enabling analysis of music listening patterns.
Allows retrieval of YouTube watch history, including video URLs and time spent, to analyze video consumption habits.
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., "@Vetroscope MCPwhat am I working on right now?"
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.
Vetroscope MCP
A read-only Model Context Protocol server for Vetroscope — gives LLMs (Claude Desktop, Claude Code, ChatGPT, Cursor, …) context on how you've been spending your time, what projects you've been in, and how you're tracking against your goals.
Reads your local Vetroscope SQLite directly, read-only. No cloud round-trip, no auth, works offline.
Tools
Reports & breakdowns
Tool | What it does |
| Aggregate report for a period — total active seconds, top apps, top projects with sub-projects nested (YouTube videos, SoundCloud songs, Netflix episodes). |
| Per-project breakdown for a single app over a period, with sub-projects. |
| Deep stats for one app: lifetime totals, days active, daily series, hour-of-day distribution, weekday distribution. |
| Time-spent report for a single tag — top apps, top projects, daily series, active/passive split. |
| Deep stats for one tag (counterpart to |
| Dense per-day series (heatmap data) for any period — defaults to a full year. |
| Per-device totals when you run Vetroscope across multiple machines. |
| Music-vs-work analysis: work-with-music / music-only / heads-down-work / other, plus per-source (Spotify, SoundCloud, …) overlap totals. Classifier is overridable per call. |
| Time rolled up into broad categories: editor, browser, adobe, communication, gaming, productivity, creative, etc. Mirrors Vetroscope's internal app grouping. |
| Top tracks and top artists across native music apps and browser music sites, plus per-day listening minutes. Artists parsed from the "Artist — Title" sub_project convention. |
| Canonical deep-links Vetroscope captured for media you actually played — Spotify |
| 7×24 grid of active foreground seconds — when do you usually do specific kinds of work. Optional app / project / tag filter to narrow to a single activity; |
Reference / lookup
Tool | What it does |
| Your tags with id, name, color, sticky flag, archived flag, and parentId/parentName for nested tags. Archived tags hidden by default ( |
| Every (app, project) pair ever tracked with all-time totals + first/last seen + optional substring search. |
| Your timeline markers (timestamp, label, color, icon, optional region end). |
Activity / status
Tool | What it does |
| Continuous activity blocks (start/end/duration) — the natural grain for "what did I work on this morning". |
| Most recent entry — what app/project right now, how recently, tracking vs idle. |
| Filtered list of raw 30s entries (app / project / tag / search / period / mode). |
Goals
Tool | What it does |
| Current progress on configured app / overall / tag goals. |
| Historical record of which goals you hit on which days — drives streak questions. |
All time-aware tools accept these shared filters:
Argument | Purpose |
|
|
| Inclusive / exclusive hour-of-day filter in local time (e.g. |
| Array of weekday integers (0=Sun, 1=Mon, …, 6=Sat). Pass |
|
|
Every total is split into active foreground time and passive away-listening time (e.g. background music while idle), matching the dashboard's distinction.
Related MCP server: SQLite MCP Server
Requirements
Vetroscope installed and run at least once.
Node.js 18+.
Install
npx vetroscope-mcpThat's it — no global install needed. The first run will fetch the package from npm.
Configure your client
Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"vetroscope": {
"command": "npx",
"args": ["-y", "vetroscope-mcp"]
}
}
}Restart Claude Desktop.
Claude Code
claude mcp add vetroscope -- npx -y vetroscope-mcpChatGPT (Developer Mode)
In the Connectors section, add a new MCP server with command npx and args -y vetroscope-mcp.
Cursor
Add to ~/.cursor/mcp.json:
{
"mcpServers": {
"vetroscope": {
"command": "npx",
"args": ["-y", "vetroscope-mcp"]
}
}
}How it finds your database
Vetroscope stores its SQLite at:
macOS:
~/Library/Application Support/Vetroscope/Windows:
%APPDATA%\Vetroscope\Linux:
~/.config/Vetroscope/
If you're signed into a Vetroscope account, the active DB is vetroscope-<userId>.db (recorded in auth-state.json). Otherwise it's the anonymous vetroscope.db.
You can override either piece with environment variables:
Env var | Purpose |
| Override the app-data directory |
| Point at an explicit |
Example prompts
"How much time did I spend in After Effects this week?"
"What did I work on yesterday?"
"Am I on track to hit my coding goal today?"
"What were the top three projects I touched this month?"
"Show me every session that touched the 'Vetroscope' project this week."
"How much time did I spend on the Vetroscope Dev tag this month?"
"When during the day do I usually use Cursor?"
"How many hours of focused work did I do during weekday working hours (9–5) last week?"
"Which YouTube videos did I watch yesterday and how long?"
"What am I doing right now?"
"Show me my longest focused work sessions today."
"How many days in a row have I hit my coding goal?"
"What was happening during my 'Eye appointment' marker on Wednesday?"
"Have I ever worked on a project called 'Atlas'?"
"What was my busiest day this year?"
"How much of my coding time was on my Mac vs Windows this month?"
"How much of my work this week had music playing?"
"How long did I spend just listening to music with nothing else open today?"
"How much creative work vs coding did I do this month?"
"Who were my top five artists this week?"
"When during the week do I usually code in Cursor?"
Local development
git clone https://github.com/rankin-works/Vetroscope-MCP.git
cd Vetroscope-MCP
npm install
npm run build
node dist/index.js # starts a stdio MCP server (mainly useful via a client)Type-check only:
npm run typecheckHow it works
The server is a thin query adapter over the same SQLite database that Vetroscope writes. It mirrors the bucket-distinct duration math used in electron/database.ts so totals match the desktop dashboard exactly.
Because it reads the schema directly, a Vetroscope schema migration could break the MCP. The set of tools is intentionally narrow — purpose-built rather than a generic SQL surface — so changes localize to src/queries.ts.
Stability guarantees
Starting with 1.0.0, vetroscope-mcp follows Semantic Versioning. The public API surface — tool names, parameter names, parameter semantics, and response field names — is stable and changes follow these rules:
Change | SemVer bump |
Adding a new tool | minor (1.x.0) |
Adding a new optional argument to an existing tool | minor |
Adding a new field to an existing response | minor |
Renaming a tool, argument, or response field | major (2.0.0) |
Changing a parameter's accepted values or default | major |
Changing the meaning of an existing field (e.g. seconds → minutes) | major |
Removing a tool, argument, or response field | major |
Tightening validation in a way that breaks previously valid input | major |
Bug fixes and internal refactors that don't change the API surface are patch bumps (1.0.x).
Things explicitly not under the SemVer contract:
Internal helpers and types not exported from the npm package
The set of canonical app names in
src/categories.ts(thecategorizeAppfunction may classify the same app differently between minor versions as Vetroscope adds apps)The exact wording of tool descriptions
Error message text
If you build something on top of vetroscope-mcp and want to lock to a major version, pin to ^1.0.0 in your dependency.
See CHANGELOG.md for the full release history.
License
MIT © Jacob Rankin
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/rankin-works/Vetroscope-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server