qb-time-mcp-server
QuickBooks Time MCP Server (Combined)
This is a combined MCP server that provides access to all QuickBooks Time API functionality through a single interface. It combines the functionality of four separate servers:
- JobCode Tools
- Reports & Core Tools
- Timesheet Tools
- User Tools
I would LOVE help improving this project! Just glad to be able to give something back finally!
This entire project was developed and published using artificial intelligence (Anthropic, OpenAI, Llama/META), as I personally cannot write much code without assistance. While every effort has been made to ensure quality and functionality, there may be imperfections or areas for improvement. I welcome any feedback, corrections, or suggestions from the community.
- Install dependencies:
- Create a
.env
file with your QuickBooks Time access token:
Claude Desktop Configuration
To use this server with Claude Desktop, you'll need to configure it in your Claude Desktop settings. Here's an example configuration:
Available Tools
JobCode Tools
get_jobcodes
: Get jobcodes with advanced filtering options- Parameters:
ids
: (array of numbers) Filter by specific jobcode IDsparent_ids
: (array of numbers) Filter by parent jobcode IDsname
: (string) Filter by name (use * as wildcard)type
: (string) Filter by type: "regular", "pto", "paid_break", "unpaid_break", "all"active
: (string) Filter by status: "yes", "no", "both"customfields
: (boolean) Include custom field datamodified_before
: (string) Return items modified before this datemodified_since
: (string) Return items modified after this datesupplemental_data
: (string) Include supplemental data: "yes", "no"page
: (number) Page number for paginationlimit
: (number) Results per page (max 200)
- Parameters:
get_jobcode
: Get a specific jobcode by ID- Required Parameters:
id
: (number) The ID of the jobcode to retrieve
- Required Parameters:
get_jobcode_hierarchy
: Get complete jobcode hierarchy structure- Optional Parameters:
name
: (string) Filter by name (use * as wildcard)type
: (string) Filter by type: "regular", "pto", "paid_break", "unpaid_break", "all"active
: (string) Filter by status: "yes", "no", "both"customfields
: (boolean) Include custom field datasupplemental_data
: (string) Include supplemental data: "yes", "no"
- Optional Parameters:
Timesheet Tools
get_timesheets
: Get timesheets with filtering- Parameters:
modified_before
: (string) Filter by modification datemodified_since
: (string) Filter by modification datepage
: (number) Page numberlimit
: (number) Results per page
- Parameters:
get_timesheet
: Get a specific timesheet by ID- Required Parameters:
id
: (number) The ID of the timesheet to retrieve
- Required Parameters:
get_current_timesheets
: Get currently active timesheets
User Tools
get_users
: Get all users with filtering- Parameters:
modified_before
: (string) Filter by modification datemodified_since
: (string) Filter by modification datepage
: (number) Page numberlimit
: (number) Results per page
- Parameters:
get_user
: Get a specific user by ID- Required Parameters:
id
: (number) The ID of the user to retrieve
- Required Parameters:
get_current_user
: Get currently authenticated userget_groups
: Get all groups from QuickBooks Time- Parameters:
page
: (number) Page numberlimit
: (number) Results per page
- Parameters:
Project Management Tools
get_projects
: Get projects with filtering- Parameters:
modified_before
: (string) Filter by modification datemodified_since
: (string) Filter by modification datepage
: (number) Page numberlimit
: (number) Results per page
- Parameters:
get_project_activities
: Get project activities- Parameters:
page
: (number) Page numberlimit
: (number) Results per page
- Parameters:
Reports Tools
get_current_totals
: Get current totals snapshot including shift and day totals- Parameters:
page
: (number) Page numberlimit
: (number) Results per page
- Parameters:
get_payroll
: Get payroll report- Required Parameters:
start_date
: (string) Start date in YYYY-MM-DD formatend_date
: (string) End date in YYYY-MM-DD format
- Optional Parameters:
page
: (number) Page numberlimit
: (number) Results per page
- Required Parameters:
get_payroll_by_jobcode
: Get payroll report grouped by jobcode- Required Parameters:
start_date
: (string) Start date in YYYY-MM-DD formatend_date
: (string) End date in YYYY-MM-DD format
- Optional Parameters:
page
: (number) Page numberlimit
: (number) Results per page
- Required Parameters:
get_project_report
: Get detailed project report with time entries- Required Parameters:
start_date
: (string) Start date in YYYY-MM-DD formatend_date
: (string) End date in YYYY-MM-DD formatjobcode_ids
: (array of numbers) Filter by specific jobcode IDs
- Optional Parameters:
user_ids
: (array of numbers) Filter by specific user IDsgroup_ids
: (array of numbers) Filter by specific group IDsjobcode_type
: (string) Filter by type: "regular", "pto", "unpaid_break", "paid_break", "all"customfielditems
: (object) Filter by custom field items
- Required Parameters:
Additional Tools
get_custom_fields
: Get custom tracking fields configured on timecards- Parameters:
page
: (number) Page numberlimit
: (number) Results per page
- Parameters:
get_last_modified
: Get last modified timestamps for objects- Parameters:
types
: (array of strings) Types of objects to check
- Parameters:
get_notifications
: Get notifications- Parameters:
page
: (number) Page numberlimit
: (number) Results per page
- Parameters:
get_managed_clients
: Get managed clients- Parameters:
page
: (number) Page numberlimit
: (number) Results per page
- Parameters:
Running the Server
The server will start and listen for JSON-RPC requests on stdin/stdout.
License
MIT License - See LICENSE file for details
Contributing
Contributions are welcome! Please feel free to submit a Pull Request. Given that this project was developed with AI assistance, community input is especially valuable for improving and maintaining the codebase.
Support
For issues and feature requests, please use the GitHub issues page or contact me directly at github.com/aallsbury.
Provides unified access to QuickBooks Time API functionality. This server consolidates multiple QuickBooks Time services into a single, efficient interface.