change-user-virtual-time MCP Tool
개요
change-user-virtual-time MCP Tool은 사용자의 가상 시간을 특정 시간(HH:mm 형식)으로 변경하는 도구입니다. TimeMachine 기능을 통해 사용자의 시간을 원하는 시각으로 정밀하게 조정할 수 있어 테스트나 데모 시나리오에서 유용합니다.
이 문서에서는 다음 사용 방법을 다룹니다:
- JSON 형식: 구조화된 데이터로 정확한 제어가 필요한 경우
- LLM AI Chat: 자연어로 간편하게 사용하고 싶은 경우
두 방법 모두 같은 결과를 제공하며, 사용자의 선호도와 상황에 따라 선택할 수 있습니다.
도구 정보
- 이름:
change_user_virtual_time - 설명: 사용자의 가상 시간을 특정 시간(HH:mm 형식)으로 변경
- 카테고리: 시간 관리 도구
파라미터
필수 파라미터
| 파라미터 | 타입 | 설명 | 제약사항 |
|---|---|---|---|
userId | string | 시간을 변경할 사용자의 ID | UUID 형식 (예: a1b2c3d4-e5f6-7890-abcd-ef1234567890) |
newTime | string | 변경할 새로운 시간 | HH:mm 형식 (예: "09:30", "14:15", "23:45") |
선택 파라미터
| 파라미터 | 타입 | 기본값 | 설명 |
|---|---|---|---|
reason | string | "특정 사용자 테스트를 위한 시간 변경" | 시간 변경 사유 |
시간 형식 검증
newTime은 다음 형식을 따라야 합니다:
- HH:mm 형식 (24시간제)
- 시간: 00-23
- 분: 00-59
- 예시:
"09:30","14:15","23:45","00:00"
LLM AI Chat에서의 사용법
LLM AI Chat에서는 자연어로 사용자의 가상 시간 변경을 요청할 수 있습니다.
기본 시간 변경
사용자 3a5822e5-595e-4bd5-b06a-f46104a34bd5의 시간을 09:30으로 변경해주세요.
또는
사용자 3a5822e5-595e-4bd5-b06a-f46104a34bd5의 가상 시간을 오후 2시 15분으로 설정해주세요.
테스트 목적 시간 변경
사용자 3a5822e5-595e-4bd5-b06a-f46104a34bd5의 시간을 14:30으로 변경해주세요.
테스트 목적: 오후 시간대 알림 기능 확인
특정 시나리오 테스트
사용자 3a5822e5-595e-4bd5-b06a-f46104a34bd5의 시간을 23:45로 설정해주세요.
야간 모드 테스트를 위해서요.
여러 시간대 테스트
사용자 3a5822e5-595e-4bd5-b06a-f46104a34bd5의 시간을 다음과 같이 변경해주세요:
1. 먼저 06:00 (아침 시간)
2. 그다음 12:00 (점심 시간)
3. 마지막으로 18:00 (저녁 시간)
자연어 응답 예시
요청: "사용자 3a5822e5-595e-4bd5-b06a-f46104a34bd5의 시간을 09:30으로 변경해주세요."
응답: "사용자의 가상 시간을 성공적으로 변경했습니다.
✅ 시간 변경 완료:
- 사용자 ID: 3a5822e5-595e-4bd5-b06a-f46104a34bd5
- 이전 시간: 2024-01-08T08:45:30.000Z
- 이전 로컬 시간: 2024-01-08 17:45:30
- 현재 시간: 2024-01-08T09:30:00.000Z
- 현재 로컬 시간: 2024-01-08 09:30:00
- 타임존: Asia/Seoul
- 변경 시각: 2024-01-08T10:30:45.123Z
- TimeMachine 상태: 활성화됨
- 이벤트 발행: 완료
- 변경 사유: 특정 사용자 테스트를 위한 시간 변경
사용자의 가상 시간이 09:30으로 정확히 설정되었습니다."
사용 예시 (JSON 형식)
기본 시간 변경
{
"tool": "change_user_virtual_time",
"arguments": {
"userId": "3a5822e5-595e-4bd5-b06a-f46104a34bd5",
"newTime": "09:30"
}
}
사유와 함께 시간 변경
{
"tool": "change_user_virtual_time",
"arguments": {
"userId": "3a5822e5-595e-4bd5-b06a-f46104a34bd5",
"newTime": "14:15",
"reason": "오후 시간대 알림 기능 테스트"
}
}
야간 시간 설정
{
"tool": "change_user_virtual_time",
"arguments": {
"userId": "3a5822e5-595e-4bd5-b06a-f46104a34bd5",
"newTime": "23:45",
"reason": "야간 모드 및 수면 관련 기능 테스트"
}
}
정각 시간 설정
{
"tool": "change_user_virtual_time",
"arguments": {
"userId": "3a5822e5-595e-4bd5-b06a-f46104a34bd5",
"newTime": "12:00",
"reason": "정오 시간대 기능 검증"
}
}
응답 형식
성공 응답 예시
{
"content": [
{
"type": "text",
"text": "✅ Successfully changed virtual time for user 3a5822e5-595e-4bd5-b06a-f46104a34bd5:\n\nUser ID: 3a5822e5-595e-4bd5-b06a-f46104a34bd5\nPrevious Time: 2024-01-08T08:45:30.000Z\nPrevious Time Zone: Asia/Seoul\nPrevious Local Time: 2024-01-08 17:45:30\nCurrent Time: 2024-01-08T09:30:00.000Z\nCurrent Time Zone: Asia/Seoul\nCurrent Local Time: 2024-01-08 09:30:00\nChange Timestamp: 2024-01-08T10:30:45.123Z\nTimeMachine was Active: Yes\nTimeMachine is Active: Yes\nEvent Published: Yes\nReason: 특정 사용자 테스트를 위한 시간 변경"
}
]
}
응답 데이터 구조
| 필드 | 설명 |
|---|---|
User ID | 시간이 변경된 사용자 ID |
Previous Time | 변경 전 시간 (UTC) |
Previous Time Zone | 변경 전 타임존 |
Previous Local Time | 변경 전 로컬 시간 |
Current Time | 변경 후 시간 (UTC) |
Current Time Zone | 변경 후 타임존 |
Current Local Time | 변경 후 로컬 시간 |
Change Timestamp | 변경 실행 시각 |
TimeMachine was Active | 변경 전 TimeMachine 활성화 상태 |
TimeMachine is Active | 변경 후 TimeMachine 활성화 상태 |
Event Published | 변경 이벤트 발행 여부 |
Reason | 변경 사유 |
사용 시나리오
시나리오 1: 아침 시간대 기능 테스트
LLM AI Chat:
사용자 3a5822e5-595e-4bd5-b06a-f46104a34bd5의 시간을 07:00으로 변경해주세요.
아침 알림 기능을 테스트하려고 합니다.
JSON 형식:
{
"tool": "change_user_virtual_time",
"arguments": {
"userId": "3a5822e5-595e-4bd5-b06a-f46104a34bd5",
"newTime": "07:00",
"reason": "아침 알림 기능 테스트"
}
}
시나리오 2: 점심 시간대 테스트
LLM AI Chat:
사용자 3a5822e5-595e-4bd5-b06a-f46104a34bd5의 시간을 12:30으로 설정해주세요.
점심 시간 관련 기능을 확인하고 싶습니다.
JSON 형식:
{
"tool": "change_user_virtual_time",
"arguments": {
"userId": "3a5822e5-595e-4bd5-b06a-f46104a34bd5",
"newTime": "12:30",
"reason": "점심 시간 관련 기능 테스트"
}
}
시나리오 3: 야간 모드 테스트
LLM AI Chat:
사용자 3a5822e5-595e-4bd5-b06a-f46104a34bd5의 시간을 22:00으로 변경해주세요.
야간 모드와 수면 관련 기능을 테스트하려고 합니다.
JSON 형식:
{
"tool": "change_user_virtual_time",
"arguments": {
"userId": "3a5822e5-595e-4bd5-b06a-f46104a34bd5",
"newTime": "22:00",
"reason": "야간 모드 및 수면 관련 기능 테스트"
}
}
시나리오 4: 업무 시간 시뮬레이션
LLM AI Chat:
사용자 3a5822e5-595e-4bd5-b06a-f46104a34bd5의 시간을 다음과 같이 변경해주세요:
- 09:00 (업무 시작)
- 업무 시간 중 알림 기능 테스트
JSON 형식:
{
"tool": "change_user_virtual_time",
"arguments": {
"userId": "3a5822e5-595e-4bd5-b06a-f46104a34bd5",
"newTime": "09:00",
"reason": "업무 시간 시뮬레이션 테스트"
}
}
시나리오 5: 연속적인 시간 변경 테스트
LLM AI Chat:
사용자 3a5822e5-595e-4bd5-b06a-f46104a34bd5의 하루 일과를 시뮬레이션하기 위해
시간을 순차적으로 변경해주세요:
1. 06:00 (기상)
2. 08:00 (출근)
3. 12:00 (점심)
4. 18:00 (퇴근)
5. 22:00 (취침 준비)
JSON 형식 (순차 실행):
// 1단계: 기상 시간
{
"tool": "change_user_virtual_time",
"arguments": {
"userId": "3a5822e5-595e-4bd5-b06a-f46104a34bd5",
"newTime": "06:00",
"reason": "기상 시간 시뮬레이션"
}
}
// 2단계: 출근 시간
{
"tool": "change_user_virtual_time",
"arguments": {
"userId": "3a5822e5-595e-4bd5-b06a-f46104a34bd5",
"newTime": "08:00",
"reason": "출근 시간 시뮬레이션"
}
}
문제 해결
일반적인 문제
- 시간 형식 오류: 잘못된 HH:mm 형식 입력
- UUID 형식 오류: 잘못된 userId 형식
- 사용자 미존재: 존재하지 않는 사용자 ID
- TimeMachine 비활성화: TimeMachine이 비활성화된 사용자
- 권한 부족: 시간 변경 권한 없음
에러 응답 예시
시간 형식 오류:
{
"content": [
{
"type": "text",
"text": "오류: 시간 형식이 올바르지 않습니다. HH:mm 형식으로 입력하세요. (예: \"09:30\", \"14:15\", \"23:45\")"
}
],
"isError": true
}
사용자 미존재:
{
"content": [
{
"type": "text",
"text": "❌ Error changing user virtual time: User not found or user has no TimeMachine configuration"
}
],
"isError": true
}
권한 부족:
{
"content": [
{
"type": "text",
"text": "❌ Error changing user virtual time: Insufficient permissions to change user virtual time"
}
],
"isError": true
}
잘못된 요청 데이터:
{
"content": [
{
"type": "text",
"text": "❌ Error changing user virtual time: Invalid time format or request data"
}
],
"isError": true
}
문제 해결 가이드
- 시간 형식 확인: HH:mm 형식 준수 (예: "09:30", "14:15")
- 사용자 ID 확인: 올바른 UUID 형식인지 확인
- TimeMachine 상태 확인: 사용자의 TimeMachine이 활성화되어 있는지 확인
- 권한 확인: 시간 변경 권한이 있는지 확인
- API 상태 확인: TimeMachine API 서비스 상태 확인
시간 형식 가이드
유효한 시간 형식
✅ 올바른 형식:
- "00:00" (자정)
- "06:30" (오전 6시 30분)
- "09:15" (오전 9시 15분)
- "12:00" (정오)
- "14:45" (오후 2시 45분)
- "18:30" (오후 6시 30분)
- "23:59" (오후 11시 59분)
잘못된 시간 형식
❌ 잘못된 형식:
- "9:30" (시간이 한 자리)
- "14:5" (분이 한 자리)
- "25:00" (24시간 초과)
- "12:60" (60분 초과)
- "14:30:00" (초 포함)
- "2:30 PM" (12시간제)
연계 작업 워크플로우
1. 시간 변경 → 상태 확인
// 1. 사용자 시간 변경
const timeChange = await mcpTool.execute({
tool: "change_user_virtual_time",
arguments: {
userId: "3a5822e5-595e-4bd5-b06a-f46104a34bd5",
newTime: "09:30",
reason: "테스트 시나리오 실행"
}
});
// 2. 변경된 시간 확인
const virtualTime = await mcpTool.execute({
tool: "get_user_virtual_time",
arguments: {
userId: "3a5822e5-595e-4bd5-b06a-f46104a34bd5"
}
});
2. 시간 변경 → 사용자 상태 조회
// 1. 특정 시간으로 변경
const timeChange = await mcpTool.execute({
tool: "change_user_virtual_time",
arguments: {
userId: "3a5822e5-595e-4bd5-b06a-f46104a34bd5",
newTime: "14:30"
}
});
// 2. 사용자 전체 상태 확인
const userState = await mcpTool.execute({
tool: "get_user_state",
arguments: {
userId: "3a5822e5-595e-4bd5-b06a-f46104a34bd5"
}
});
3. 연속 시간 변경 테스트
const timeSequence = ["06:00", "12:00", "18:00", "22:00"];
const userId = "3a5822e5-595e-4bd5-b06a-f46104a34bd5";
for (const time of timeSequence) {
await mcpTool.execute({
tool: "change_user_virtual_time",
arguments: {
userId: userId,
newTime: time,
reason: `일과 시뮬레이션 - ${time}`
}
});
// 각 시간 변경 후 잠시 대기
await new Promise(resolve => setTimeout(resolve, 1000));
}
활용 사례
1. 시간 기반 기능 테스트
// 특정 시간대별 기능 테스트
const testTimeBasedFeatures = async (userId) => {
const testTimes = [
{ time: "07:00", scenario: "아침 알림" },
{ time: "12:00", scenario: "점심 알림" },
{ time: "18:00", scenario: "저녁 알림" },
{ time: "22:00", scenario: "수면 준비" }
];
for (const test of testTimes) {
await changeUserVirtualTime(userId, test.time, test.scenario);
// 기능 테스트 실행
await testFeature(test.scenario);
}
};
2. 하루 일과 시뮬레이션
// 사용자 하루 일과 시뮬레이션
const simulateDailyRoutine = async (userId) => {
const routine = [
{ time: "06:00", activity: "기상" },
{ time: "08:00", activity: "출근" },
{ time: "12:00", activity: "점심" },
{ time: "18:00", activity: "퇴근" },
{ time: "22:00", activity: "취침 준비" }
];
for (const step of routine) {
await changeUserVirtualTime(userId, step.time, `${step.activity} 시뮬레이션`);
await logActivity(userId, step.activity);
}
};
3. 시간대별 성능 테스트
// 다양한 시간대에서의 시스템 성능 테스트
const performanceTest = async (userId) => {
const testHours = Array.from({length: 24}, (_, i) =>
`${i.toString().padStart(2, '0')}:00`
);
const results = [];
for (const hour of testHours) {
await changeUserVirtualTime(userId, hour, `${hour} 성능 테스트`);
const performance = await measureSystemPerformance();
results.push({ time: hour, performance });
}
return results;
};
모니터링 및 추적
1. 시간 변경 이력 조회
LLM AI Chat:
사용자 3a5822e5-595e-4bd5-b06a-f46104a34bd5의 시간 변경 이력을 조회해주세요.
JSON 형식:
{
"tool": "query_logs",
"arguments": {
"userId": "3a5822e5-595e-4bd5-b06a-f46104a34bd5",
"startTime": "2024-01-07T00:00:00.000Z",
"endTime": "2024-01-08T00:00:00.000Z",
"correlationId": "time-change"
}
}
2. TimeMachine 관련 오류 분석
LLM AI Chat:
TimeMachine 시간 변경 관련 오류를 분석해주세요.
JSON 형식:
{
"tool": "analyze_error_patterns",
"arguments": {
"startTime": "2024-01-01T00:00:00.000Z",
"endTime": "2024-01-08T00:00:00.000Z",
"serviceName": "time-machine"
}
}
성능 고려사항
- 시간 변경 빈도: 너무 빈번한 시간 변경은 시스템 부하 증가
- 이벤트 발행: 시간 변경 시 관련 이벤트가 발행되므로 성능 고려
- 데이터 동기화: 시간 변경 후 관련 데이터 동기화 시간 필요
- 캐시 무효화: 시간 관련 캐시 무효화 처리
보안 및 프라이버시
- Service Account 토큰 인증 필요
- 시간 변경 권한 제한
- 변경 이력 로그 기록
- 사용자 개인정보 보호 준수
- 테스트 목적 외 사용 제한
관련 도구
- get-user-virtual-time: 사용자 가상 시간 조회
- change-user-day-index: 날짜 인덱스 기반 시간 변경
- get-user-timemachine-status: TimeMachine 상태 확인
- enable-user-timemachine: TimeMachine 활성화
- disable-user-timemachine: TimeMachine 비활성화
- get-user-state: 사용자 전체 상태 조회