K-LifeGuard MCP Server
Provides real-time traffic ETA calculations using Kakao Mobility's navigation API for emergency route optimization.
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., "@K-LifeGuard MCP ServerChest pain near Seoul Station, recommend ER with available beds"
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.
K-LifeGuard MCP Server
지능형 응급 의료 코디네이터 MCP Server
증상 기반 최적 병원 추천, 실시간 ETA, 보호자 알림 기능을 제공합니다.
Features
Tool | Description |
| 증상과 위치 기반 최적 응급의료기관 추천 (복합 스코어링) |
| 응급 모드 활성화, 보호자 알림, 병상 모니터링 |
| 현재 응급 세션 상태 및 실시간 병상 조회 |
| 주변 약국 검색 (야간/휴일 필터) |
Related MCP server: modu-emergencybell
Scoring Algorithm
병원 추천은 다음 복합 스코어링 공식을 사용합니다:
Score = (병상 가용성 × 0.4) + (거리 × 0.3) + (교통 ETA × 0.2) + (전문 장비 × 0.1)Installation
npm install
npm run buildConfiguration
.env 파일을 생성하고 API 키를 설정하세요:
cp .env.example .env# 공공데이터포털 API 키 (필수)
DATA_GO_KR_API_KEY=your_api_key
# 카카오 REST API 키 (선택 - ETA 계산용)
KAKAO_REST_API_KEY=your_kakao_api_keyAPI Key 발급
공공데이터포털: https://www.data.go.kr
국립중앙의료원 응급의료정보 API 신청
카카오 개발자: https://developers.kakao.com
REST API 키 발급 (네비게이션 API)
Usage
Claude Desktop 연동
claude_desktop_config.json:
{
"mcpServers": {
"k-lifeguard": {
"command": "node",
"args": ["C:/path/to/k-lifeguard-mcp-server/dist/index.js"],
"env": {
"DATA_GO_KR_API_KEY": "your_api_key",
"KAKAO_REST_API_KEY": "your_kakao_api_key"
}
}
}
}직접 실행
npm startTool Examples
응급실 검색
증상: 가슴통증
위치: 서울 시청 (37.5665, 126.9780)
반경: 10km응답:
증상 분석 (심장내과, CT/MRI 필요 등)
병원 5곳 추천 (점수, 거리, ETA, 병상, 장비)
약국 검색
위치: 현재 위치
필터: night (야간 운영)응답:
야간 운영 약국 목록
운영시간, 거리, 연락처
Project Structure
k-lifeguard-mcp-server/
├── src/
│ ├── index.ts # MCP 서버 엔트리포인트
│ ├── types.ts # TypeScript 타입 정의
│ ├── constants.ts # 상수 (API URL, 증상 매핑 등)
│ ├── schemas/ # Zod 입력/출력 스키마
│ ├── tools/ # MCP 도구 구현
│ │ ├── searchEmergency.ts
│ │ ├── activateEmergency.ts
│ │ ├── getStatus.ts
│ │ └── findPharmacy.ts
│ └── services/ # 외부 API 클라이언트
│ ├── nemcApi.ts # 공공데이터포털 API
│ ├── kakaoNaviApi.ts # 카카오 내비 API
│ ├── sessionManager.ts
│ └── utils.ts
├── dist/ # 빌드 결과물
├── package.json
└── tsconfig.jsonData Sources
공공데이터포털 (NEMC): 응급의료기관 정보, 실시간 병상
카카오 모빌리티: 실시간 교통 ETA
License
MIT
Author
yonghwan1106
Available Tools
4 toolslifeguard_activate_emergency응급 모드 활성화A
응급 모드를 활성화합니다.
선택한 병원으로 이동을 시작하고, 보호자에게 카카오톡 알림을 발송하며, 실시간 병상 모니터링을 시작합니다.
Args:
hospital_id (string, required): 병원 HPID (lifeguard_search_emergency 결과에서 획득)
hospital_name (string, required): 병원명
eta_minutes (number, required): 예상 도착 시간 (분)
user_latitude (number, required): 사용자 현재 위치 위도
user_longitude (number, required): 사용자 현재 위치 경도
symptoms (string, required): 환자 증상
notify_guardians (boolean, optional): 보호자 알림 여부 (기본값: true)
Returns:
세션 정보 (ID, 병원, 상태)
카카오 내비 딥링크
보호자 알림 결과
모니터링 정보
응급 팁
Examples:
lifeguard_search_emergency로 찾은 병원 선택 후 호출
| Name | Required | Description | Default |
|---|---|---|---|
| symptoms | Yes | 환자 증상 | |
| eta_minutes | Yes | 예상 도착 시간 (분) | |
| hospital_id | Yes | 병원 HPID (lifeguard_search_emergency 결과에서 획득) | |
| hospital_name | Yes | 병원명 | |
| user_latitude | Yes | 사용자 현재 위치 위도 | |
| user_longitude | Yes | 사용자 현재 위치 경도 | |
| notify_guardians | No | 보호자에게 카카오톡 알림 발송 여부 (기본값: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false (write operation) and destructiveHint=false. The description adds behavioral context: it activates emergency mode, triggers movement, sends alerts, and starts monitoring. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is somewhat long but well-structured with sections: purpose, action list, args, returns, example. It is front-loaded with the main action, and each sentence adds value, though it could be slightly more concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
All 7 parameters are fully described, and despite no output schema, the description lists return values (session info, deep link, alert result, monitoring info, tips). Given the context signals (no enums, no nested objects), the description is complete and informative.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds extra value by explaining each parameter in detail (e.g., hospital_id sourced from search results, notify_guardians default true) and providing examples, raising the score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states '응급 모드를 활성화합니다' (activates emergency mode) and details specific actions: starting hospital movement, sending KakaoTalk alert, and beginning real-time bed monitoring. It is distinct from sibling tools like lifeguard_search_emergency (search) and lifeguard_get_status (status check).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description specifies that this tool should be called after selecting a hospital from lifeguard_search_emergency, providing clear when-to-use guidance. It does not explicitly state when not to use or alternatives, but the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lifeguard_find_pharmacy약국 검색ARead-onlyIdempotent
주변 약국을 검색합니다.
야간 운영 약국, 휴일 운영 약국을 필터링할 수 있습니다.
Args:
latitude (number, required): 현재 위치 위도
longitude (number, required): 현재 위치 경도
filter (string, optional): 필터 옵션 (기본값: "all")
"all": 전체 약국
"night": 야간 운영 약국 (22시 이후 영업)
"holiday": 휴일 운영 약국 (일요일/공휴일)
radius_km (number, optional): 검색 반경 km (기본값: 3)
limit (number, optional): 최대 결과 수 (기본값: 10)
response_format (string, optional): 출력 형식 (기본값: "markdown")
Returns:
약국 목록 (이름, 주소, 연락처, 거리, 운영시간)
Examples:
"집 근처 약국 찾기" → latitude, longitude 입력
"야간 영업하는 약국" → filter: "night"
"일요일에 여는 약국" → filter: "holiday"
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | 최대 결과 수 (기본값: 10) | |
| filter | No | 필터 옵션: all(전체), night(야간 22시 이후 운영), holiday(휴일 운영) | all |
| latitude | Yes | 현재 위치 위도 | |
| longitude | Yes | 현재 위치 경도 | |
| radius_km | No | 검색 반경 km (기본값: 3) | |
| response_format | No | 출력 형식: 'markdown'은 사람이 읽기 쉬운 형식, 'json'은 프로그래밍 처리용 | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, openWorldHint, etc. Description adds behavioral details such as default filter and radius, return format options, and the nature of results (list of pharmacies with fields). This is valuable beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is well-structured with clear sections for args and examples, front-loading the main purpose. It is moderately concise and each sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description specifies the return structure (list of pharmacies with name, address, phone, distance, hours). Examples cover typical use cases. For a search tool with 6 parameters, this is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. Description adds natural language explanations, default values, and examples for parameters like filter and response_format, improving understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states '주변 약국을 검색합니다.' which is a specific verb and resource. It clearly distinguishes from sibling tools like lifeguard_get_status and lifeguard_search_emergency by focusing on pharmacies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description provides context for when to use (finding nearby pharmacies with optional filters) and includes examples. However, it does not explicitly exclude other tools or compare to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lifeguard_get_status응급 상태 조회ARead-onlyIdempotent
현재 응급 모드 상태를 조회합니다.
활성화된 응급 세션이 있으면 목적지 병원의 실시간 병상 정보도 함께 조회합니다.
Args:
session_id (string, optional): 세션 ID (미입력 시 가장 최근 활성 세션 조회)
Returns:
세션 활성화 여부
세션 정보 (ID, 병원, 경과 시간, 남은 ETA)
실시간 병상 현황
가능한 액션
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No | 세션 ID (미입력 시 가장 최근 활성 세션 조회) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it read-only and idempotent. Description adds conditional behavior (bed info only if active session) and return fields. No contradictions, but edge cases not covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with main purpose first, conditional behavior, then args/returns in a list. Concise, slightly verbose in the returns section but still efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given one optional parameter, no output schema, the description covers purpose, parameter behavior, and return values. Lacks error handling info, but rest is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Single parameter session_id is described in both schema and description identically. Schema coverage is 100% so baseline 3 applies; description adds no new semantics beyond restating.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it queries emergency mode status and optionally retrieves real-time bed info. It distinguishes from siblings by using specific verb(조회) and resource(응급 모드 상태).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Parameter usage is explained (session_id optional, defaults to latest). No explicit guidance on when to use this tool vs. siblings or when not to use it. Adequate but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lifeguard_search_emergency증상 기반 응급실 검색ARead-onlyIdempotent
증상과 현재 위치 기반으로 최적의 응급의료기관을 추천합니다.
실시간 병상 가용성, 거리, 카카오내비 교통 상황, 전문 장비 보유 여부를 복합 스코어링하여 최적의 병원 5곳을 추천합니다.
Args:
latitude (number, required): 현재 위치 위도 (예: 37.5665)
longitude (number, required): 현재 위치 경도 (예: 126.9780)
symptoms (string, required): 증상 설명 (예: "가슴통증", "소아고열", "뇌졸중 의심")
radius_km (number, optional): 검색 반경 km (기본값: 10, 범위: 1-50)
response_format (string, optional): 출력 형식 "markdown" 또는 "json" (기본값: "markdown")
Returns:
최적 병원 5곳 추천 (순위, 이름, 주소, 연락처, 거리, ETA, 병상, 장비, 점수)
증상 분석 결과 (매칭된 키워드, 권장 진료과, 필요 장비)
스코어링 공식 설명
Examples:
"서울 시청 근처에서 가슴통증 환자 발생" → latitude: 37.5665, longitude: 126.9780, symptoms: "가슴통증"
"대전에서 소아 고열" → latitude: 36.3504, longitude: 127.3845, symptoms: "소아고열"
| Name | Required | Description | Default |
|---|---|---|---|
| latitude | Yes | 현재 위치 위도 (예: 37.5665) | |
| symptoms | Yes | 증상 설명 (예: 가슴통증, 소아고열, 뇌졸중 의심) | |
| longitude | Yes | 현재 위치 경도 (예: 126.9780) | |
| radius_km | No | 검색 반경 km (기본값: 10) | |
| response_format | No | 출력 형식: 'markdown'은 사람이 읽기 쉬운 형식, 'json'은 프로그래밍 처리용 | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, which align with the read-only search nature. The description adds behavioral details beyond annotations, such as real-time data integration, scoring formula, and the top 5 result limitation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections for Args, Returns, and Examples. It is front-loaded with the purpose and every sentence adds value. There is no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (5 parameters, no output schema), the description explains the return structure (top 5 hospitals, symptom analysis, scoring explanation) and provides examples. However, it lacks error handling or edge cases (e.g., no hospitals found).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds value with examples (e.g., '가슴통증', '소아고열') and contextualizes parameters like response_format, improving understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool recommends optimal emergency medical institutions based on symptoms and current location, using specific criteria. It is distinct from sibling tools like lifeguard_activate_emergency (activation) and lifeguard_find_pharmacy (pharmacy).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context and examples but does not explicitly state when not to use this tool or compare with siblings. Usage is implied through examples but lacks explicit guidance on alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
All four tools have clearly distinct purposes: status checking, emergency hospital search, emergency activation, and pharmacy search. There is no overlap or ambiguity in their functions.
All tool names follow a consistent 'lifeguard_verb_noun' pattern with lowercase and underscores. Verbs are descriptive (get, search, activate, find) and nouns are appropriate.
With 4 tools, the server is well-scoped for its purpose: emergency medical assistance. Each tool provides essential functionality without being overwhelming or underdeveloped.
The tool set covers the main emergency workflow (search, activate, monitor status) and adds pharmacy search. However, it lacks a tool to cancel or complete an emergency session, which is a minor but notable gap.
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 Connectors
The adaptive health-messaging engine for apps and agents. Federally-sourced. Not medical advice.
AI-powered medical document management for cancer patients. Google Drive, Gmail, Calendar via MCP.
Physician-reviewed medical opinions and prescriptions for AI agents.
An AI concierge that turns static forms into adaptive AI conversations. From any MCP client.
Related MCP Servers
- AlicenseBqualityDmaintenanceIntegrates with Google Maps to locate and evaluate medical facilities in emergency situations, helping users find appropriate hospitals and clinics based on medical needs, emergency level, and facility capabilities.55MIT
- FlicenseNot gradedqualityBmaintenanceProvides emergency hotline numbers, restrooms and outdoor safety bells, after-hours clinics, pharmacies, ER beds, and foreign visitor phrase cards. Information only—does not place calls or diagnose.1
- FlicenseNot gradedqualityCmaintenanceEnables AI-driven post-discharge patient monitoring and care coordination through tools for symptom triage, recovery tracking, exercise recommendation, and clinical reporting.
- AlicenseNot gradedqualityBmaintenanceEnables emergency medical coordination with tools for triage, medication guidance, blood donor outreach, mass casualty simulation, and emergency plan generation.MIT
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/yonghwan1106/k-lifeguard-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server