본문으로 건너뛰기

get-user-virtual-time MCP Tool

개요​

get-user-virtual-time MCP Tool은 특정 사용자의 가상 시간을 조회하는 도구입니다. TimeMachine 기능이 활성화된 사용자의 경우 가상 시간을, 비활성화된 사용자의 경우 실제 시간을 조회할 수 있습니다.

이 문서에서는 다음 사용 방법을 다룹니다:

  • JSON 형식: 구조화된 데이터로 정확한 제어가 필요한 경우
  • LLM AI Chat: 자연어로 간편하게 사용하고 싶은 경우

두 방법 모두 같은 결과를 제공하며, 사용자의 선호도와 상황에 따라 선택할 수 있습니다.

도구 정보​

  • 이름: get_user_virtual_time
  • 설명: 특정 사용자의 가상 시간 조회 (TimeMachine 기능)
  • 카테고리: 시간 관리 도구

파라미터​

필수 파라미터​

파라미터타입설명예시
userIdstring대상 사용자 ID (UUID 형식)"3a5822e5-595e-4bd5-b06a-f46104a34bd5"

LLM AI Chat에서의 사용법​

LLM AI Chat에서는 자연어로 사용자의 가상 시간을 조회할 수 있습니다.

기본 시간 조회​

사용자 3a5822e5-595e-4bd5-b06a-f46104a34bd5의 현재 시간을 알려주세요.

또는

이 사용자의 가상 시간을 확인해주세요: 3a5822e5-595e-4bd5-b06a-f46104a34bd5

TimeMachine 상태 확인​

사용자 3a5822e5-595e-4bd5-b06a-f46104a34bd5의 TimeMachine이 활성화되어 있는지 확인해주세요.

치료 일차 확인​

사용자가 현재 치료 몇 일차인지 알려주세요.
사용자 ID: 3a5822e5-595e-4bd5-b06a-f46104a34bd5

자연어 응답 예시​

요청: "사용자 3a5822e5-595e-4bd5-b06a-f46104a34bd5의 현재 시간을 알려주세요."

TimeMachine 활성화된 경우:

Time information for user 3a5822e5-595e-4bd5-b06a-f46104a34bd5:

=== Virtual Time (TimeMachine Active) ===
User is currently using virtual time controlled by TimeMachine

📅 Current Time: 2025-01-15T23:00:00.000Z
🌍 Local Time: 2025-01-16 0:00:00
📊 Day Index: 10
🌍 Time Zone: Europe/Berlin
⚙️ TimeMachine Active: ✅ Yes
📝 Last Changed: 2025-01-08T10:25:30.123Z by 00000000-0000-0000-0000-000000000000

💡 Note: This user is using virtual time. Time may be different from real-world time.

TimeMachine 비활성화된 경우:

Time information for user 3a5822e5-595e-4bd5-b06a-f46104a34bd5:

=== Real Time (TimeMachine Inactive) ===
User is using real-world time (TimeMachine feature is disabled)

📅 Current Time: 2025-01-08T10:30:00.000Z
🌍 Local Time: 2025-01-08 19:30:00
📊 Day Index: 1
🌍 Time Zone: Europe/Berlin
⚙️ TimeMachine Active: ❌ No
📝 Using real-world time

💡 Note: This user has disabled TimeMachine and is using real-world time.

사용 예시 (JSON 형식)​

기본 사용자 시간 조회​

{
"tool": "get_user_virtual_time",
"arguments": {
"userId": "3a5822e5-595e-4bd5-b06a-f46104a34bd5"
}
}

응답 형식​

성공 응답 (TimeMachine 활성화)​

{
"content": [
{
"type": "text",
"text": "Time information for user 3a5822e5-595e-4bd5-b06a-f46104a34bd5:\n\n=== Virtual Time (TimeMachine Active) ===\nUser is currently using virtual time controlled by TimeMachine\n\n📅 Current Time: 2025-01-15T23:00:00.000Z\n🌍 Local Time: 2025-01-16 0:00:00\n📊 Day Index: 10\n🌍 Time Zone: Europe/Berlin\n⚙️ TimeMachine Active: ✅ Yes\n📝 Last Changed: 2025-01-08T10:25:30.123Z by 00000000-0000-0000-0000-000000000000\n\n💡 Note: This user is using virtual time. Time may be different from real-world time."
}
]
}

성공 응답 (TimeMachine 비활성화)​

{
"content": [
{
"type": "text",
"text": "Time information for user 3a5822e5-595e-4bd5-b06a-f46104a34bd5:\n\n=== Real Time (TimeMachine Inactive) ===\nUser is using real-world time (TimeMachine feature is disabled)\n\n📅 Current Time: 2025-01-08T10:30:00.000Z\n🌍 Local Time: 2025-01-08 19:30:00\n📊 Day Index: 1\n🌍 Time Zone: Europe/Berlin\n⚙️ TimeMachine Active: ❌ No\n📝 Using real-world time\n\n💡 Note: This user has disabled TimeMachine and is using real-world time."
}
]
}

에러 응답​

{
"content": [
{
"type": "text",
"text": "❌ Error getting user virtual time: User not found or user has no time information"
}
],
"isError": true
}

사용 시나리오​

시나리오 1: 사용자 시간 상태 확인​

LLM AI Chat:

테스트 사용자의 현재 시간 상태를 확인해주세요.
사용자 ID: 3a5822e5-595e-4bd5-b06a-f46104a34bd5

JSON 형식:

{
"tool": "get_user_virtual_time",
"arguments": {
"userId": "3a5822e5-595e-4bd5-b06a-f46104a34bd5"
}
}

시나리오 2: 시간 변경 후 확인​

LLM AI Chat:

사용자의 시간을 변경한 후 정상적으로 반영되었는지 확인해주세요.
사용자 ID: 3a5822e5-595e-4bd5-b06a-f46104a34bd5

JSON 형식 (순차 실행):

// 1단계: 시간 변경
{
"tool": "change_user_day_index",
"arguments": {
"userId": "3a5822e5-595e-4bd5-b06a-f46104a34bd5",
"dayIndex": 15,
"reason": "테스트 후 확인"
}
}

// 2단계: 변경된 시간 확인
{
"tool": "get_user_virtual_time",
"arguments": {
"userId": "3a5822e5-595e-4bd5-b06a-f46104a34bd5"
}
}

시나리오 3: 여러 사용자 시간 비교​

LLM AI Chat:

다음 사용자들의 현재 시간을 비교해주세요:
- 사용자 A: 3a5822e5-595e-4bd5-b06a-f46104a34bd5
- 사용자 B: 4b6933f6-6a6f-5ce6-c17b-g57215b45ce6

JSON 형식 (병렬 실행):

// 사용자 A 시간 조회
{
"tool": "get_user_virtual_time",
"arguments": {
"userId": "3a5822e5-595e-4bd5-b06a-f46104a34bd5"
}
}

// 사용자 B 시간 조회
{
"tool": "get_user_virtual_time",
"arguments": {
"userId": "4b6933f6-6a6f-5ce6-c17b-g57215b45ce6"
}
}

시나리오 4: 치료 진행도 확인​

LLM AI Chat:

사용자가 현재 치료 몇 일차인지 확인하고, 관련 설문 데이터도 함께 조회해주세요.
사용자 ID: 3a5822e5-595e-4bd5-b06a-f46104a34bd5

JSON 형식 (순차 실행):

// 1단계: 사용자 시간 확인
{
"tool": "get_user_virtual_time",
"arguments": {
"userId": "3a5822e5-595e-4bd5-b06a-f46104a34bd5"
}
}

// 2단계: 설문 데이터 조회
{
"tool": "questionnaire_data_query",
"arguments": {
"userId": "3a5822e5-595e-4bd5-b06a-f46104a34bd5",
"includeDetails": true
}
}

응답 데이터 해석​

주요 정보​

항목설명
Current Time사용자의 현재 시간 (UTC)
Local Time사용자의 로컬 시간 (타임존 적용)
Day Index치료 일차 (1부터 시작)
Time Zone사용자의 타임존
TimeMachine ActiveTimeMachine 활성화 여부
Last Changed마지막 변경 시각 및 변경자

TimeMachine 상태별 의미​

TimeMachine 활성화 (Virtual Time)​

  • 사용자가 가상 시간을 사용 중
  • 실제 시간과 다를 수 있음
  • 테스트나 시나리오 검증 목적
  • 변경 이력 추적 가능

TimeMachine 비활성화 (Real Time)​

  • 사용자가 실제 시간을 사용 중
  • 일반적인 앱 사용 상태
  • 변경 이력 없음

문제 해결​

일반적인 오류​

  1. 사용자 없음: 존재하지 않는 사용자 ID
  2. 시간 정보 없음: 사용자에게 시간 정보가 설정되지 않음
  3. 권한 부족: 사용자 시간 정보 접근 권한 없음
  4. 인증 실패: Service Account 토큰 문제

에러 유형별 대응​

404 에러 (사용자 없음)​

{
"content": [
{
"type": "text",
"text": "❌ Error getting user virtual time: User not found or user has no time information"
}
],
"isError": true
}

403 에러 (권한 부족)​

{
"content": [
{
"type": "text",
"text": "❌ Error getting user virtual time: Insufficient permissions to access user time information"
}
],
"isError": true
}

디버깅 팁​

  1. 사용자 ID 확인: UUID 형식이 올바른지 확인
  2. 권한 검증: 해당 사용자의 정보를 조회할 권한이 있는지 확인
  3. 사용자 등록 상태: 사용자가 정상적으로 등록되었는지 확인
  4. TimeMachine 설정: 사용자에게 TimeMachine 설정이 있는지 확인

활용 사례​

1. 시간 변경 검증​

// 시간 변경 전 상태 확인
const beforeChange = await mcpTool.execute({
tool: "get_user_virtual_time",
arguments: { userId: "user-id" }
});

// 시간 변경 실행
await mcpTool.execute({
tool: "change_user_day_index",
arguments: { userId: "user-id", dayIndex: 10 }
});

// 시간 변경 후 상태 확인
const afterChange = await mcpTool.execute({
tool: "get_user_virtual_time",
arguments: { userId: "user-id" }
});

// 변경 결과 비교
console.log("Before:", beforeChange);
console.log("After:", afterChange);

2. 사용자 상태 모니터링​

// 여러 사용자의 시간 상태 확인
const userIds = ["user-1", "user-2", "user-3"];
const timeStates = await Promise.all(
userIds.map(userId => mcpTool.execute({
tool: "get_user_virtual_time",
arguments: { userId }
}))
);

// TimeMachine 활성 사용자 필터링
const virtualTimeUsers = timeStates.filter(state =>
state.content[0].text.includes("TimeMachine Active: ✅ Yes")
);

3. 치료 진행도 추적​

// 사용자의 치료 진행도 확인
const userTime = await mcpTool.execute({
tool: "get_user_virtual_time",
arguments: { userId: "user-id" }
});

// Day Index 추출
const dayIndexMatch = userTime.content[0].text.match(/Day Index: (\d+)/);
const currentDay = dayIndexMatch ? parseInt(dayIndexMatch[1]) : 1;

// 주간 설문 시점 확인
if (currentDay % 7 === 0) {
console.log("주간 설문 시점입니다.");
}

관련 도구​

  • change-user-day-index: 사용자 가상 시간 변경
  • get-user-timemachine-status: TimeMachine 상태 조회
  • enable-user-timemachine: TimeMachine 활성화
  • disable-user-timemachine: TimeMachine 비활성화
  • get-current-time: 현재 시간 조회

관련 문서​