Reading from GitLab...
Reading from GitLab...
Every tool on the production MCP gateway, by hospital system. Descriptions come from the service code, read live: nothing here is written by hand.
Gateway: https://orbit-medical-systems.orbit-poc.com (production), read live.
Code: development db5614ac, 2026-10-12 03:34 GMT+8 · production db5614ac, 2026-10-12 03:34 GMT+8 (same commit)
Step by step, from no key to the first answer. Use an MCP client (Claude, Hermes or any other) and call the tools directly.
Ask the MCP admin for a key. The admin opens https://orbit-medical-systems.orbit-poc.com/mcp/admin and:


You should see 應該看到: a long code that starts with hismcp_gk_, and the date it ends.
Open https://orbit-medical-systems.orbit-poc.com/api/mcp/v1/systems in a browser. It needs no key.
You should see 應該看到: text that starts with [{"scheme":: the list of addresses.
If not 如果沒有: your network blocks the gateway. Ask for the VPN, or ask the MCP admin to allow your address.
Each address is one group of tools. Pick the one you need; one client entry per address. staff-schedule, nhi-ops and comms are chat flows: they take a chat identity instead of a key (see the usage guide, section 3).
| Name | Purpose | Tools | Services | MCP address |
|---|---|---|---|---|
analytics 數據分析與 AI | Governed analytics and AI: FHIR exchange, data platform, BI reports, AI models. | 44 | ai-inference, bi-reporting, data-platform, fhir-exchange | https://orbit-medical-systems.orbit-poc.com/mcp/analytics/ |
ancillary 醫療輔助(檢驗、影像、檢查) | Order fulfilment: laboratory, radiology and exam scheduling; microbiology and pathology reports and MDRO flags; sterile supply (CSSD) status (read only). | 490 | cssd, diagnostics, exam-scheduling, laboratory, micropath, radiology | https://orbit-medical-systems.orbit-poc.com/mcp/ancillary/ |
audit | Read the audit trail: events, verification runs, a patient's access report, review-queue items and archive query results; start a chain verification; assign a review item to a reviewer. | 10 | audit | https://orbit-medical-systems.orbit-poc.com/mcp/audit/ |
clinical 臨床診療 | Run a visit and inpatient stay: workspace, orders, notes, CDSS, queue, nursing, ER, admissions, surgery, closed-loop safety. | 389 | adt, bff, cdss, closed-loop-safety, emergency, emr, nursing, orders, queue, surgery | https://orbit-medical-systems.orbit-poc.com/mcp/clinical/ |
comms 客服通話 | Call-centre staff: work the outbound call list, call patients, book callbacks, read call logs and contact records, search call transcripts, and keep meeting minutes and decisions. | 35 | comms, notification | https://orbit-medical-systems.orbit-poc.com/mcp/comms/ |
finance 批價與健保申報 | Price a visit, take payment and submit NHI claims. | 134 | billing, erpbridge, nhi-claims, payment | https://orbit-medical-systems.orbit-poc.com/mcp/finance/ |
knowledge 規範與知識文件 | Search and read controlled policy documents (SOP, NHI review notes, accreditation standards, regulations), cite them, add notes, and draft and submit new versions. | 35 | knowledge | https://orbit-medical-systems.orbit-poc.com/mcp/knowledge/ |
laboratory 檢驗 | Laboratory orders, tracking, results, microbiology, pathology, send-out and QC. | 79 | laboratory | https://orbit-medical-systems.orbit-poc.com/mcp/laboratory/ |
leave-rulings 醫師請假與代診 | Read doctor leave requests and the cover ruling of each affected clinic session. | 3 | org-config | https://orbit-medical-systems.orbit-poc.com/mcp/leave-rulings/ |
microbiology 微生物檢驗 | Read microbiology: the culture worklist, one case worksheet, and a patient's culture reports. | 3 | micropath | https://orbit-medical-systems.orbit-poc.com/mcp/microbiology/ |
nhi-ops 健保卡作業 | NHI card operations (read-only): card transactions, uploads, workstation health and active alerts; MediCloud lookups remain unavailable until a stronger identity check is decided. | 6 | nhi-card, org-config | https://orbit-medical-systems.orbit-poc.com/mcp/nhi-ops/ |
notification 通知 | Send notices to patients and staff (one or many recipients) and check delivery. | 27 | notification | https://orbit-medical-systems.orbit-poc.com/mcp/notification/ |
office | Office email and official documents (公文): send email, dispatch a 公文, register, assign and close received documents, follow deadlines and receipts. | 11 | erpbridge | https://orbit-medical-systems.orbit-poc.com/mcp/office/ |
pharmacy 藥局 | Dispense and administer medications; manage stock. | 172 | inventory, pharmacy | https://orbit-medical-systems.orbit-poc.com/mcp/pharmacy/ |
reference 共用主檔 | Master data for staff: codes and dictionaries, orderables, fees and prices, the organization, beds, clinic sessions, parameters, staff, licences and privileges. | 208 | org-config, terminology | https://orbit-medical-systems.orbit-poc.com/mcp/reference/ |
registry 病人與掛號 | Find patients and manage encounters, registration, NHI-card visits and healthcare-certificate (HCA) signatures. | 210 | hca, nhi-card, patient-registry, registration | https://orbit-medical-systems.orbit-poc.com/mcp/registry/ |
staff-schedule 醫師門診班表 | Doctors: check your clinic sessions and file or withdraw leave by chat. | 6 | org-config | https://orbit-medical-systems.orbit-poc.com/mcp/staff-schedule/ |
workforce 人力排班 | Build and publish nursing/medical staff rosters, leave, overtime, nurse-to-patient ratios and the float pool. | 116 | workforce | https://orbit-medical-systems.orbit-poc.com/mcp/workforce/ |
Replace hismcp_gk_YOUR-KEY with your key. The address must end with /.
claude mcp add --scope user --transport http his-clinical https://orbit-medical-systems.orbit-poc.com/mcp/clinical/ --header "Authorization: Bearer hismcp_gk_YOUR-KEY"
claude mcp listNeeds Node.js 18 or newer (node -v). Settings, Developer, Edit Config, then paste into claude_desktop_config.json (merge with any existing mcpServers), save, and quit Claude Desktop completely before opening it again.
{
"mcpServers": {
"his-clinical": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://orbit-medical-systems.orbit-poc.com/mcp/clinical/",
"--header",
"Authorization:${AUTH_HEADER}"
],
"env": {
"AUTH_HEADER": "Bearer hismcp_gk_YOUR-KEY"
}
}
}
}Start it, then on the left: Transport Type Streamable HTTP, URL below, Authentication, header Authorization with the value below, Connect.
npx @modelcontextprotocol/inspectorhttps://orbit-medical-systems.orbit-poc.com/mcp/clinical/Bearer hismcp_gk_YOUR-KEYYou should see 應該看到: Claude Code: his-clinical with ✓ Connected. Claude Desktop: the entry running under Settings, Developer. Inspector: a green dot and Connected.
Ask your assistant: “Use his-clinical. Read its system card and tell me in five short points what you can do.” In Inspector: Tools, List Tools, pick a read tool, Run Tool. An empty list [] is a success: there is no data yet.
You should see 應該看到: a short list of what the system can do, or the tool's answer marked success.
Full reference (endpoints, chat identity, tokens, security): docs/mcp-usage-guide.md in the medical repo.
Every tool on the gateway, by hospital system, read live from the service code.
Every system and its MCP tools, numbered 1 to the system total, with what each tool does and the API it calls. Descriptions come from the code.
Route map: production code 466c58ff0 (committed 2026-10-11 05:12 GMT+8), built 2026-10-11 06:03 GMT+8.
| # | Tool | API it calls | Access |
|---|---|---|---|
| 1 | adt.get_admission_holdsAdmission holds, the active ones by default | GET /api/adt/v1/admission-holds | read |
| 2 | adt.post_admission_holds_hold_id_releaseRelease Hold | POST /api/adt/v1/admission-holds/{hold_id}:release | write |
| 3 | adt.get_admission_requestsList admission requests | GET /api/adt/v1/admission-requests | read |
| 4 | adt.post_admission_requestsEnter an admission request (admission centre); Idempotency-Key required | POST /api/adt/v1/admission-requests | write |
| 5 | adt.get_admission_requests_request_idGet an admission request | GET /api/adt/v1/admission-requests/{request_id} | read |
| 6 | adt.patch_admission_requests_request_idChange a request that has no bed yet | PATCH /api/adt/v1/admission-requests/{request_id} | write |
| 7 | adt.post_admission_requests_request_id_cancelWithdraw a request; a bed it holds is released | POST /api/adt/v1/admission-requests/{request_id}:cancel | write |
| 8 | adt.post_admission_requests_request_id_no_showThe patient did not come: release the bed and return the request or cancel it | POST /api/adt/v1/admission-requests/{request_id}:no-show | write |
| 9 | adt.get_admission_requests_request_id_bed_candidatesRanked beds for a request, with flags | GET /api/adt/v1/admission-requests/{request_id}/bed-candidates | read |
| 10 | adt.get_admission_requests_request_id_callsThe calls made for a request | GET /api/adt/v1/admission-requests/{request_id}/calls | read |
| 11 | adt.post_admission_requests_request_id_callsRecord a call to the patient or family to come in | POST /api/adt/v1/admission-requests/{request_id}/calls | write |
| 12 | adt.post_admissionsComplete an admission into the reserved bed; Idempotency-Key required | POST /api/adt/v1/admissions | write |
| 13 | adt.get_bed_boardBeds of a ward or campus with status, occupant and block state | GET /api/adt/v1/bed-board | read |
| 14 | adt.get_bed_board_streamFollow bed changes (server-sent events) | GET /api/adt/v1/bed-board/stream | read |
| 15 | adt.get_bed_forecastEmpty beds for each of the next days | GET /api/adt/v1/bed-forecast | read |
| 16 | adt.get_beds_bed_idOne bed: master attributes, occupancy, occupant summary, open cleaning request | GET /api/adt/v1/beds/{bed_id} | read |
| 17 | adt.post_beds_bed_id_mark_cleanHousekeeping: the bed is clean and available again | POST /api/adt/v1/beds/{bed_id}:mark-clean | write |
| 18 | adt.post_beds_bed_id_reserveHold a bed for a request or for a patient; Idempotency-Key required | POST /api/adt/v1/beds/{bed_id}:reserve | write |
| 19 | adt.post_beds_bed_id_cleaning_requestsAsk for a bed to be cleaned, routine or urgent | POST /api/adt/v1/beds/{bed_id}/cleaning-requests | write |
| 20 | adt.get_beds_bed_id_historyEvery status change of one bed, newest first | GET /api/adt/v1/beds/{bed_id}/history | read |
| 21 | adt.get_censusThe daily census: ward rows, and department rows within them | GET /api/adt/v1/census | read |
| 22 | adt.post_census_recomputeRecompute the census of a past day (replaces its rows; audited) | POST /api/adt/v1/census:recompute | write |
| 23 | adt.get_census_summaryBeds by ward level: NHI and differential beds, occupied, empty, with the time counted | GET /api/adt/v1/census/summary | read |
| 24 | adt.get_cleaning_requestsCleaning requests, urgent first and then the longest waiting | GET /api/adt/v1/cleaning-requests | read |
| 25 | adt.get_department_quotasBed quota and use per department | GET /api/adt/v1/department-quotas | read |
| 26 | adt.get_discharge_summaries_overdueDischarged patients whose discharge summary is not signed in time (chart completion) | GET /api/adt/v1/discharge-summaries/overdue | read |
| 27 | adt.get_expected_dischargesWho is expected to leave, by date | GET /api/adt/v1/expected-discharges | read |
| 28 | adt.post_jobs_reservation_expiry_runReturn every bed whose hold has run out, now | POST /api/adt/v1/jobs/reservation-expiry:run | write |
| 29 | adt.get_length_of_stayAverage length of stay by department and campus, with the period's occupancy | GET /api/adt/v1/length-of-stay | read |
| 30 | adt.get_movementsEvery move of every stay in the order it happened, a page at a time | GET /api/adt/v1/movements | read |
| 31 | adt.get_overridesPlacement rules people went past, with their reasons | GET /api/adt/v1/overrides | read |
| 32 | adt.post_placement_checksCheck a named bed for a patient before placing them | POST /api/adt/v1/placement-checks | write |
| 33 | adt.get_planned_transfersPlanned transfers, by day, bed level or stay | GET /api/adt/v1/planned-transfers | read |
| 34 | adt.post_planned_transfers_plan_id_cancelCancel a planned transfer and release its bed for that day | POST /api/adt/v1/planned-transfers/{plan_id}:cancel | write |
| 35 | adt.post_planned_transfers_plan_id_executeMake the planned transfer, on its day, into the held bed | POST /api/adt/v1/planned-transfers/{plan_id}:execute | write |
| 36 | adt.get_reservationsBeds being held, to find the hold of a request (default: active ones) | GET /api/adt/v1/reservations | read |
| 37 | adt.patch_reservations_reservation_idExtend a hold, once, with a reason | PATCH /api/adt/v1/reservations/{reservation_id} | write |
| 38 | adt.post_reservations_reservation_id_releaseLet a held bed go; the request returns to the waiting list | POST /api/adt/v1/reservations/{reservation_id}:release | write |
| 39 | adt.get_staysList stays | GET /api/adt/v1/stays | read |
| 40 | adt.post_stays_backfill_encountersOpen the IPD encounter of open stays that were admitted without one | POST /api/adt/v1/stays:backfill-encounters | write |
| 41 | adt.get_stays_stay_idGet a stay | GET /api/adt/v1/stays/{stay_id} | read |
| 42 | adt.post_stays_stay_id_cancel_admissionUndo an admission that was entered in error | POST /api/adt/v1/stays/{stay_id}:cancel-admission | write |
| 43 | adt.post_stays_stay_id_relocateMove a patient to a chosen suitable bed (condition change or overflow) | POST /api/adt/v1/stays/{stay_id}:relocate | write |
| 44 | adt.get_stays_stay_id_bed_candidatesBeds a patient could move to, ranked like admission candidates | GET /api/adt/v1/stays/{stay_id}/bed-candidates | read |
| 45 | adt.post_stays_stay_id_card_not_presentedNo NHI card at admission: the card is still to be read before discharge | POST /api/adt/v1/stays/{stay_id}/card:not-presented | write |
| 46 | adt.get_stays_stay_id_discharge_checklistWhat is still open before this patient can leave | GET /api/adt/v1/stays/{stay_id}/discharge-checklist | read |
| 47 | adt.post_stays_stay_id_discharge_readyMark the patient ready for discharge (出院準備完成), or not | POST /api/adt/v1/stays/{stay_id}/discharge-ready | write |
| 48 | adt.post_stays_stay_id_discharge_departRecord the departure: the stay closes and the bed goes to cleaning | POST /api/adt/v1/stays/{stay_id}/discharge:depart | write |
| 49 | adt.put_stays_stay_id_expected_dischargeRecord or change the expected discharge: date or time, confidence, note | PUT /api/adt/v1/stays/{stay_id}/expected-discharge | write |
| 50 | adt.get_stays_stay_id_expected_discharge_historyThe expected discharges this stay used to have, newest first | GET /api/adt/v1/stays/{stay_id}/expected-discharge/history | read |
| 51 | adt.get_stays_stay_id_leavesThe leaves a stay has had, oldest first | GET /api/adt/v1/stays/{stay_id}/leaves | read |
| 52 | adt.post_stays_stay_id_leavesRecord a leave of absence: the bed is kept `on-leave` for the patient | POST /api/adt/v1/stays/{stay_id}/leaves | write |
| 53 | adt.post_stays_stay_id_leaves_returnThe patient is back: the bed is `occupied` again | POST /api/adt/v1/stays/{stay_id}/leaves:return | write |
| 54 | adt.get_stays_stay_id_movementsEvery move of a stay: admission, transfers, discharge | GET /api/adt/v1/stays/{stay_id}/movements | read |
| 55 | adt.post_stays_stay_id_planned_transfersPlan a transfer for a future day and hold a bed for it | POST /api/adt/v1/stays/{stay_id}/planned-transfers | write |
| 56 | adt.get_stays_stay_id_suitable_bedsBeds that fit this patient's current need, home ward first, overflow after | GET /api/adt/v1/stays/{stay_id}/suitable-beds | read |
| 57 | adt.post_stays_stay_id_transfersMove a patient to another bed or ward, or change department or attending | POST /api/adt/v1/stays/{stay_id}/transfers | write |
| 58 | adt.post_stays_stay_id_wristbandProduce the identification wristband (ZPL); a reprint needs a reason | POST /api/adt/v1/stays/{stay_id}/wristband | write |
| 59 | adt.get_stays_stay_id_wristband_previewWhat the wristband will show, before printing; nothing is printed or recorded | GET /api/adt/v1/stays/{stay_id}/wristband:preview | read |
| 60 | adt.post_transfers_movement_id_acceptThe receiving unit accepts the transfer | POST /api/adt/v1/transfers/{movement_id}:accept | write |
| 61 | adt.post_transfers_movement_id_arriveThe patient arrived: hand-off recorded, target bed occupied, source bed cleaning | POST /api/adt/v1/transfers/{movement_id}:arrive | write |
| 62 | adt.post_transfers_movement_id_cancelCancel a transfer that has not happened; the held bed is released | POST /api/adt/v1/transfers/{movement_id}:cancel | write |
| 63 | adt.get_waiting_listRequests without a bed: urgent first, then longest waiting | GET /api/adt/v1/waiting-list | read |
| 64 | adt.post_wards_ward_id_admission_holdsStop new admissions to a ward for a time (e.g. an infection-control hold) | POST /api/adt/v1/wards/{ward_id}/admission-holds | write |
| 65 | adt.get_wards_ward_id_rulesRoom rules of a ward: sex policy against who is in it, class, surcharge, quota | GET /api/adt/v1/wards/{ward_id}/rules | read |
No MCP tools yet 尚無 MCP 工具 (21): 27 感染管制監測系統 · 34 重症加護系統 · 40 化學治療系統 · 41 放射腫瘤系統 · 42 核子醫學系統 · 43 血液透析系統 · 44 產房與嬰兒室系統 · 45 復健系統 · 46 呼吸治療系統 · 47 牙科系統 · 48 預防保健與癌症篩檢系統 · 49 疫苗注射系統 · 53 抗生素管制系統 · 61 介面整合引擎 · 67 全國預防接種資訊系統(NIIS) · 74 健康檢查系統 · 77 陪病與訪客管理系統 · 79 病人傳送系統 · 84 數位看板系統 · 89 太平間管理系統 · 91 醫療物流機器人系統
To do: tools on the gateway that are not placed under a hospital system yet, so they are not counted above. Each one waits for a ruling on its system; once placed, it moves into Tools by system.
| GET | /api/safety/v1/dashboard | Dashboard | read | closed-loop-safety.get_dashboard | clinical |
| POST | /api/safety/v1/feedings:check | Feeding Check | write | closed-loop-safety.post_feedings_check | clinical |
| POST | /api/safety/v1/identity-checks | Identity Check | write | closed-loop-safety.post_identity_checks | clinical |
| POST | /api/safety/v1/loops | Open Loop Route | create | closed-loop-safety.post_loops | clinical |
| POST | /api/safety/v1/loops/{instance_id}:exception | Loop Exception | write | closed-loop-safety.post_loops_instance_id_exception | clinical |
| POST | /api/safety/v1/loops/{instance_id}/steps/{step_code}:advance | Advance | write | closed-loop-safety.post_loops_instance_id_steps_step_code_advance | clinical |
| POST | /api/safety/v1/milk-containers | Create Milk | write | closed-loop-safety.post_milk_containers | clinical |
| POST | /api/safety/v1/overdue:sweep | Overdue Sweep | write | closed-loop-safety.post_overdue_sweep | clinical |