QuickBooks Time MCP サーバー (V2 アップデート)
これは、単一のインターフェースからすべてのQuickBooks Time API機能にアクセスできる統合MCPサーバーです。4つの独立したサーバーの機能を統合しています。
ジョブコードツール
レポートとコアツール
タイムシートツール
ユーザーツール
このプロジェクトの改善にご協力いただけると嬉しいです!ようやく何かお返しできることができて嬉しいです!
このプロジェクト全体は、人工知能(Anthropic、OpenAI、Llama/META)を用いて開発・公開されています。私自身、支援なしではコードをほとんど書けないためです。品質と機能性を保証するためにあらゆる努力を払っておりますが、不完全な点や改善の余地があるかもしれません。コミュニティの皆様からのフィードバック、修正、ご提案をお待ちしております。
依存関係をインストールします:
QuickBooks Time アクセス トークンを使用して
.envファイルを作成します。
クロードデスクトップ構成
このサーバーをClaude Desktopで使用するには、Claude Desktopの設定で設定する必要があります。設定例を以下に示します。
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 (すべて)、または特定のIDactive: (文字列、オプション) ステータスでフィルタリング: 「はい」、「いいえ」、「両方」(デフォルト: 「はい」)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: (数) ページあたりの結果数
サーバーの実行
サーバーが起動し、stdin/stdout で JSON-RPC リクエストをリッスンします。
ライセンス
MITライセンス - 詳細はLICENSEファイルを参照
貢献
貢献を歓迎します!お気軽にプルリクエストを送信してください。このプロジェクトはAIの支援を受けて開発されているため、コミュニティからの意見はコードベースの改善と保守に特に役立ちます。
サポート
問題や機能のリクエストについては、GitHub の問題ページを使用するか、github.com/aallsbury で直接ご連絡ください。