tlc-portal-mcp
This MCP server enables interaction with the TwolineCloud portal's authentication, leave, and timetable features.
Authentication
Log in via browser-based flow to automatically save a JWT token
Import existing session by pasting
localStorage['vuex']from the browserCheck current authentication status
Clear locally stored session
Leave (Vacation) Management
Retrieve supported leave types and check remaining balances
List leave request history with filtering by date range, status, and pagination
Prepare and submit leave requests (full day, AM/PM half-day) with options for reason, emergency contact, and delegate
Cancel existing leave requests by ID
Timetable Management
View timetable management info, personal summaries, available input periods, and daily details
List available projects
Calculate daily work capacity factoring in holidays and leave
Prepare and submit single, daily, or bulk timetable entries
Clear timetable entries for a specific day
System & Configuration
Check server version and registered tools; compare version against latest npm release
Customize via environment variables for portal URLs, session storage, timeouts, and holiday settings
Follow prepare→submit workflow patterns with enforced rules (8h daily max, half/full-day leave restrictions, weekend/holiday exclusions)
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@tlc-portal-mcphow many vacation days do I have left?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
tlc-portal-mcp
This is a stdio-based MCP server that allows MCP clients like Claude Code and Codex to use the vacation and timetable functions of the TwolineCloud portal.
By running the package with npx, you can use MCP tools for tasks such as browser login, leave inquiry/application, timetable inquiry/entry, and version diagnostics.
Currently Supported Features
Portal login and authentication status check
Inquiry of leave types, remaining leave, and leave application history
Leave application and cancellation
Timetable management information, available entry periods, and daily details
Inquiry of timetable project lists
Calculation of daily available hours reflecting leave
Preparation and submission of single/period timetable entries
Full daily deletion of timetable entries
Checking the current server version and comparing it with the latest npm version
Related MCP server: Claude MCP Command Server
Requirements
Node.js
18+A browser environment capable of portal login
Installation and Registration
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-mcpSince Codex does not currently have a separate add command for project-specific use, you can add it directly to .codex/config.toml in the project root if needed.
[mcp_servers.tlc-portal-mcp]
command = "npx"
args = ["-y", "tlc-portal-mcp"]Execution Method Notes
mcp add ... -- npx -y tlc-portal-mcpis not a global installation but an execution command registration.The actual package download occurs when the client runs the server for the first time.
It is not re-installed every time; cached versions may be reused depending on the execution environment.
Therefore, the server includes
system.*tools to check the current version against the latest version.
Authentication Methods
Recommended: auth.login
When the user logs in manually via the opened browser, the JWT from localStorage['vuex'] is automatically saved.
Run
auth.loginComplete portal login and MFA in the browser
Token is automatically saved after successful login
Check authentication status with
auth.status
An instruction overlay is displayed in the browser after a successful login.
Alternative: auth.import_vuex
If the automatic login flow is difficult to use, you can manually copy and paste the vuex value from the browser.
Log in to the portal in the browser
Go to
Application > Local Storage > https://portal.twolinecloud.comin DevToolsCopy the
vuexvalueRun
auth.import_vuexand paste the value
Tool List
System
Tool | Description |
| Returns the currently running server name, version, and list of registered tools |
| Compares the latest npm version with the current version |
Authentication
Tool | Description |
| Automatically saves JWT after browser login |
| Authenticates by pasting |
| Checks current authentication status |
| Deletes local session |
Leave
Tool | Description |
| Inquires supported leave types |
| Inquires remaining leave |
| Inquires leave application history |
| Prepares leave application payload |
| Submits prepared leave application |
| Cancels existing leave application |
Timetable
Tool | Description |
| Inquires timetable management/deadline information |
| Inquires current user's timetable status |
| Inquires available entry periods |
| Inquires detailed timetable for a specific date |
| Summarizes a date range with timetable + public holidays/leave capacity |
| Inquires list of projects available for timetable entry |
| Calculates available hours for the date reflecting leave |
| Prepares single-date timetable entry |
| Submits prepared single-date entry |
| Prepares bulk entries based on a period |
| Submits prepared bulk entries |
| Deletes entire timetable for a specific date |
Timetable Rules
The default available entry time is 8 hours per day.
If there is a half-day leave (
AM,PM,admitAm,admitPm), you can record a maximum of 4 hours.If there is a full-day leave (
allDay,admit), you cannot record entries for that date.South Korean public holidays are primarily retrieved from the Nager.Date API, with built-in fallback data used upon failure.
Weekends and company-wide holidays (
PORTAL_COMPANY_HOLIDAYS) are also treated as non-entry days.Personal leave overlays are calculated based on the
requestDtsorting results fromvacation-svc/request/securein accordance with portal overview rules.workDateandtaskTypeare always required.projectIdis required by default.However, if
taskType === NORMAL, you can enter without aprojectId.Write operations follow the
prepare -> submitflow.
Recommended Usage Order
Initial Diagnosis
system.infosystem.check_updateauth.statusauth.loginif necessary
Leave Flow
leave.get_balancesleave.list_requestsleave.prepare_requestleave.submit_prepared_request
Timetable Flow
timetable.get_available_rangetimetable.get_range_overviewtimetable.list_projectstimetable.get_day_capacitytimetable.prepare_day_entryortimetable.prepare_bulk_entriestimetable.submit_prepared_day_entryortimetable.submit_prepared_bulk_entries
Usage Examples
"현재 서버 버전이랑 최신 버전 비교해줘"
-> 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_entriesEnvironment Variables
Variable | Default Value | Description |
|
| Portal base URL |
|
| Login entry path |
|
| URL reached after successful login |
|
| Local session storage file |
|
| API request timeout in seconds |
| `` | Comma-separated list of company-wide holidays ( |
|
| South Korean public holiday API base URL |
Limitations
The JWT validity period is currently about 2 hours.
If the token expires, you must run
auth.loginorauth.import_vuexagain.Refresh tokens are not used.
The session file is stored only locally and is not uploaded to the server.
system.check_updatecan only check the latest version in environments with access to the npm registry.If the public holiday lookup API fails, it defaults to built-in fallback data.
The
NORMAL+ noprojectIdcombination for the timetable is implemented as an allowed flow based on documentation, but actual acceptance by the portal backend needs to be verified in the production environment.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityDmaintenanceA server that lets Claude desktop app execute terminal commands on your computer and edit files through Model Context Protocol, featuring command execution, process management, and advanced file operations.1938,6266MIT
- FlicenseNot gradedqualityDmaintenanceA server implementation for the Model Context Protocol (MCP) that allows Claude AI to execute commands through a command-line interface, enabling direct system interactions from within Claude.
- AlicenseNot gradedqualityBmaintenanceThe self-hosted MCP bridge between Claude Chat and Claude Code.46AGPL 3.0
- AlicenseNot gradedqualityBmaintenanceA stdio MCP server that lets Codex Desktop/CLI delegate implementation tasks to Claude Code CLI with workspace validation, Git status checks, and session resume capabilities.4MIT
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Hosted Amazon Seller and Vendor MCP server for Claude, ChatGPT, Cursor, Codex, Gemini, Copilot.
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/mingovvv/tlc-portal-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server