Skip to main content
Glama
tlc-portal-mcp

tlc-portal-mcp

by mingovvv

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-mcp

Codex 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'] сохраняется автоматически.

  1. Запустите auth.login

  2. Выполните вход на портал и MFA в браузере

  3. После успешного входа токен будет сохранен автоматически

  4. Проверьте статус аутентификации с помощью auth.status

После успешного входа в браузере отобразится информационное наложение.

Альтернативный: auth.import_vuex

Если автоматический поток входа затруднен, можно вручную скопировать и вставить значение vuex из браузера.

  1. Войдите на портал в браузере

  2. В DevTools перейдите в Application > Local Storage > https://portal.twolinecloud.com

  3. Скопируйте значение vuex

  4. Запустите auth.import_vuex и вставьте значение

Список инструментов

Система

Инструмент

Описание

system.info

Возвращает имя запущенного сервера, версию и список зарегистрированных инструментов

system.check_update

Сравнивает последнюю версию в npm с текущей

Аутентификация

Инструмент

Описание

auth.login

Автоматическое сохранение JWT после входа через браузер

auth.import_vuex

Аутентификация путем вставки localStorage['vuex']

auth.status

Проверка текущего статуса аутентификации

auth.clear

Удаление локальной сессии

Отпуск

Инструмент

Описание

leave.list_types

Просмотр поддерживаемых типов отпусков

leave.get_balances

Просмотр остатков отпусков

leave.list_requests

Просмотр истории заявок на отпуск

leave.prepare_request

Подготовка полезной нагрузки (payload) для заявки на отпуск

leave.submit_prepared_request

Отправка подготовленной заявки на отпуск

leave.cancel_request

Отмена существующей заявки на отпуск

Расписание

Инструмент

Описание

timetable.get_manage_info

Просмотр информации об управлении/закрытии расписания

timetable.get_user_summary

Просмотр текущего состояния расписания пользователя

timetable.get_available_range

Просмотр доступных периодов ввода

timetable.get_day

Детальный просмотр расписания на конкретную дату

timetable.get_range_overview

Сводка по диапазону дат вместе с праздниками/отпусками и вместимостью

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

Полное удаление расписания на конкретную дату

Правила расписания

  • Стандартное доступное время ввода — 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.

Рекомендуемый порядок использования

Начальная диагностика

  1. system.info

  2. system.check_update

  3. auth.status

  4. При необходимости auth.login

Поток работы с отпусками

  1. leave.get_balances

  2. leave.list_requests

  3. leave.prepare_request

  4. leave.submit_prepared_request

Поток работы с расписанием

  1. timetable.get_available_range

  2. timetable.get_range_overview

  3. timetable.list_projects

  4. timetable.get_day_capacity

  5. timetable.prepare_day_entry или timetable.prepare_bulk_entries

  6. timetable.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

Базовый URL API для запроса праздников Южной Кореи

Ограничения

  • Срок действия JWT на данный момент составляет около 2 часов.

  • Если токен истек, необходимо снова запустить auth.login или auth.import_vuex.

  • Refresh token не используется.

  • Файл сессии сохраняется только локально и не загружается на сервер.

  • system.check_update может проверить версию только в среде с доступом к реестру npm.

  • Если API для запроса праздников недоступно, используются встроенные резервные данные.

  • Комбинация NORMAL + отсутствие projectId в расписании реализована как допустимый поток согласно документации, но фактическая поддержка бэкендом портала требует проверки в рабочей среде.

Available Tools

10 tools
auth.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

    B3.4/5.0

    Scored across 10 tools

    Disambiguation4/5

    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.

    Naming Consistency4/5

    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.

    Tool Count5/5

    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.

    Completeness4/5

    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

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      C
      maintenance
      A 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.
      8
      64 npm
      1
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      A 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