Skip to main content
Glama

QuickBooks Time MCP サーバー (V2 アップデート)

これは、単一のインターフェースからすべてのQuickBooks Time API機能にアクセスできる統合MCPサーバーです。4つの独立したサーバーの機能を統合しています。

  1. ジョブコードツール

  2. レポートとコアツール

  3. タイムシートツール

  4. ユーザーツール

このプロジェクトの改善にご協力いただけると嬉しいです!ようやく何かお返しできることができて嬉しいです!

このプロジェクト全体は、人工知能(Anthropic、OpenAI、Llama/META)を用いて開発・公開されています。私自身、支援なしではコードをほとんど書けないためです。品質と機能性を保証するためにあらゆる努力を払っておりますが、不完全な点や改善の余地があるかもしれません。コミュニティの皆様からのフィードバック、修正、ご提案をお待ちしております。

  1. 依存関係をインストールします:

pip install -r requirements.txt
  1. QuickBooks Time アクセス トークンを使用して.envファイルを作成します。

QB_TIME_ACCESS_TOKEN=your_access_token_here NODE_ENV=development

クロードデスクトップ構成

このサーバーをClaude Desktopで使用するには、Claude Desktopの設定で設定する必要があります。設定例を以下に示します。

{ "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" } } } }

Related MCP server: whattimeisit-mcp

利用可能なツール

ジョブコードツール

  • get_jobcodes : 高度なフィルタリングオプションを使用してジョブコードを取得する

    • 基本フィルター:

      • ids : (数値の配列、オプション) ジョブコードIDのコンマ区切りリスト

      • name : (文字列、オプション) ジョブコード名でフィルタリング、文字列の先頭からのワイルドカード (*) マッチングをサポート

      • active : (文字列、オプション) ステータスでフィルタリング: 「はい」、「いいえ」、「両方」(デフォルト: 「はい」)

    • タイプと階層フィルター:

      • type : (文字列、オプション) タイプでフィルタリング: "regular"、"pto"、"paid_break"、"unpaid_break"、"all" (デフォルト: "regular")

      • parent_ids : (数値の配列、オプション) 親ジョブコードIDでフィルタリングします。特殊値: 0 (最上位レベルのみ)、-1 (全レベル)

    • 追加フィルター:

      • customfields : (ブール値、オプション) レスポンスにカスタムフィールドを含める

      • modified_before : (文字列、オプション) 変更日でフィルタリング (ISO 8601 形式)

      • modified_since : (文字列、オプション) 変更日でフィルタリング (ISO 8601 形式)

      • page : (数字) ページ番号

      • limit : (数値) ページあたりの結果数 (最大 200 件)

  • get_jobcode : IDで特定のジョブコードを取得する

    • 必須パラメータ:

      • id : (数値) 取得するジョブコードのID

  • get_jobcode_hierarchy : 完全なジョブコード階層構造を取得する

    • パラメータ:

      • parent_ids : (数値の配列、オプション) 親IDでフィルタリングします。値: 0 (最上位)、-1 (すべて)、または特定のID

      • active : (文字列、オプション) ステータスでフィルタリング: 「はい」、「いいえ」、「両方」(デフォルト: 「はい」)

      • type : (文字列、オプション) タイプでフィルタリング: "regular"、"pto"、"paid_break"、"unpaid_break"、"all" (デフォルト: "regular")

      • customfields : (ブール値、オプション) レスポンスにカスタムフィールドを含める

タイムシートツール

  • get_timesheets : フィルタリングしてタイムシートを取得する

    • 必須パラメータ(少なくとも1つ):

      • ids : (数値の配列) タイムシートIDのコンマ区切りリスト

      • start_date : (文字列) この日付以降のタイムシートを返します (YYYY-MM-DD)

      • modified_before : (文字列) この時間より前に変更されたタイムシートを返します (ISO 8601)

      • modified_since : (文字列) この時刻以降に変更されたタイムシートを返します (ISO 8601)

    • オプションパラメータ:

      • end_date : (文字列) この日付以前のタイムシートを返します (YYYY-MM-DD)

      • user_ids : (数値の配列) 特定のユーザーIDでフィルタリングする

      • group_ids : (数値の配列) 特定のグループIDでフィルタリングする

      • jobcode_ids : (数値の配列) 特定のジョブコードIDでフィルタリングする(子を含む)

      • payroll_ids : (数値の配列) 特定の給与IDでフィルタリング

      • on_the_clock : (文字列) 現在の作業ステータスでフィルタリング: 「yes」、「no」、「both」(デフォルト: 「no」)

      • jobcode_type : (文字列) タイプでフィルタリング: "regular"、"pto"、"paid_break"、"unpaid_break"、"all" (デフォルト: "all")

      • page : (数字) ページ番号

      • limit : (数) ページあたりの結果数

  • get_timesheet : IDで特定のタイムシートを取得する

    • 必須パラメータ:

      • id : (数値) 取得するタイムシートのID

  • get_current_timesheets : 現在アクティブなタイムシートを取得する

    • 必須パラメータ:

      • on_the_clock : (文字列) 「yes」に設定する必要があります

    • オプションパラメータ:

      • user_ids : (数値の配列) 特定のユーザーのアクティブなタイムシートをフィルタリングします

      • group_ids : (数値の配列) 特定のグループ内のユーザーのアクティブなタイムシートをフィルタリングします

      • jobcode_ids : (数値の配列) 特定のジョブコードのアクティブなタイムシートをフィルタリングします

      • supplemental_data : (文字列) 補足データを含める: "yes", "no" (デフォルト: "yes")

ユーザーツール

  • get_users : フィルタリングしてすべてのユーザーを取得する

    • ユーザー識別フィルター:

      • ids : (数値の配列、オプション) 特定のユーザーIDでフィルタリング

      • not_ids : (数値の配列、オプション) 特定のユーザーIDを除外する

      • employee_numbers : (数値の配列、オプション) 従業員番号でフィルタリング

      • usernames : (文字列の配列、オプション) 特定のユーザー名でフィルタリング

    • グループフィルター:

      • group_ids : (数値の配列、オプション) グループメンバーシップでフィルタリング

      • not_group_ids : (数値の配列、オプション) 特定のグループからユーザーを除外する

    • ステータスと識別フィルター:

      • payroll_ids : (文字列の配列、オプション) 給与識別番号でフィルタリング

      • active : (文字列、オプション) ステータスでフィルタリング: 「はい」、「いいえ」、「両方」(デフォルト: 「はい」)

    • 名前フィルター:

      • first_name : (文字列、オプション) 名でフィルタリング (ワイルドカード * をサポート)

      • last_name : (文字列、オプション) 姓でフィルタリング (ワイルドカード * をサポート)

    • 時間ベースのフィルター:

      • modified_before : (文字列、オプション) 変更日でフィルタリング (ISO 8601)

      • modified_since : (文字列、オプション) 変更日でフィルタリング (ISO 8601)

    • ページ番号:

      • page : (数値、オプション) ページ番号 (デフォルト: 1)

      • per_page : (数値、オプション) ページあたりの結果数 (デフォルト: 50、最大: 50)

  • get_user : IDで特定のユーザーを取得する

    • 必須パラメータ:

      • id : (数値) 取得するユーザーのID

  • get_current_user : 現在認証されているユーザーを取得する

    • パラメータは必要ありません

    • 以下を含む詳細なユーザー情報を返します:

      • 基本的なプロフィール情報

      • 会社詳細

      • PTO残高

      • 権限

      • カスタムフィールド

  • get_groups : QuickBooks Timeからすべてのグループを取得する

    • オプションパラメータ:

      • ids : (数値の配列) 特定のグループIDでフィルタリング

      • active : (文字列) ステータスでフィルタリング: 「はい」、「いいえ」、「両方」(デフォルト: 「はい」)

      • manager_ids : (数値の配列) マネージャーユーザーIDでグループをフィルタリングする

      • supplemental_data : (文字列) 補足データを含める: "yes", "no" (デフォルト: "yes")

    • 以下のグループ情報を返します:

      • 基本的なグループの詳細

      • マネージャーの割り当て

      • タイムシート設定

      • 時間入力設定

      • ブレーク設定

プロジェクト管理ツール

  • get_projects : フィルタリングしてプロジェクトを取得する

    • オプションパラメータ:

      • ids : (数値の配列) 特定のプロジェクトIDでフィルタリング

      • active : (文字列) ステータスでフィルタリング: 「はい」、「いいえ」、「両方」(デフォルト: 「はい」)

      • client_id : (数値) クライアントIDでフィルタリング

      • jobcode_id : (数値) 関連するジョブコードIDでフィルタリング

      • modified_before : (文字列) 変更日によるフィルタリング (ISO 8601)

      • modified_since : (文字列) 変更日でフィルタリング (ISO 8601)

      • page : (数値) ページ番号 (デフォルト: 1)

      • per_page : (数値) ページあたりの結果数 (デフォルト: 50、最大: 50)

    • 以下のプロジェクト情報を返します:

      • 基本的なプロジェクトの詳細

      • クライアントとジョブコードの関連付け

      • 予算情報

      • 日付とステータス

      • カスタムフィールド

  • get_project_activities : プロジェクトアクティビティログを取得する

    • オプションパラメータ:

      • project_ids : (数値の配列) 特定のプロジェクトにアクティビティをフィルタリングします

      • user_ids : (数値の配列) 特定のユーザーによるアクティビティのフィルタリング

      • activity_types : (文字列の配列) アクティビティの種類でフィルタリング: "status_change", "note_added", "budget_change", "date_change", "custom_field_change"

      • modified_before : (文字列) 変更日によるフィルタリング (ISO 8601)

      • modified_since : (文字列) 変更日でフィルタリング (ISO 8601)

      • page : (数値) ページ番号 (デフォルト: 1)

      • per_page : (数値) ページあたりの結果数 (デフォルト: 50、最大: 50)

    • 以下のアクティビティ情報を返します:

      • アクティビティの種類と詳細

      • 変更を行ったユーザー

      • 古い価値観と新しい価値観

      • タイムスタンプ

レポートツール

  • get_current_totals : シフトと日の合計を含む現在の合計のスナップショットを取得します。

    • オプションパラメータ:

      • user_ids : (数値の配列) 特定のユーザーの合計をフィルタリングします

      • group_ids : (数値の配列) 特定のグループ内のユーザーの合計をフィルタリングします

      • jobcode_ids : (数値の配列) 特定のジョブコードの合計をフィルタリングする

      • customfield_query : (文字列) 次の形式でカスタム フィールド値でフィルターします: <customfield_id>||

    • 戻り値:

      • アクティブ時間エントリのリアルタイム合計

      • 期間と開始時間

      • 関連するジョブコードとユーザー情報

      • カスタムフィールド値

  • get_payroll : 給与レポートを取得する

    • 必須パラメータ:

      • start_date : (文字列) 給与期間の開始日 (YYYY-MM-DD)

      • end_date : (文字列) 給与期間の終了日 (YYYY-MM-DD)

    • オプションパラメータ:

      • user_ids : (数値の配列) 特定のユーザーの給与をフィルタリングする

      • group_ids : (数値の配列) 特定のグループ内のユーザーの給与をフィルタリングします

      • include_zero_time : (ブール値) 時間エントリのないユーザーを含める (デフォルト: false)

    • 戻り値:

      • 種類別の合計時間(通常、残業、倍額、PTO)

      • ユーザーごとの日別内訳

      • タイムシート数

  • get_payroll_by_jobcode : ジョブコード別にグループ化された給与レポートを取得する

    • 必須パラメータ:

      • start_date : (文字列) 給与期間の開始日 (YYYY-MM-DD)

      • end_date : (文字列) 給与期間の終了日 (YYYY-MM-DD)

    • オプションパラメータ:

      • user_ids : (数値の配列) 特定のユーザーの給与をフィルタリングする

      • group_ids : (数値の配列) 特定のグループ内のユーザーの給与をフィルタリングします

      • jobcode_ids : (数値の配列) 特定のジョブコードの給与をフィルタリングする

      • jobcode_type : (文字列) タイプでフィルタリング: "regular"、"pto"、"paid_break"、"unpaid_break"

      • include_zero_time : (ブール値) 時間エントリのないジョブコードを含める (デフォルト: false)

    • 戻り値:

      • ジョブコード別の時間合計

      • 各ジョブコード内のユーザー別の内訳

      • ジョブコードごとの1日の合計

  • get_project_report : 時間エントリを含む詳細なプロジェクトレポートを取得します。

    • 必須パラメータ:

      • start_date : (文字列) 開始日(YYYY-MM-DD形式)

      • end_date : (文字列) 終了日(YYYY-MM-DD形式)

    • オプションパラメータ:

      • user_ids : (数値の配列) 特定のユーザーによる時間エントリのフィルタリング

      • group_ids : (数値の配列) 特定のグループで時間エントリをフィルタリングします

      • jobcode_ids : (数値の配列) 特定のジョブコードで時間エントリをフィルタリングします

      • jobcode_type : (文字列) タイプでフィルタリング: "regular"、"pto"、"unpaid_break"、"paid_break"、"all" (デフォルト: "all")

      • customfielditems : (オブジェクト) 次の形式でカスタムフィールド値でフィルタリングします: {"customfield_id": ["value1", "value2"]}

    • 戻り値:

      • プロジェクト時間合計

      • ユーザーとグループ別の内訳

      • 基準に基づいてフィルタリングされた時間エントリ

追加ツール

  • get_custom_fields : タイムカードに設定されたカスタム追跡フィールドを取得する

    • パラメータ:

      • ids : (数値の配列) 特定のカスタムフィールドIDでフィルタリング

      • active : (文字列) ステータスでフィルタリング: 「はい」、「いいえ」、「両方」

      • applies_to : (文字列) アプリケーションの種類でフィルタリング:「タイムシート」、「ジョブコード」、「ユーザー」

      • value_type : (文字列) 値の種類でフィルタリング: "managed-list", "free-form"

      • page : (数字) ページ番号

      • limit : (数) ページあたりの結果数

  • get_last_modified : オブジェクトの最終更新日時を取得する

    • パラメータ:

      • types : (文字列の配列) チェックするオブジェクトのタイプ (例: ["timesheets", "jobcodes", "users"])

  • get_notifications : 通知を受け取る

    • パラメータ:

      • page : (数字) ページ番号

      • limit : (数) ページあたりの結果数

  • get_managed_clients : 管理対象クライアントを取得する

    • パラメータ:

      • page : (数字) ページ番号

      • limit : (数) ページあたりの結果数

サーバーの実行

python main.py

サーバーが起動し、stdin/stdout で JSON-RPC リクエストをリッスンします。

ライセンス

MITライセンス - 詳細はLICENSEファイルを参照

貢献

貢献を歓迎します!お気軽にプルリクエストを送信してください。このプロジェクトはAIの支援を受けて開発されているため、コミュニティからの意見はコードベースの改善と保守に特に役立ちます。

サポート

問題や機能のリクエストについては、GitHub の問題ページを使用するか、github.com/aallsbury で直接ご連絡ください。

-
security - not tested
A
license - permissive license
-
quality - not tested

Latest Blog Posts

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/aallsbury/qb-time-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server