intervals-mcp
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., "@intervals-mcpstart a timer for Acme website redesign"
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.
intervals-mcp
A standalone MCP server, CLI, and Claude Code plugin for local-first Intervals time tracking. Starting a timer or logging a time entry hits a local SQLite database first; entries sync to Intervals in the background or on demand. Reports and queries are always local-only and never call the Intervals API.
Install (Claude Code plugin)
/plugin marketplace add sixfeetup/intervals-mcp
/plugin install intervals@intervals-mcpThere is no build step to run: the dist/ bundle is committed to the repo.
The only requirement is Node >= 22.5.
Related MCP server: Productivity Tracker MCP Server
Install (any MCP host)
Clone the repo and point your MCP host at the bundled server:
git clone https://github.com/sixfeetup/intervals-mcp.git{
"command": "node",
"args": ["/path/to/intervals-mcp/dist/server.mjs"]
}Configuration
Credentials and settings are resolved in this order:
Environment variables
config.jsoninsideINTERVALS_HOME(or~/.intervals/)
Environment variables
Variable | Description |
| Intervals API key for HTTP Basic auth |
| Intervals API base URL (default: |
| Your Intervals person ID (required for time-entry sync) |
| Override the default local storage path ( |
config.json keys
If you prefer file-based configuration, create config.json inside INTERVALS_HOME (or ~/.intervals/):
Key | Type | Description |
|
| Intervals API key for HTTP Basic auth |
|
| Intervals API base URL (default: |
|
| Your Intervals person ID (required for time-entry sync) |
|
| Background sync interval in milliseconds |
Running intervals setup (or the /intervals-setup slash command) writes
this file with 0600 permissions and never puts the API key in model
context — the key is entered at an interactive, hidden prompt in your own
terminal.
CLI
The bundle ships a zero-dependency CLI (dist/cli.mjs, exposed as intervals
via package.json#bin when installed as a package):
Command | Description |
| Configure credentials and run initial project sync |
| Show DB path, credential source, timers, pending sync |
| Refresh the local project catalog |
| Push pending time entries to Intervals now |
| Show, edit, or delete timers |
| Report time entries ( |
| Set project defaults |
Run node dist/cli.mjs help (or intervals help) for the full usage text.
Agent tools
When installed as a Claude Code plugin, tools surface with the mcp__plugin_intervals_intervals__ prefix:
Tool | Description |
| Search the local project catalog for IDs and classifications (local-only) |
| Start a local timer with a simple description and optional |
| Stop a timer, resolve classification, create a pending time entry, and sync |
| Update description or project/worktype/module hints on a running local timer |
| Safely delete an active timer or stopped timer with no linked time entry |
| Add a completed time entry directly (duration in minutes) |
| Edit an existing local time entry by short ID or linked timer ID; use |
| Delete a local or synced time entry by short ID or linked timer ID |
| Report time entries by date range and project filter (local-only) |
| List active or recent local timers |
| Map a stopped local timer ID to the linked local time entry ID |
| List recent local time entries with sync status |
| Configure default worktype/module for a project |
| Immediately retry syncing pending time entries to Intervals |
mcp__plugin_intervals_intervals__start_timer accepts optional start_at values for retroactive
local timer starts. Use HH:mm or H:mm for today in local time,
YYYY-MM-DD HH:mm for a local date/time, or an ISO datetime with an explicit
offset/timezone. Future start_at values are rejected.
Slash commands
Command | Description |
| Configure Intervals credentials and run the initial project sync |
| Show Intervals DB path, credential source, active timers, pending sync, last project sync |
| Refresh the local Intervals catalog of clients, projects, worktypes, and modules |
| Push pending local time entries to Intervals now |
| Show active or recent Intervals timers, or edit/delete a timer by ID |
| Report local time entries by range, or edit an entry by ID |
| Set the default worktype and optional module for a project |
How it works
Timers are local-only. Starting a timer writes a lightweight local row with just a description. Project, worktype, and module hints are optional.
Running timers can be reclassified locally. Edit a timer's project, worktype, or module hints before stopping it; the updated classification is applied when the time entry is created.
Stop/apply creates a time entry. When you stop a timer, you provide (or resolve) the project and worktype. The server creates a pending time entry and immediately tries to sync it to Intervals.
Time entries are local-first.
mcp__plugin_intervals_intervals__add_time,mcp__plugin_intervals_intervals__edit_time, andmcp__plugin_intervals_intervals__stop_timerall persist to SQLite before any network call. If sync fails, the entry stays local with afailedorpendingstatus and can be retried.Catalog sync stores active rows. Project sync fetches all catalog pages, keeps active projects and active classifications, and retains clients referenced by active projects.
Reports are local-only.
mcp__plugin_intervals_intervals__query_timeand/intervals-timeread from SQLite and never call the Intervals API.
Developer note
If you open this repository itself in Claude Code, you may see the intervals
MCP server listed as failed to connect. That's expected: the repo-root
.mcp.json is the plugin's own configuration, and it references
${CLAUDE_PLUGIN_ROOT}, which is only set when the plugin is installed
through /plugin install. Editing this repo's source doesn't install the
plugin, so the variable is unset and the server can't start. It's safe to
reject or ignore any prompt about it while working on the code.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables recording, querying, and summarizing daily work entries with tags using a local SQLite database. Supports work logging, search, timeline queries, tag management, and automated reminders for tracking daily tasks.
- FlicenseNot gradedqualityDmaintenanceEnables natural language task management including logging, updating, and summarizing productivity activities across multiple categories using a local SQLite database. It allows users to manage workflows and generate time-based summaries through standardized Model Context Protocol tools.1
- AlicenseAqualityAmaintenanceEnables tracking work time with start/stop timers, logging entries, and generating reports.48MIT
- AlicenseNot gradedqualityBmaintenanceEnables multi-project workspaces to share structured notes, API contracts, and handoff messages via a local SQLite database, with versioning and read tracking.GPL 3.0
Related MCP Connectors
Track time on usetimebook.com - start/stop timers, log entries, list projects/clients.
Business-day, SLA, cron and recurrence calculations — offline, holiday-aware, no network.
Private-by-default, local-first memory/context/task orchestrator for MCP apps and agents.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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/sixfeetup/intervals-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server