Skip to main content
Glama
pblsketch

Hangeul-mcp

by pblsketch

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
describe_capabilitiesA

Report per-capability availability, tool buckets, and runtime identity for this PC.

detect_formatB

Detect whether a path is HWPX (zip+mimetype), binary HWP, or unknown.

analyze_formC

Detect fillable fields in FILE MODE: labels, inline blanks, placeholders, checkboxes, form fields.

fill_formC

Fill detected named/label fields and write a NEW byte-preserving HWPX copy (file mode).

scan_piiB

Scan extracted document text for Korean PII patterns and return masked findings.

analyze_formfitC

Estimate overflow/fit risk for candidate values against detected field capacity.

extract_textC

Extract plain document text from an HWPX file (returns a string).

preview_assessmentA

Validate and preview three deterministic assessment variants without writing files.

apply_assessmentC

Atomically publish a reviewed three-variant assessment bundle to a safe root.

find_textA

Count plain-text matches per cell in FILE MODE; for edit-ready structural addresses use find_text_occurrences.

get_document_outlineC

Return the heading/outline structure of an HWPX document.

get_table_mapC

Map tables with per-cell text and merge structure for label-to-cell reasoning.

inspect_editable_regionsA

Inspect FILE-MODE structural edit targets before any addressed/template write.

Named fields / {} placeholders are NOT required. Use these structural addresses for repeated , repeated ○○○, ordinary table cells, and paragraphs when the template lacks reliable field names. Never treat repeated visible text as a global-replace target without explicit scope; send ONE addressed edits array (gather all values first) to preview_addressed_edits + apply_addressed_edits(session_id, out_path), or complete_addressed_template. The output is a completed copy and does not mutate the already-open same Hangul window — open it afterward.

get_paragraph_mapA

List body paragraphs with stable bN addresses for addressed edits.

find_text_occurrencesA

Locate repeated visible text in FILE MODE so edits can be scoped, not guessed.

Named fields / {} placeholders are NOT required. Use this when the template is driven by repeated , repeated ○○○, ordinary table cells, or paragraphs and you need structural addresses instead of a blind text replace. Repeated text must NOT be globally replaced without explicit scope; use the returned occurrences to choose exact structural targets, then send ONE addressed edits array (gather all values first) to preview_addressed_edits + apply_addressed_edits(session_id, out_path), or complete_addressed_template. Addressed file mode produces a completed copy and does not mutate the already-open same Hangul window.

find_cell_by_labelC

Locate the input cell next to or under a label cell in tables.

verify_fillB

Verify expected label:value pairs actually appear in the (filled) document.

verify_targetsA

Verify expected_text at exact structural targets (tN.rN.cN[.pN] / bN) after edits.

plan_template_completionA

Plan whole-template completion in FILE MODE and return addressable edit targets.

Named fields / {} placeholders are NOT required: repeated , repeated ○○○, ordinary table cells, and paragraphs are addressed structurally. Never replace repeated text without explicit scope. Gather ALL values first, then hand one complete addressed edits array to complete_addressed_template instead of one tool call per cell — start in file mode instead of mixing live field writes. The completed copy does not mutate the already-open same Hangul window — open it afterward.

list_stylesC

List charPr/paraPr style definitions available in the document.

extract_hwp_textC

Headless .hwp text extraction gate; returns available:false until a verified non-COM reader lands.

validate_hwpxC

Validate HWPX package integrity (zip layout, mimetype, XML declarations); ok mirrors valid.

search_and_replaceA

One-shot text replace written to a NEW file; fails closed on 2+ matches unless scope='all'.

batch_replaceA

Apply multiple find->replace pairs to a NEW file in one pass (text substitution only).

preview_search_and_replaceB

Preview a text replace as an edit session (entry/count audit) without writing output.

preview_batch_replaceA

Preview multiple find->replace pairs as one edit session without writing output.

apply_edit_sessionC

Write a previewed edit session to a NEW file with journal/snapshot for restore.

preview_addressed_editsA

Resolve STRUCTURAL addressed edits in file mode without writing output.

edits do NOT require {} named fields. Use structural addresses for repeated "▶", repeated "○○○", ordinary table cells, and paragraphs. Repeated text must never be treated as a global replace; require explicit scope in the address. For whole-template completion, gather or generate all values first and prepare one edits array here instead of one tool call per cell. Start in file mode from the beginning instead of mixing live field writes and then falling back to file mode. Preview here first to confirm each edit resolves to the intended local target and returns the reviewed session that apply_addressed_edits(session_id, out_path) writes later as a completed copy. This addressed file-mode route does not mutate the already-open same Hangul window; open the verified output afterward if live review is needed.

apply_addressed_editsA

Write the previewed addressed edits to a NEW file-mode output copy.

The reviewed addressed plan came from structural addresses, not {} named fields, so repeated "▶", repeated "○○○", ordinary table cells, and paragraphs stay explicitly scoped. This applies the session_id returned by preview_addressed_edits(...) together with the required out_path after you already gathered all values first; do not turn whole-template completion into one tool call per cell or mix live field writes and then fall back to file mode. It does not mutate the already-open same Hangul window for the same document. Keep repeated text explicit with structural scope instead of an unscoped global replacement. After apply succeeds, open the verified output file afterward if live review is needed.

complete_addressed_templateA

Complete a whole template in ONE addressed file-mode call and write a new copy.

Gather or generate all values first, then send one edits array here — not one call per cell. edits do NOT require {} named fields; use structural addresses for repeated "▶", repeated "○○○", ordinary table cells, and paragraphs, and never treat repeated text as a document-wide replace without explicit scope. Start in file mode for whole-template completion instead of mixing live field writes and falling back to file mode later. This addressed file-mode path writes out_path only and does not mutate the already-open same Hangul window; open the verified output afterward.

restore_edit_sessionB

Restore the pre-apply snapshot of an applied edit session (file-mode undo).

hwpx_to_htmlC

Convert HWPX to HTML via python-hwpx (delegate extra required).

hwpx_to_markdownC

Convert HWPX to Markdown via python-hwpx (delegate).

add_paragraphB

Append a text paragraph and write a NEW file (python-hwpx delegate; reserialized, re-validate after).

merge_table_cellsB

Merge a table cell range (e.g. A1:B2) and write a NEW file (delegate).

set_cell_shadingC

Set a table cell fill color and write a NEW file (delegate).

mail_mergeC

Generate one output per record from a template using the OWN byte-preserving fill engine.

emphasize_textA

Apply bold/italic/underline/color/size to matched text and write a NEW file (delegate).

set_headerC

Set the page header text (page_type: BOTH/EVEN/ODD as accepted by python-hwpx) to a NEW file.

set_footerC

Set the page footer text (page_type: BOTH/EVEN/ODD as accepted by python-hwpx) to a NEW file.

split_merged_cellC

Split a previously merged table cell apart and write a NEW file (delegate).

set_page_sizeC

Set paper width/height/orientation (e.g. PORTRAIT/LANDSCAPE) and write a NEW file (delegate).

set_page_marginsB

Set page margins (left/right/top/bottom/header/footer/gutter, HWPUNIT) to a NEW file (delegate).

set_columnsC

Set the body column count and write a NEW file (delegate).

set_page_numberB

Place page numbers (position e.g. BOTTOM_CENTER, as accepted by python-hwpx) to a NEW file.

create_official_documentC

Create a Korean official-document (gongmun) skeleton HWPX from fields (delegate).

create_hwpx_tableC

Create a new HWPX containing one table from headers/rows (delegate).

create_document_from_blocksC

Create an HWPX from ordered content blocks (delegate).

create_document_from_specC

Create an HWPX from a DocumentSpec v1 payload (validated template union; delegate).

create_hwpx_from_markdownC

Create an HWPX from Markdown content (delegate).

add_imageC

Insert an image file into the document and write a NEW file (delegate).

add_tableC

Append a rows x cols table and write a NEW file (python-hwpx delegate).

render_previewC

Render page PNG previews via python-hwpx + Playwright/Chromium (render extra).

hwp_statusA

Live COM availability probe — side-effect-free, never launches Hangul.

connected:false is the NORMAL idle state (no attach is attempted here); instances lists automation-visible Hangul instances in the COM ROT. Attach by exact path first (open_in_hwp(path)) or use the saved-.hwpx current-document flow (resolve -> preview -> apply).

open_in_hwpA

Open a .hwp/.hwpx file in a CONTROLLABLE Hangul window.

Hand-opened windows are not a safe exact-path live-attach anchor on their own. Use this tool to attach by exact path in the automation-visible window first, then apply_to_open_hwp / apply_small_live_label_cells. Leaves the window open; saves and closes nothing. If Hangul is not running, this launches it — cold start can take tens of seconds (see cold_start/elapsed_seconds). timeout_seconds > 0 runs in an isolated worker and returns timeout_outcome_unknown (state may be partially applied).

apply_to_open_hwpA

One-shot VALUE fill of named form fields (누름틀) in the OPEN Hangul window.

Value insertion only — formatting/styling edits are not supported live; use the file-mode delegate tools instead. Legacy pathless mode writes to the active automation document; with path=... it performs broker-targeted exact-path live apply and refuses to guess across multiple automation brokers. No timeout_seconds worker-isolation contract yet.

preview_small_live_label_cellsA

Preview small live label:value cell fills WITHOUT COM or ROT access.

This is not whole-template completion. For a full lesson plan or other structured form, use compact inspect then complete_addressed_template(path, edits, out_path) or the complete_and_load route — the verified NEW file opens as a new tab and the original stays untouched (plain open_in_hwp may reuse the active tab). This pure preview does not probe COM ROT or attach candidates; exact-path attachment is deferred to apply_small_live_label_cells.

apply_small_live_label_cellsA

Fill a small set of label:value CELLS in the OPEN Hangul window live.

Handles empty label:value cells AND inline blanks (colon "은행명:", marker "∘ 프로그램명", checkboxes). Value insertion only — no formatting/styling. Not for whole-template completion: use compact inspect plus complete_addressed_template(path, edits, out_path) or the complete_and_load route — new file created, original untouched, opened as a new tab (plain open_in_hwp may reuse the active tab). Attaches to the automation-visible instance on call and verifies the requested exact path is active; if not, it opens it there when open_if_needed=true. Cold start can take tens of seconds. Preview first with preview_small_live_label_cells.

resolve_current_hwp_documentA

Resolve the current/open Hangul document inventory without writing anything.

This is the side-effect-free entry point for the pathless current-document UX. It never auto-selects around an unsupported, unsaved, or unprovable current document.

preview_current_hwp_documentA

Preview the saved current .hwpx document pathlessly without writing it.

Pass values for small live fills OR edits (structural addressed edits) for the complete_and_load route — never both. complete_and_load writes the whole-template completion to a NEW verified file (optional output_path, .hwpx, never the original) that apply opens as a new tab; the original document stays untouched and the new path is always returned. Saved .hwp returns preview_requires_hwpx; success returns the authoritative preview_token for apply_to_current_hwp_document.

apply_to_current_hwp_documentA

Apply a previously previewed pathless current-document edit by token only.

The token is authoritative: no fresh values or target hints, and the selected broker and exact target are revalidated before mutating the live document. complete_and_load tokens instead write the verified completion to the NEW file from the preview and open it as a new tab — the original stays untouched and the created path is returned even if the open fails. This path does not expose a timeout_seconds worker-isolation contract.

live_delete_table_rowsA

Delete table ROWS in the OPEN Hangul window (live-only; Windows + Hangul).

Offline row delete is unsafe (cellAddr/rowCnt/merge recompute), so this drives the open window — Hangul's TableSubtractRow recomputes merges. rows are tN.rN addresses (global table number, 0-based row), e.g. ["t2.r3"]. Plans purely first (fails closed on nested tables / unknown rows / duplicates), deletes bottom-up, and never opens/saves/closes the document. Cold start can take tens of seconds.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

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/pblsketch/Hangeul-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server