tlc-portal-mcp
tlc-portal-mcp
Это MCP-сервер на базе stdio, позволяющий использовать функции отпусков и расписания портала TwolineCloud в MCP-клиентах, таких как Claude Code и Codex.
При запуске пакета через npx вы можете использовать инструменты MCP для входа в систему через браузер, просмотра/подачи заявлений на отпуск, просмотра/ввода данных в расписание и проверки версий.
Текущие поддерживаемые функции
Вход на портал и проверка статуса аутентификации
Просмотр типов отпусков, остатков отпусков и истории заявок
Подача и отмена заявлений на отпуск
Управление информацией о расписании, доступные периоды ввода, детальный просмотр по дням
Просмотр списка проектов для расписания
Расчет доступного времени ввода по дням с учетом отпусков
Подготовка и отправка данных в расписание (единичные записи или периоды)
Полное удаление данных расписания за день
Проверка текущей версии сервера и сравнение с последней версией в npm
Related MCP server: ATimeLogger MCP Server
Требования
Node.js
18+Браузерное окружение, поддерживающее вход на портал
Установка и регистрация
Claude Code
# 사용자 전역 등록
claude mcp add tlc-portal-mcp --scope user -- npx -y tlc-portal-mcp
# 현재 프로젝트에만 등록
claude mcp add tlc-portal-mcp -- npx -y tlc-portal-mcpCodex CLI
# 사용자 전역 등록
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
При открытии браузера и входе пользователя в систему JWT из localStorage['vuex'] сохраняется автоматически.
Запустите
auth.loginВыполните вход на портал и MFA в браузере
После успешного входа токен будет сохранен автоматически
Проверьте статус аутентификации с помощью
auth.status
После успешного входа в браузере отобразится информационное наложение.
Альтернативный: auth.import_vuex
Если автоматический поток входа затруднен, можно вручную скопировать и вставить значение vuex из браузера.
Войдите на портал в браузере
В DevTools перейдите в
Application > Local Storage > https://portal.twolinecloud.comСкопируйте значение
vuexЗапустите
auth.import_vuexи вставьте значение
Список инструментов
Система
Инструмент | Описание |
| Возвращает имя запущенного сервера, версию и список зарегистрированных инструментов |
| Сравнивает последнюю версию в npm с текущей |
Аутентификация
Инструмент | Описание |
| Автоматическое сохранение JWT после входа через браузер |
| Аутентификация путем вставки |
| Проверка текущего статуса аутентификации |
| Удаление локальной сессии |
Отпуск
Инструмент | Описание |
| Просмотр поддерживаемых типов отпусков |
| Просмотр остатков отпусков |
| Просмотр истории заявок на отпуск |
| Подготовка полезной нагрузки (payload) для заявки на отпуск |
| Отправка подготовленной заявки на отпуск |
| Отмена существующей заявки на отпуск |
Расписание
Инструмент | Описание |
| Просмотр информации об управлении/закрытии расписания |
| Просмотр текущего состояния расписания пользователя |
| Просмотр доступных периодов ввода |
| Детальный просмотр расписания на конкретную дату |
| Сводка по диапазону дат вместе с праздниками/отпусками и вместимостью |
| Просмотр списка проектов, доступных для ввода в расписание |
| Расчет доступного времени ввода на дату с учетом отпусков |
| Подготовка ввода расписания на один день |
| Отправка подготовленного ввода на один день |
| Подготовка массового ввода по периоду |
| Отправка подготовленного массового ввода |
| Полное удаление расписания на конкретную дату |
Правила расписания
Стандартное доступное время ввода — 8 часов в день.
При наличии отпуска на полдня (
AM,PM,admitAm,admitPm) можно записать максимум 4 часа.При наличии отпуска на весь день (
allDay,admit) запись на этот день невозможна.Государственные праздники Южной Кореи по умолчанию запрашиваются через API Nager.Date, в случае сбоя используются встроенные резервные данные.
Выходные и общие корпоративные выходные дни (
PORTAL_COMPANY_HOLIDAYS) также считаются недоступными для ввода.Наложение личных отпусков рассчитывается на основе результатов сортировки
requestDtизvacation-svc/request/secureв соответствии с правилами обзора портала.workDateиtaskTypeтребуются всегда.projectIdтребуется по умолчанию.Однако, если
taskType === NORMAL, можно вводить данные безprojectId.Операции записи следуют потоку
prepare -> submit.
Рекомендуемый порядок использования
Начальная диагностика
system.infosystem.check_updateauth.statusПри необходимости
auth.login
Поток работы с отпусками
leave.get_balancesleave.list_requestsleave.prepare_requestleave.submit_prepared_request
Поток работы с расписанием
timetable.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Переменные окружения
Переменная | Значение по умолчанию | Описание |
|
| Базовый адрес портала |
|
| Путь входа в систему |
|
| URL после успешного входа |
|
| Файл локального сохранения сессии |
|
| Тайм-аут запроса API в секундах |
| `` | Список общих корпоративных выходных через запятую ( |
|
| Базовый URL API для запроса праздников Южной Кореи |
Ограничения
Срок действия JWT на данный момент составляет около 2 часов.
Если токен истек, необходимо снова запустить
auth.loginилиauth.import_vuex.Refresh token не используется.
Файл сессии сохраняется только локально и не загружается на сервер.
system.check_updateможет проверить версию только в среде с доступом к реестру npm.Если API для запроса праздников недоступно, используются встроенные резервные данные.
Комбинация
NORMAL+ отсутствиеprojectIdв расписании реализована как допустимый поток согласно документации, но фактическая поддержка бэкендом портала требует проверки в рабочей среде.
Available Tools
10 toolsauth.clearA
저장된 인증 세션을 삭제한다.
Inputs: no named parameters.
auth.import_vuexB
브라우저 localStorage['vuex'] 값을 붙여넣어 인증 상태를 가져온다.
Inputs: vuex_payload (required).
auth.loginC
브라우저를 열어 사용자가 직접 로그인하면 JWT를 자동 저장한다.
Inputs: timeout_seconds.
auth.statusB
현재 인증 상태를 반환한다.
Inputs: no named parameters.
leave.cancel_requestB
기존 휴가 신청을 취소한다.
Inputs: request_id (required).
leave.get_balancesB
현재 잔여 휴가를 조회한다.
Inputs: no named parameters.
leave.list_requestsC
휴가 신청 내역을 조회한다.
Inputs: statuses, from_date, to_date, limit, +1 more.
leave.list_typesA
지원하는 휴가 유형 목록을 반환한다.
Inputs: no named parameters.
leave.prepare_requestB
휴가 신청을 준비한다. 제출 전 확인 단계다.
Inputs: leave_type_code (required), start_date (required), end_date (required), unit, +3 more.
leave.submit_prepared_requestB
준비된 휴가 신청을 포탈에 제출한다.
Inputs: prepared_request_id (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 10 tools
Most tools target distinct resources and actions, especially within the leave namespace. The only possible confusion is between auth.login and auth.import_vuex, but their descriptions clearly separate browser-based login from importing an existing Vuex auth state.
Tool names consistently follow a verb_noun pattern with clear namespace prefixes like auth and leave. auth.status is a minor deviation as a noun, but overall the naming is predictable and easy to navigate.
Ten tools is a well-scoped size for a portal MCP server covering authentication and leave management. Each tool has a clear role, and the count feels neither bloated nor thin.
The leave workflow is well covered: types, balances, listing, preparing, submitting, and cancelling requests. Minor gaps include no direct request detail view or update/edit path, but cancel-and-recreate is a reasonable workaround.
Maintenance
Related MCP Connectors
Timetastic MCP server for ChatGPT, Claude and any AI agent: list wallchart absences, list pending leave requests, approve leave request, decline leave request, book time off, cancel booking, get monthly leave summary and get annual allowance summary in your own Timetastic account. Cotlet works in the account through your Cloud Browser, a real Chrome where you sign in to Timetastic yourself; Cotlet does not store your password and you need no Timetastic API key. About the official Timetastic API: Yes, Timetastic has a REST API with a bearer token, and no official MCP server (checked 20 Oct 2026). Only admin users can get a token, and the API has no endpoints for the monthly and annual summary reports. Setup and FAQ: https://cotlet.dev/integrations/timetastic-api-mcp-server
Shared memory MCP server for Claude Code, Codex, Gemini CLI and Cursor. Cited, editable.
CharlieHR MCP server for ChatGPT, Claude and any AI agent: list team members, list time off requests, approve time off request, deny time off request, book time off, record sick day, adjust time off allowance and cancel time off booking in your own CharlieHR account. Cotlet works in the account through your Cloud Browser, a real Chrome where you sign in to CharlieHR yourself; Cotlet does not store your password and you need no CharlieHR API key. About the official CharlieHR API: CharlieHR has an API, but a narrow one, and no official MCP server (checked 20 Oct 2026). A Super Admin creates a Client ID and Client Secret under Company > Integrations > API Access; the API covers team members, leave, offices and teams. Setup and FAQ: https://cotlet.dev/integrations/charliehr-api-mcp-server
Connect ChatGPT and Claude to your Mac, Windows or Linux with secure MCP remote access.
Related MCP Servers
- FlicenseAqualityCmaintenanceMCP server for logging and checking Jira Cloud worklogs from AI agents such as Claude Code, Claude Desktop, Cursor, or any MCP client that supports stdio.71-
- AlicenseAqualityCmaintenanceA standalone MCP server that exposes the ATimeLogger REST API to Claude Desktop/Code over stdio, enabling activity tracking (start/stop/pause/log), reports/history, and activity type management.864 npm1MIT
- FlicenseAqualityBmaintenanceA local MCP server that bridges Claude Desktop/Cowork to the Azure DevOps CLI, enabling full use of az devops, az repos, az boards, az pipelines, and az artifacts commands.12-
- AlicenseNot gradedqualityDmaintenanceA standalone MCP server that lets Claude Code, opencode, and other MCP clients control your real browser via the QoderWork browser connector extension, preserving login state and providing tools for navigation, clicking, typing, screenshots, and more.ISC