QuickBooks Time MCP server

Integrates with QuickBooks Time API to provide unified access for managing timesheets, users, projects, and generating reports.
Back to servers
Provider
Aaron Allsbury
Release date
Dec 21, 2024
Language
Python
Stats
5 stars

This MCP server provides a unified interface to access all QuickBooks Time API functionality, combining capabilities for job codes, reports, timesheets, and user management in a single, convenient service. It simplifies interactions with QuickBooks Time through a structured JSON-RPC interface.

Installation and Setup

Prerequisites

  1. Install the required dependencies:

    pip install -r requirements.txt
    
  2. Create a .env file with your QuickBooks Time access token:

    QB_TIME_ACCESS_TOKEN=your_access_token_here
    NODE_ENV=development
    

Claude Desktop Configuration

To integrate with Claude Desktop, configure the server in your Claude Desktop settings:

{
  "globalShortcut": "Ctrl+Q",
  "mcpServers": {
    "qb-time-tools": {
      "command": "python",
      "args": [
        "./qb-time-mcp-server/main.py"
      ],
      "env": {
        "QB_TIME_ACCESS_TOKEN": "your_quickbooks_time_access_token_here"
      }
    }
  }
}

Starting the Server

Run the server using Python:

python main.py

The server will start listening for JSON-RPC requests on stdin/stdout.

Available Tools

JobCode Tools

Get Jobcodes

Use get_jobcodes to retrieve job codes with filtering options:

  • Basic filters: ids, name, active
  • Type filters: type (regular, pto, paid_break, unpaid_break, all)
  • Hierarchy filters: parent_ids
  • Additional options: customfields, modified_before, modified_since
  • Pagination: page, limit

Get Specific Jobcode

Use get_jobcode with required parameter id to retrieve a specific job code.

Get Jobcode Hierarchy

Use get_jobcode_hierarchy to get the complete jobcode hierarchy structure.

Timesheet Tools

Get Timesheets

Use get_timesheets with required parameters (at least one):

  • ids, start_date, modified_before, or modified_since
  • Optional filters for users, groups, job codes, etc.

Get Specific Timesheet

Use get_timesheet with required parameter id to retrieve a specific timesheet.

Get Current Timesheets

Use get_current_timesheets to see currently active timesheets with parameter on_the_clock set to "yes".

User Tools

Get Users

Use get_users with various filtering options:

  • User filters: ids, not_ids, employee_numbers, usernames
  • Group filters: group_ids, not_group_ids
  • Status filters: payroll_ids, active
  • Name filters: first_name, last_name
  • Time-based filters: modified_before, modified_since

Get Specific User

Use get_user with required parameter id to retrieve a specific user.

Get Current User

Use get_current_user to retrieve information about the authenticated user.

Get Groups

Use get_groups to retrieve group information with optional filtering.

Project Management Tools

Get Projects

Use get_projects with optional filtering parameters:

  • ids, active, client_id, jobcode_id
  • Time-based filters: modified_before, modified_since
  • Pagination: page, per_page

Get Project Activities

Use get_project_activities to retrieve project activity logs with optional filtering.

Reports Tools

Get Current Totals

Use get_current_totals to get a snapshot of current time totals.

Get Payroll Report

Use get_payroll with required parameters:

  • start_date: Beginning of pay period (YYYY-MM-DD)
  • end_date: End of pay period (YYYY-MM-DD)
  • Optional filters for specific users or groups

Get Payroll by Jobcode

Use get_payroll_by_jobcode to get payroll data grouped by jobcode.

Get Project Report

Use get_project_report to retrieve detailed project time entries.

Additional Tools

Get Custom Fields

Use get_custom_fields to retrieve custom tracking fields configured in QuickBooks Time.

Get Last Modified Timestamps

Use get_last_modified to check when different object types were last updated.

Get Notifications

Use get_notifications to retrieve notification messages.

Get Managed Clients

Use get_managed_clients to retrieve client information.

How to add this MCP server to Cursor

There are two ways to add an MCP server to Cursor. The most common way is to add the server globally in the ~/.cursor/mcp.json file so that it is available in all of your projects.

If you only need the server in a single project, you can add it to the project instead by creating or adding it to the .cursor/mcp.json file.

Adding an MCP server to Cursor globally

To add a global MCP server go to Cursor Settings > MCP and click "Add new global MCP server".

When you click that button the ~/.cursor/mcp.json file will be opened and you can add your server like this:

{
    "mcpServers": {
        "cursor-rules-mcp": {
            "command": "npx",
            "args": [
                "-y",
                "cursor-rules-mcp"
            ]
        }
    }
}

Adding an MCP server to a project

To add an MCP server to a project you can create a new .cursor/mcp.json file or add it to the existing one. This will look exactly the same as the global MCP server example above.

How to use the MCP server

Once the server is installed, you might need to head back to Settings > MCP and click the refresh button.

The Cursor agent will then be able to see the available tools the added MCP server has available and will call them when it needs to.

You can also explictly ask the agent to use the tool by mentioning the tool name and describing what the function does.

Want to 10x your AI skills?

Get a free account and learn to code + market your apps using AI (with or without vibes!).

Nah, maybe later