loading…
Search for a command to run...
loading…
Enables Claude Code and Codex to manage TwolineCloud internal portal vacation functions through a local stdio-based MCP server. Supports browser-based authentic
Enables Claude Code and Codex to manage TwolineCloud internal portal vacation functions through a local stdio-based MCP server. Supports browser-based authentication, leave balance queries, vacation request submissions, and cancellations with locally stored JWT tokens.
TwolineCloud 포털의 휴가와 타임테이블 기능을 Claude Code, Codex 같은 MCP 클라이언트에서 사용할 수 있게 만든 stdio 기반 MCP 서버입니다.
패키지를 npx로 실행하면 브라우저 로그인, 휴가 조회/신청, 타임테이블 조회/입력, 버전 진단 같은 작업을 MCP 도구로 사용할 수 있습니다.
18+# 사용자 전역 등록
claude mcp add tlc-portal-mcp --scope user -- npx -y tlc-portal-mcp
# 현재 프로젝트에만 등록
claude mcp add tlc-portal-mcp -- npx -y tlc-portal-mcp
# 사용자 전역 등록
codex mcp add tlc-portal-mcp -- npx -y tlc-portal-mcp
Codex는 현재 프로젝트 전용 add 명령이 별도로 없으므로, 필요하면 프로젝트 루트의 .codex/config.toml에 직접 추가할 수 있습니다.
[mcp_servers.tlc-portal-mcp]
command = "npx"
args = ["-y", "tlc-portal-mcp"]
mcp add ... -- npx -y tlc-portal-mcp는 전역 설치가 아니라 실행 명령 등록입니다.system.* 도구가 포함되어 있습니다.auth.login브라우저를 열어 사용자가 직접 로그인하면 localStorage['vuex']의 JWT를 자동 저장합니다.
auth.login 실행auth.status로 인증 상태 확인로그인 성공 후 브라우저에는 안내 오버레이가 표시됩니다.
auth.import_vuex자동 로그인 흐름을 쓰기 어렵다면 브라우저에서 vuex 값을 직접 가져와 붙여넣을 수 있습니다.
Application > Local Storage > https://portal.twolinecloud.com 이동vuex 값 복사auth.import_vuex 실행 후 붙여넣기| Tool | 설명 |
|---|---|
system.info |
현재 실행 중인 서버 이름, 버전, 등록된 도구 목록 반환 |
system.check_update |
npm 최신 버전과 현재 버전을 비교 |
| Tool | 설명 |
|---|---|
auth.login |
브라우저 로그인 후 JWT 자동 저장 |
auth.import_vuex |
localStorage['vuex']를 붙여넣어 인증 |
auth.status |
현재 인증 상태 확인 |
auth.clear |
로컬 세션 삭제 |
| Tool | 설명 |
|---|---|
leave.list_types |
지원하는 휴가 유형 조회 |
leave.get_balances |
잔여 휴가 조회 |
leave.list_requests |
휴가 신청 이력 조회 |
leave.prepare_request |
휴가 신청 payload 준비 |
leave.submit_prepared_request |
준비된 휴가 신청 제출 |
leave.cancel_request |
기존 휴가 신청 취소 |
| Tool | 설명 |
|---|---|
timetable.get_manage_info |
타임테이블 관리/마감 정보 조회 |
timetable.get_user_summary |
현재 사용자의 타임테이블 현황 조회 |
timetable.get_available_range |
입력 가능 기간 조회 |
timetable.get_day |
특정 날짜 타임테이블 상세 조회 |
timetable.get_range_overview |
날짜 범위 전체를 타임테이블 + 공휴일/휴가 capacity와 함께 요약 |
timetable.list_projects |
타임테이블에 입력 가능한 프로젝트 목록 조회 |
timetable.get_day_capacity |
휴가를 반영한 해당 날짜 입력 가능 시간 계산 |
timetable.prepare_day_entry |
단일 날짜 타임테이블 입력 준비 |
timetable.submit_prepared_day_entry |
준비된 단일 날짜 입력 제출 |
timetable.prepare_bulk_entries |
기간 기준 일괄 입력 준비 |
timetable.submit_prepared_bulk_entries |
준비된 일괄 입력 제출 |
timetable.clear_day |
특정 날짜 타임테이블 전체 삭제 |
AM, PM, admitAm, admitPm)가 있으면 최대 4시간만 기록할 수 있습니다.allDay, admit)가 있으면 해당 날짜에는 기록할 수 없습니다.PORTAL_COMPANY_HOLIDAYS)도 입력 불가로 처리합니다.vacation-svc/request/secure의 requestDt 정렬 결과를 기준으로 계산합니다.workDate와 taskType은 항상 필요합니다.projectId는 기본적으로 필요합니다.taskType === NORMAL이면 projectId 없이 입력할 수 있습니다.prepare -> submit 흐름을 따릅니다.system.infosystem.check_updateauth.statusauth.loginleave.get_balancesleave.list_requestsleave.prepare_requestleave.submit_prepared_requesttimetable.get_available_rangetimetable.get_range_overviewtimetable.list_projectstimetable.get_day_capacitytimetable.prepare_day_entry 또는 timetable.prepare_bulk_entriestimetable.submit_prepared_day_entry 또는 timetable.submit_prepared_bulk_entries"현재 서버 버전이랑 최신 버전 비교해줘"
-> system.check_update
"내 휴가 잔여 일수 보여줘"
-> leave.get_balances
"이번 달 휴가 신청 이력 보여줘"
-> leave.list_requests
"4월 30일 오전 반차 신청 준비해줘"
-> leave.prepare_request
"오늘 입력 가능한 타임테이블 시간 계산해줘"
-> timetable.get_day_capacity
"2026년 2월 타임테이블 전체를 공휴일 포함해서 요약해줘"
-> timetable.get_range_overview
"2026-04-05에 프로젝트 274로 4시간, taskType EXECUTE로 입력 준비해줘"
-> timetable.prepare_day_entry
"오늘 일반업무 2시간, taskType NORMAL로 입력 준비해줘"
-> timetable.prepare_day_entry
"4월 1일부터 4월 3일까지 같은 내용으로 일괄 입력 준비해줘"
-> timetable.prepare_bulk_entries
| 변수 | 기본값 | 설명 |
|---|---|---|
PORTAL_BASE_URL |
https://portal.twolinecloud.com |
포털 기본 주소 |
PORTAL_LOGIN_PATH |
/ |
로그인 진입 경로 |
PORTAL_LOGIN_SUCCESS_URL |
/dashboard/landing |
로그인 성공 후 도달 URL |
PORTAL_MCP_SESSION_FILE |
.portal-session.json |
로컬 세션 저장 파일 |
PORTAL_TIMEOUT_SECONDS |
15 |
API 요청 타임아웃 초 |
PORTAL_COMPANY_HOLIDAYS |
`` | 쉼표로 구분한 회사 공통 휴무일 목록 (YYYY-MM-DD,YYYY-MM-DD) |
PORTAL_HOLIDAY_API_BASE_URL |
https://date.nager.at/api/v3 |
한국 공휴일 조회 API base URL |
auth.login 또는 auth.import_vuex를 다시 실행해야 합니다.system.check_update는 npm registry 접근이 가능한 환경에서만 최신 버전을 확인할 수 있습니다.NORMAL + projectId 없음 조합은 문서 기준 허용 흐름으로 구현되어 있지만, 실제 포털 백엔드 수용 여부는 운영 환경에서 추가 확인이 필요합니다.Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"tlc-portal-mcp": {
"command": "npx",
"args": []
}
}
}