get_jobcodesLABSCO SUMMARY
Timesheet questions answered without the reporting screen.
Four separate integrations collapsed into one server, with the filters that matter — date range, user, job code, modification time — available on the call. That is what turns "how many hours went to this client last month" into a single question.
What it is
A single MCP server covering the QuickBooks Time API, combining what used to be four separate servers — job codes, reports and core, timesheets, and users — behind one interface.
What you get
- Job codes retrieved with real filtering: by name with wildcard matching, by active status, by type (regular, PTO, paid or unpaid break) and by parent
- A single job code fetched by id, and the job code hierarchy as a structure rather than a flat list
- Timesheets pulled over a date range, narrowed by user, group, job code or payroll ids
- Change-based filtering — modified before or since a timestamp — for syncing rather than re-reading everything
- On-the-clock status, for the question that has to be answered right now
- Pagination controls throughout, so a wide date range comes back in pages rather than one dump
Requirements
Python with the packages in requirements.txt, and a QuickBooks Time access token supplied as QB_TIME_ACCESS_TOKEN in a .env file or in the client config.
Setup effort
Build from source — get the source, then follow the project's own run instructions
USE CASES
Finding out who is working right now
Read on-the-clock status directly rather than interpreting a timesheet export that lags behind.
Totalling hours against a client or project
Pull timesheets for a date range filtered to the relevant job codes, so the number comes from the source rather than a spreadsheet.
Making sense of a job code structure you inherited
Read the hierarchy instead of the flat list, so parent and child codes are visible as the tree somebody actually designed.
Checking one job code before you bill against it
Fetch it by id and confirm its type and status, so a PTO or break code is not invoiced as work.
Syncing only what changed
Filter by modified-since rather than re-reading the full set, which keeps a recurring export proportional to the change.
20 tools
Listed in project docs. Your client may show a different list.
get_jobcodeget_jobcode_hierarchyget_timesheetsget_timesheetget_current_timesheetsget_usersget_userget_current_userget_groupsget_projectsget_project_activitiesget_current_totalsget_payrollget_payroll_by_jobcodeget_project_reportget_custom_fieldsget_last_modifiedget_notificationsget_managed_clientsBEFORE YOU INSTALL
What to know first
Tools you get
20 tools named in the project's documentation.
Requires
- python on PATH
- QB_TIME_ACCESS_TOKEN in your environment
Where it runs
The documented client runs the server on your machine.
INSTALLATION
Connect your client
Server setup
python ./qb-time-mcp-server/main.pyMCP Clients
Claude Desktop
{
"globalShortcut": "Ctrl+Q",
"mcpServers": {
"qb-time-tools": {
"command": "python",
"args": [
"./qb-time-mcp-server/main.py"
],
"env": {
"QB_TIME_ACCESS_TOKEN": "<YOUR_QB_TIME_ACCESS_TOKEN>"
}
}
}
}