QuickBooks Time MCP 서버(V2 업데이트)
이는 단일 인터페이스를 통해 모든 QuickBooks Time API 기능에 액세스할 수 있는 통합 MCP 서버입니다. 4개의 개별 서버 기능을 결합했습니다.
JobCode 도구
보고서 및 핵심 도구
근무 시간표 도구
사용자 도구
이 프로젝트 개선에 정말 도움을 드리고 싶어요! 드디어 뭔가 보답할 수 있어서 정말 기뻐요!
이 프로젝트는 인공지능(Anthropic, OpenAI, Llama/META)을 활용하여 개발 및 배포되었습니다. 저는 개인적으로 도움 없이는 많은 코드를 작성할 수 없기 때문입니다. 품질과 기능을 보장하기 위해 최선을 다했지만, 불완전하거나 개선이 필요한 부분이 있을 수 있습니다. 커뮤니티의 피드백, 수정 사항 또는 제안을 환영합니다.
종속성 설치:
지엑스피1
QuickBooks Time 액세스 토큰으로
.env파일을 만듭니다.
클로드 데스크톱 구성
이 서버를 Claude Desktop과 함께 사용하려면 Claude Desktop 설정에서 서버를 구성해야 합니다. 구성 예시는 다음과 같습니다.
Related MCP server: whattimeisit-mcp
사용 가능한 도구
JobCode 도구
get_jobcodes: 고급 필터링 옵션을 사용하여 작업 코드 가져오기기본 필터:
ids: (숫자 배열, 선택 사항) 작업 코드 ID의 쉼표로 구분된 목록name: (문자열, 선택 사항) jobcode 이름으로 필터링, 문자열 시작부터 와일드카드(*) 매칭 지원active: (문자열, 선택 사항) 상태별 필터링: "예", "아니요", "둘 다" (기본값: "예")
유형 및 계층 필터:
type: (문자열, 선택 사항) 유형별 필터링: "일반", "휴가", "유급휴가", "무급휴가", "모두"(기본값: "일반")parent_ids: (숫자 배열, 선택 사항) 상위 작업 코드 ID로 필터링합니다. 특수 값: 0(최상위 레벨만), -1(모든 레벨)
추가 필터:
customfields: (부울, 선택 사항) 응답에 사용자 정의 필드 포함modified_before: (문자열, 선택 사항) 수정 날짜로 필터링(ISO 8601 형식)modified_since: (문자열, 선택 사항) 수정 날짜로 필터링(ISO 8601 형식)page: (번호) 페이지 번호limit: (숫자) 페이지당 결과 (최대 200개)
get_jobcode: ID로 특정 jobcode를 가져옵니다.필수 매개변수:
id: (숫자) 검색할 작업 코드의 ID
get_jobcode_hierarchy: 전체 jobcode 계층 구조를 가져옵니다.매개변수:
parent_ids: (숫자 배열, 선택 사항) 부모 ID로 필터링합니다. 값: 0(최상위), -1(전체), 또는 특정 IDactive: (문자열, 선택 사항) 상태별 필터링: "예", "아니요", "둘 다" (기본값: "예")type: (문자열, 선택 사항) 유형별 필터링: "일반", "휴가", "유급휴가", "무급휴가", "모두"(기본값: "일반")customfields: (부울, 선택 사항) 응답에 사용자 정의 필드 포함
근무 시간표 도구
get_timesheets: 필터링을 통해 타임시트 가져오기필수 매개변수(최소 하나):
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: (숫자 배열) 특정 jobcode ID로 필터링(자식 포함)payroll_ids: (숫자 배열) 특정 급여 ID로 필터링on_the_clock: (문자열) 현재 작업 상태별 필터링: "예", "아니요", "둘 다"(기본값: "아니요")jobcode_type: (문자열) 유형별 필터링: "정규", "휴가", "유급휴가", "무급휴가", "모두"(기본값: "모두")page: (번호) 페이지 번호limit: 페이지당 결과 수 (개수)
get_timesheet: ID로 특정 타임시트 가져오기필수 매개변수:
id: (숫자) 검색할 타임시트의 ID
get_current_timesheets: 현재 활성화된 타임시트를 가져옵니다.필수 매개변수:
on_the_clock: (문자열) "yes"로 설정해야 합니다.
선택적 매개변수:
user_ids: (숫자 배열) 특정 사용자에 대한 활성 근무 시간표를 필터링합니다.group_ids: (숫자 배열) 특정 그룹의 사용자에 대한 활성 근무 시간표를 필터링합니다.jobcode_ids: (숫자 배열) 특정 jobcode에 대한 활성 근무 시간표를 필터링합니다.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: (숫자) 연관된 jobcode 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: (숫자 배열) 특정 jobcode에 대한 총계를 필터링합니다.customfield_query: (문자열) <customfield_id>|| 형식으로 사용자 정의 필드 값으로 필터링합니다.
보고:
활성 시간 항목에 대한 실시간 총계
기간 및 시작 시간
연관된 작업 코드 및 사용자 정보
사용자 정의 필드 값
get_payroll: 급여 보고서 받기필수 매개변수:
start_date: (문자열) 급여 기간 시작일(YYYY-MM-DD)end_date: (문자열) 급여 기간 종료일(YYYY-MM-DD)
선택적 매개변수:
user_ids: (숫자 배열) 특정 사용자에 대한 급여 필터링group_ids: (숫자 배열) 특정 그룹의 사용자에 대한 급여 필터링include_zero_time: (부울) 시간 항목이 없는 사용자를 포함합니다(기본값: false)
보고:
유형별 총 근무 시간(정규, 초과 근무, 이중 근무, 유급 휴가)
사용자별 일일 분석
근무표 카운트
get_payroll_by_jobcode: jobcode별로 그룹화된 급여 보고서 가져오기필수 매개변수:
start_date: (문자열) 급여 기간 시작일(YYYY-MM-DD)end_date: (문자열) 급여 기간 종료일(YYYY-MM-DD)
선택적 매개변수:
user_ids: (숫자 배열) 특정 사용자에 대한 급여 필터링group_ids: (숫자 배열) 특정 그룹의 사용자에 대한 급여 필터링jobcode_ids: (숫자 배열) 특정 jobcode에 대한 급여 필터링jobcode_type: (문자열) 유형별 필터링: "정규", "휴가", "유급휴가", "무급휴가"include_zero_time: (부울) 시간 항목이 없는 작업 코드를 포함합니다(기본값: false)
보고:
작업 코드별 총 시간
각 작업 코드 내 사용자별 세부 정보
작업 코드별 일일 총계
get_project_report: 시간 항목이 포함된 자세한 프로젝트 보고서 받기필수 매개변수:
start_date: (문자열) YYYY-MM-DD 형식의 시작 날짜end_date: (문자열) YYYY-MM-DD 형식의 종료 날짜
선택적 매개변수:
user_ids: (숫자 배열) 특정 사용자별로 시간 항목을 필터링합니다.group_ids: (숫자 배열) 특정 그룹별로 시간 항목을 필터링합니다.jobcode_ids: (숫자 배열) 특정 jobcode로 시간 항목을 필터링합니다.jobcode_type: (문자열) 유형별 필터링: "정규", "유급휴가", "무급휴가", "유급휴가", "모두"(기본값: "모두")customfielditems: (객체) {"customfield_id": ["value1", "value2"]} 형식의 사용자 정의 필드 값으로 필터링합니다.
보고:
프로젝트 시간 총계
사용자 및 그룹별 세부 정보
기준에 따라 필터링된 시간 항목
추가 도구
get_custom_fields: 타임카드에 구성된 사용자 정의 추적 필드 가져오기매개변수:
ids: (숫자 배열) 특정 사용자 정의 필드 ID로 필터링active: (문자열) 상태별 필터링: "예", "아니요", "둘 다"applies_to: (문자열) 애플리케이션 유형별 필터링: "timesheet", "jobcode", "user"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 라이선스 - 자세한 내용은 라이선스 파일을 참조하세요.
기여하다
기여를 환영합니다! 풀 리퀘스트를 제출해 주세요. 이 프로젝트는 AI의 지원을 받아 개발되었으므로, 코드베이스 개선 및 유지 관리에 커뮤니티의 의견이 특히 중요합니다.
지원하다
이슈 및 기능 요청이 있으시면 GitHub 이슈 페이지를 이용하시거나 github.com/aallsbury에서 직접 연락해 주세요.